diff --git a/.opencode/skills/data-question/SKILL.md b/.opencode/skills/data-question/SKILL.md new file mode 100644 index 0000000000..23a12b710a --- /dev/null +++ b/.opencode/skills/data-question/SKILL.md @@ -0,0 +1,192 @@ +--- +name: data-question +description: Answer an analytical question from connected databases, explore data to answer a question, or perform cross-database analysis. +--- + +# Data Question + +Use the available read-only tools to answer the user's question. Source databases and project files stay unchanged; when exposed, `sql_materialize` may create session-local tables in the `scratch` warehouse. All examples below use synthetic tables. Adapt names and dialects after inspection. This skill is self-contained. + +## Workflow + +1. **Inspect.** Use `warehouse_list`, `schema_inspect` and small `sql_execute` queries as needed. Inspect actual keys and text before choosing joins, casts or parsing rules: schemas alone hide whitespace, case, prefixes and mixed formats. Preserve meaningful leading zeros; check that normalization does not merge distinct identities. +2. **Plan.** State the population, row grain, denominator, units and material assumptions. Decide which joins and aggregation levels preserve them. Keep this brief; a trivial lookup does not need a checklist or several validation scans. +3. **Compute in-engine.** Filter and aggregate close to the source. Derive large intermediate sets with joins/CTEs or the scratch bridge below, rather than copying rows into `IN (...)` or `VALUES`. Small user-supplied constants are fine. Keep LIMIT, sampling and approximate functions exploratory unless the user requests an estimate. For exact final answers, aggregate the full intended population in SQL. +4. **Verify relevant invariants.** Check key uniqueness, before/after join counts, missing matches and null share when they affect the answer. Use `sql_check` for these invariants and extraction coverage; for cross-warehouse comparisons, first materialize both sides into `scratch` with `sql_materialize`. Reconcile components with totals and preserve weighting. `SUM(group_mean * contributing_count) / SUM(contributing_count)` recovers the overall mean for disjoint, complete groups using unrounded means and counts of the same non-null measure; `AVG(group_mean)` gives each group equal weight. `sql_analyze` is optional. If available, a read-only `data-explorer` via `task` can independently re-derive a difficult result. +5. **Answer.** Explain the basis in one or two sentences (population, grain, caveats), retaining useful tables or explanation before it. Finish with `**Answer:** `. If evidence or available tools are insufficient, finish with `**Answer:** unable to determine — `. Never guess a missing result. + +Select needed columns and useful partition filters to control cost; LIMIT need not reduce scanned bytes. Report measured costs, not invented estimates. After a timeout, revise the query or split work along exhaustive, disjoint partitions; a failed query is not a zero count. + +## Cross-engine bridge + +**Prerequisites:** both source warehouses are connected; `scratch` is available and uses DuckDB; `sql_materialize` is exposed. Source queries use their own engine's dialect. The synthetic source tables here are `orders(order_id, customer_code, amount, status)` on `sales_db` and `customers(customer_code, region)` on `crm_db`, with text customer codes. + +After inspecting examples and checking normalization collisions, invoke `sql_materialize` twice: + +- `source_warehouse: "sales_db"`, `target_table: "orders_stage"`, `sql`: + + ```sql + SELECT order_id, LOWER(TRIM(customer_code)) AS customer_key, amount + FROM orders + WHERE status = 'paid' + ``` + +- `source_warehouse: "crm_db"`, `target_table: "customers_stage"`, `sql`: + + ```sql + SELECT LOWER(TRIM(customer_code)) AS customer_key, region + FROM customers + ``` + +These are complete derived relations, without exploratory LIMITs. Check reported materialization completeness/counts against the intended scope. A partial transfer cannot support an exact cross-engine answer. Query with `sql_execute` on warehouse `scratch`, using the returned table names: + +```sql +SELECT c.region, COUNT(*) AS paid_orders, + SUM(o.amount) AS total_amount, AVG(o.amount) AS mean_order_amount +FROM orders_stage AS o +LEFT JOIN customers_stage AS c ON c.customer_key = o.customer_key +GROUP BY c.region; +``` + +First verify the customer key is unique and quantify unmatched orders with the next pattern. Do not silently remove unmatched orders; decide how they affect the requested population. + +**If the bridge is unavailable:** use existing views, federation or an already connected engine that can access both relations. Independent aggregates can be combined only if sufficient for the requested statistic (for example, sums and contributing counts over disjoint partitions). Otherwise state that the cross-engine join cannot be completed with available tools. Do not invent a local scripting/write capability or hand-transcribe a large key list. + +## Fan-out and nulls + +**Prerequisites:** ordinary SELECT/CTE support; this pattern works in DuckDB and SQLite. `order_id` is the intended unique left-side grain. Run on the warehouse holding both staged relations, or adapt to source tables on one engine. + +```sql +SELECT customer_key, COUNT(*) AS occurrences +FROM customers_stage +GROUP BY customer_key +HAVING COUNT(*) > 1; + +WITH joined AS ( + SELECT o.order_id, o.customer_key AS source_key, + c.customer_key AS matched_key + FROM orders_stage AS o + LEFT JOIN customers_stage AS c ON c.customer_key = o.customer_key +) +SELECT + (SELECT COUNT(*) FROM orders_stage) AS rows_before, + COUNT(*) AS rows_after, + COUNT(DISTINCT order_id) AS distinct_orders_after, + SUM(CASE WHEN matched_key IS NULL THEN 1 ELSE 0 END) AS unmatched_rows, + 1.0 * SUM(CASE WHEN source_key IS NULL THEN 1 ELSE 0 END) + / NULLIF(COUNT(*), 0) AS source_key_null_share +FROM joined; +``` + +Submit the two SELECTs separately if the connector accepts only one statement. For a many-to-one left join, row counts should match; also verify left-side IDs are unique and non-null. Resolve unintended fan-out at the correct business grain, not by adding an arbitrary DISTINCT. The reported null share is at joined grain; interpret it as source share only after ruling out fan-out. Empty-population ratios are undefined, not zero. + +## Many similarly shaped tables + +**Prerequisites:** inspect the engine/version and table schemas. `information_schema`, DuckDB `query_table` and `UNION ALL BY NAME` are not portable to SQLite. Confirm compatible types and that all intended tables are included exactly once; name-based unions fill absent columns with NULL. Reconcile union counts with the sum of source counts and account for overlapping row identities. + +For DuckDB, first generate a single SELECT from the catalog of synthetic `orders_*` partitions: + +```sql +WITH catalog AS ( + SELECT '"' || replace(table_catalog, '"', '""') || '"."' || + replace(table_schema, '"', '""') || '"."' || + replace(table_name, '"', '""') || '"' AS qualified_name + FROM information_schema.tables + WHERE table_catalog = current_database() + AND table_schema = 'main' AND table_type = 'BASE TABLE' + AND starts_with(table_name, 'orders_') +) +SELECT COUNT(*) AS table_count, + 'SELECT COUNT(*) AS order_count, SUM(amount) AS total_amount ' || + 'FROM query_table([' || + string_agg('''' || replace(qualified_name, '''', '''''') || '''', + ', ' ORDER BY qualified_name) || '], true)' AS sql +FROM catalog; +``` + +Check the catalog scope and `table_count`, then execute the complete generated `sql`. `query_table([...], true)` requires a constant list and unions by name; it does not accept a catalog subquery as its argument. It adds no source-table column. If provenance matters, or table names contain embedded double quotes, generate ordinary quoted SELECTs joined with `UNION ALL BY NAME` instead. For two known synthetic partitions: + +```sql +SELECT 'orders_jan' AS source_table, * FROM "main"."orders_jan" +UNION ALL BY NAME +SELECT 'orders_feb' AS source_table, * FROM "main"."orders_feb"; +``` + +For a large family, generate those SELECT branches from the catalog, escaping SQL string literals and identifiers separately; do not enumerate tables from memory. Reserve a provenance column name absent from the input tables. The star here intentionally aligns the inspected partition schemas; project needed columns for the final computation. + +SQLite has no `query_table` or `UNION ALL BY NAME`. Query `sqlite_master` to build a complete statement with quoted identifiers and a consistent explicit column order: + +```sql +SELECT COUNT(*) AS table_count, + 'WITH combined AS (' || + group_concat( + 'SELECT ' || quote(name) || ' AS source_table, order_id, amount ' || + 'FROM main."' || replace(name, '"', '""') || '"', + ' UNION ALL ' + ) || ') SELECT COUNT(*) AS order_count, SUM(amount) AS total_amount ' || + 'FROM combined' AS sql +FROM main.sqlite_master +WHERE type = 'table' AND substr(name, 1, 7) = 'orders_'; +``` + +Inspect the catalog, then execute the returned statement. Every SQLite partition must have `order_id` and `amount` with compatible meaning/types, or each generated branch needs explicit casts/NULL placeholders. `UNION ALL` retains rows; `UNION` would silently deduplicate them. Respect the engine's compound-query limit; if batching is necessary, combine disjoint batches using sufficient statistics (sum/count, not averages of averages). + +In both generators, zero matching tables yields `table_count = 0` and `sql = NULL`: investigate coverage instead of claiming a zero total. Never execute clipped generated SQL. Read its spill if available, or generate smaller catalog batches if `read` also clips a long line. These queries generate SQL from metadata, not lists of copied business keys. + +Dialect references: [DuckDB query_table](https://www.duckdb.org/docs/current/guides/sql_features/query_and_query_table_functions), [DuckDB union-by-name option](https://www.duckdb.org/docs/lts/sql/functions/utility), [SQLite compound SELECT](https://www.sqlite.org/lang_select.html). All essential examples are above; no external file is required. + +## Batch semantic labels, then count + +Treat inferred labels as new data, not ground truth. Define a fixed rubric, allowed labels and uncertainty policy before classifying. For synthetic `messages(message_id, body)`, a rubric might classify a request to reverse a charge as `refund`, a question about shipping progress as `delivery`, and ambiguous text as `uncertain`. Specify tie-breaking for multi-topic messages. + +Inspect text, then define the complete population of stable IDs. If `task` and read-only `data-explorer` are available, assign disjoint ID ranges or catalog-defined batches with the same rubric/version. Each child returns exactly one `{message_id, label, rubric_version}` record per assigned ID, including `uncertain`; request records, not a guessed count. Otherwise label manageable batches directly using the same contract. Review uncertain cases consistently; batching makes counting reproducible, not classification inherently correct. + +Use an available permitted ingestion path to turn these records into a relation `labels(message_id, label, rubric_version)`. When `scratch` and `sql_materialize` are available, small audited annotation batches can be expressed as a SELECT relation and materialized there. For example (DuckDB/SQLite SELECT syntax): + +```sql +WITH annotations(message_id, label, rubric_version) AS ( + VALUES (101, 'refund', 'v1'), + (102, 'delivery', 'v1'), + (103, 'uncertain', 'v1') +) +SELECT * FROM annotations; +``` + +These literals are newly inferred annotations, not a copied intermediate database result. Do not scale this into hand-copying thousands of IDs. For large jobs require a permitted way to ingest complete returned annotation records; `sql_materialize` alone does not imply an arbitrary file writer. If unavailable, report the coverage limitation. With no persistence tool, a small complete annotation CTE can still be checked and counted in a read-only query. + +**Prerequisites for the following SQL:** DuckDB/SQLite; `population(message_id)` contains exactly the intended unique IDs and `labels` contains the annotation records in the same engine. They may be scratch tables or CTEs. Run each SELECT separately as needed: + +```sql +-- Must return no rows: includes duplicates across batches. +SELECT message_id, COUNT(*) AS copies +FROM labels GROUP BY message_id HAVING COUNT(*) <> 1; + +-- Missing IDs, extra IDs and invalid records must all be zero. +SELECT + (SELECT COUNT(*) FROM population AS p + WHERE NOT EXISTS (SELECT 1 FROM labels AS l + WHERE l.message_id = p.message_id)) AS missing_ids, + (SELECT COUNT(*) FROM labels AS l + WHERE NOT EXISTS (SELECT 1 FROM population AS p + WHERE p.message_id = l.message_id)) AS extra_ids, + (SELECT COUNT(*) FROM labels + WHERE message_id IS NULL OR label IS NULL + OR label NOT IN ('refund', 'delivery', 'uncertain') + OR rubric_version IS NULL OR rubric_version <> 'v1') AS invalid_records; + +-- Only count after the invariants pass; retain uncertain in the denominator. +SELECT label, COUNT(*) AS messages +FROM labels GROUP BY label ORDER BY label; +``` + +Verify the label counts sum to the full population count. Use these computed counts in the answer; do not re-count labels by eye or combine unverified child summaries. + +## Reading spilled results + +When `sql_execute` reports `Preview: N of M returned rows ... saved to `, N is the displayed preview and M is the connector-returned count, not necessarily the number of matches. A row-limit warning still applies to the spill. If a JSONL path is supplied, inspect it with `read`, for example: + +```json +{"filePath":"","offset":1,"limit":50} +``` + +Inspect any metadata/schema record before interpreting row records; preserve encoded types and distinguish NULL from the string "NULL". Continue using line offsets from the read output, accounting for metadata lines. Read may itself clip long lines or total output: recover only the needed fields with a SQL projection/filter instead of guessing missing cell contents. For exact totals, compute `COUNT(*)`, SUM or other requested aggregates in the engine; a spill cannot recover rows discarded by a connector limit. If no spill is available, narrow or aggregate the query and respect its returned-row limit. diff --git a/bun.lock b/bun.lock index 0495f7f8cd..a48808397e 100644 --- a/bun.lock +++ b/bun.lock @@ -371,6 +371,7 @@ "@types/turndown": "5.0.5", "@types/yargs": "17.0.33", "@typescript/native-preview": "catalog:", + "ajv": "8.20.0", "drizzle-orm": "catalog:", "playwright-core": "1.59.1", "prettier": "3.6.2", @@ -510,6 +511,8 @@ "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", + "@smithy/is-array-buffer": "4.2.2", + "@smithy/util-buffer-from": "4.2.2", "@types/bun": "catalog:", "@types/node": "catalog:", }, @@ -1374,7 +1377,7 @@ "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-SK3VMeH0fibgdTg2QeB+O4p7Yy/2E5HBOHJeC58FshkDdeuX8lOgO7PfjYfLyPLP1ch55j91cQqKBzDS0mRjSQ=="], - "@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], + "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], "@smithy/node-http-handler": ["@smithy/node-http-handler@4.7.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-3dA9TQ+ybRSZ/m0wnbZhiBy4Dezjgq1Ib/ZZrYTpJDBgpoLLU/SDzZc/g0x0MNAdOJe1wPcM+x2PBRmoOur+Sw=="], @@ -1384,7 +1387,7 @@ "@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], - "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-CthqHx5VTlNIsS5rJni+pIfkGgYPnVFsy9qYiv8e+hMQDPemZod5wTa+2DkrI+vubX51sD6qqcgH3UHqdTf2bw=="], + "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-+ip3QrXGjDOzV/ciNWPTm6bhJuXjmzugMR19ouXgA26QqhEo0zuXM7pvYE9S4VfX13YmPgSYDPkF4+2bPqIwAg=="], @@ -3462,12 +3465,6 @@ "@altimateai/dbt-integration/@altimateai/altimate-core/@altimateai/altimate-core-win32-x64-msvc": ["@altimateai/altimate-core-win32-x64-msvc@0.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-6Sbneg0DLHMmo1lDVd9oDgGtqPJpDUXZvXwAbGb7eoh+vUmXMxABA43//hBbwkMVsWKClKjv1KXSKp44shrUiw=="], - "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - - "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - "@aws-sdk/checksums/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.30", "", { "dependencies": { "@smithy/types": "^4.14.3", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-StElZPEoBquWwNqw1AcfpzEyZqJvFxouG+mpDNYlcH6ZOrqd2CuIryv+8LV8gNHZUOyKyJF3Dq9vxaXEmDR9TQ=="], "@aws-sdk/checksums/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.5.1", "", { "dependencies": { "@smithy/core": "^3.25.1", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" } }, "sha512-X9rVls3En0z3NtrmguTmpRM0/NqtWUxBjal6fcAkwtsub+gOdLZ6kD+V7xhUgFMGdG14bHbZ7M5QjaRI1+DatQ=="], diff --git a/docs/docs/data-engineering/tools/sql-tools.md b/docs/docs/data-engineering/tools/sql-tools.md index a36e483427..8460cefb8f 100644 --- a/docs/docs/data-engineering/tools/sql-tools.md +++ b/docs/docs/data-engineering/tools/sql-tools.md @@ -23,7 +23,8 @@ Run SQL queries against your connected warehouse. ``` **Parameters:** -- `query` (required): SQL to execute +- `query` (required unless `query_from` is set): SQL to execute +- `query_from` (optional): `{warehouse, sql}` - a single read-only SELECT, run on `warehouse`, that returns exactly one row and one non-empty SQL string column (max 1 MiB). That SQL is validated as a read-only SELECT and run on the target `warehouse` without passing through the conversation. `query_from.warehouse` is the source; the top-level `warehouse` is then required and names the target; provide exactly one of `query` or `query_from` - `warehouse` (optional): Connection name from config. Uses default if omitted - `limit` (optional, default: 100): Max rows returned diff --git a/package.json b/package.json index 4ca3463eed..9f8b142a57 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,9 @@ "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", "@types/bun": "catalog:", - "@types/node": "catalog:" + "@types/node": "catalog:", + "@smithy/is-array-buffer": "4.2.2", + "@smithy/util-buffer-from": "4.2.2" }, "patchedDependencies": { "@ff-labs/fff-bun@0.9.4": "patches/@ff-labs%2Ffff-bun@0.9.4.patch", diff --git a/packages/core/src/ripgrep.ts b/packages/core/src/ripgrep.ts index 0ecfc61e5e..5e111e86f4 100644 --- a/packages/core/src/ripgrep.ts +++ b/packages/core/src/ripgrep.ts @@ -36,8 +36,7 @@ const MAX_SUBMATCHES = 100 // The 16 MiB ceiling bounds the cost of parsing ONE line. It does not bound what the search // retains: `run` collects rows with `Stream.runCollect` and holds them until the stream ends, and // each row carried the FULL `lines.text` until the mapping step trimmed it at the very end. Peak -// retained memory is therefore rows x record size — and callers pass no meaningful row cap -// (`tool/grep.ts` passes `Number.MAX_SAFE_INTEGER`), so raising the per-record ceiling raised the +// retained memory is therefore rows x record size, so raising the per-record ceiling raised the // retained bound with it. Capping the line here instead keeps the parse ceiling while making the // retained bound tighter than it was before this change. Nothing downstream ever renders more. const LINE_TEXT_CAP = 2_000 @@ -253,6 +252,10 @@ export interface GrepInput { // altimate_change end readonly limit: number readonly signal?: AbortSignal + // altimate_change start — filter streamed paths before retaining bounded grep results + readonly filterPath?: (relativePath: string) => boolean + readonly scanLimit?: number + // altimate_change end } export interface Interface { @@ -282,6 +285,10 @@ export const layer = Layer.effect( readonly parse: (line: string) => Effect.Effect readonly pattern?: string readonly onItem?: (item: A) => Effect.Effect + // altimate_change start — bound scanned matches independently of accepted results + readonly filter?: (item: A) => boolean + readonly scanLimit?: number + // altimate_change end }) => { const program = Effect.scoped( Effect.gen(function* () { @@ -293,11 +300,21 @@ export const layer = Layer.effect( Effect.forkScoped, ) let observed = 0 + // altimate_change start — track the scan ceiling even when every match is filtered out + let scanned = 0 + // altimate_change end const rows = yield* Stream.decodeText(handle.stdout).pipe( Stream.splitLines, Stream.filter((line) => line.length > 0), Stream.mapEffect(input.parse), Stream.filter((row): row is A => row !== undefined), + // altimate_change start — filter before collection with a separate hard scan ceiling + Stream.take(input.scanLimit ?? Infinity), + Stream.filter((row) => { + scanned++ + return input.filter?.(row) ?? true + }), + // altimate_change end Stream.tap((row) => { if (!input.onItem || observed++ >= input.limit) return Effect.void return input.onItem(row) @@ -306,7 +323,9 @@ export const layer = Layer.effect( Stream.runCollect, Effect.map((chunk) => [...chunk]), ) - const truncated = rows.length > input.limit + // altimate_change start — do not wait for an unread child pipe after reaching the scan ceiling + const truncated = rows.length > input.limit || scanned >= (input.scanLimit ?? Infinity) + // altimate_change end if (truncated) return { items: rows.slice(0, input.limit), truncated, partial: false } const code = yield* handle.exitCode @@ -415,6 +434,7 @@ export const layer = Layer.effect( const skipped: { count: number; samples: string[] } = { count: 0, samples: [] } return run({ ...input, + filter: input.filterPath ? (match) => input.filterPath!(match.path.text) : undefined, args: [ "--no-config", "--json", diff --git a/packages/core/src/v1/session.ts b/packages/core/src/v1/session.ts index 34bb729683..21f26d173f 100644 --- a/packages/core/src/v1/session.ts +++ b/packages/core/src/v1/session.ts @@ -484,6 +484,9 @@ export const Assistant = Schema.Struct({ structured: Schema.optional(Schema.Any), variant: Schema.optional(Schema.String), finish: Schema.optional(Schema.String), + // altimate_change start — preserve committed-answer echo diagnostics across Effect message events + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + // altimate_change end }).annotate({ identifier: "AssistantMessage" }) export type Assistant = Omit>, "error"> & { error?: AssistantError diff --git a/packages/drivers/src/duckdb.ts b/packages/drivers/src/duckdb.ts index 8856133ccd..31997784c3 100644 --- a/packages/drivers/src/duckdb.ts +++ b/packages/drivers/src/duckdb.ts @@ -1,10 +1,18 @@ /** * DuckDB driver using the `duckdb` package. + * + * The legacy binding's `interrupt()` is a no-op, so the handle lives in a + * supervised helper process (see `local-engine.ts`) that the driver can kill to + * enforce the query execution deadline. */ -import { assertStoreExists, requireStorePath } from "./file-store" +import { assertStoreExists, isLocalFilePath, requireStorePath } from "./file-store" +import * as os from "os" +import * as path from "path" import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn, SchemaMetadata } from "./types" -import { loadOptionalDriver } from "./resolve" +import { DRIVER_PACKAGES, DriverNotInstalledError, driverSearchRoots, resolveOptionalPackage } from "./resolve" +import { LocalEngine } from "./local-engine" +import { resolveQueryTimeout } from "./query-timeout" // altimate_change start — configurable, generous open budget /** @@ -51,19 +59,70 @@ function resolveOpenTimeoutMs(config: ConnectionConfig): { ms: number; source: T } // altimate_change end -export async function connect(config: ConnectionConfig): Promise { - let duckdb: any - duckdb = await loadOptionalDriver("duckdb", "duckdb") - duckdb = duckdb.default || duckdb +/** The slice of LocalEngine the driver uses; tests substitute a scripted fake. */ +export type DuckDBEngine = Pick & Partial> + +interface SharedEngine { + key?: string + engine: DuckDBEngine + ready: Promise + references: number + closing?: Promise +} + +// Publish pending opens as well as live handles: separate helpers cannot hold +// the same file's write lock, even when they belong to the same parent process. +const engines = new Map() +let nextConnectionId = 0 + +function releaseEngine(shared: SharedEngine): Promise { + if (--shared.references > 0) return Promise.resolve() + shared.closing = Promise.resolve() + .then(() => shared.engine.close()) + .finally(() => { + // Keep the entry until the helper exits and releases its OS file lock. + if (shared.key !== undefined && engines.get(shared.key) === shared) engines.delete(shared.key) + }) + return shared.closing +} + +export async function connect( + config: ConnectionConfig, + // Test seam: the helper process cannot be intercepted with module mocks. + internals?: { createEngine?: (opts: ConstructorParameters[0]) => DuckDBEngine }, +): Promise { + // Resolve only — never load the binding in this process. The `duckdb` package + // locates its native addon through `@mapbox/node-pre-gyp`, which parses the HOST + // application's `process.argv`: `nopt` abbreviation-matches an unrelated `--dir` + // flag to its own `--directory` option and `path.join()`s that value onto the + // absolute manifest path, so `altimate-code run --dir ` failed every DuckDB + // load with ENOENT under `/usr/lib/...`. The helper process loads the addon + // with a clean argv, so the parent only needs the module path and the standard + // "driver not installed" guidance when it is absent. + const duckdbModulePath = resolveOptionalPackage("duckdb") + if (!duckdbModulePath) { + throw new DriverNotInstalledError("duckdb", DRIVER_PACKAGES["duckdb"], driverSearchRoots()) + } // altimate_change start — a missing path must fail loudly, not become :memory: - const dbPath = requireStorePath(config, "DuckDB") + const cwd = process.cwd() + const configuredPath = requireStorePath(config, "DuckDB") + const dbPath = isLocalFilePath(configuredPath) ? path.resolve(cwd, configuredPath) : configuredPath // altimate_change end // altimate_change start — configurable open budget const { ms: openTimeoutMs, source: openTimeoutSource } = resolveOpenTimeoutMs(config) // altimate_change end - let db: any - let connection: any + const engineOptions = { engine: "duckdb", label: "DuckDB", storePath: dbPath, cwd } as const + // altimate_change start — preserve caller DuckDB state while keeping scratch secrets isolated + const duckdbHome = path.join(process.env.HOME || process.env.USERPROFILE || os.homedir(), ".duckdb") + const extensionDirectory = path.join(duckdbHome, "extensions") + const secretDirectory = + typeof config.sandbox_directory === "string" ? undefined : path.join(duckdbHome, "stored_secrets") + // altimate_change end + let shared: SharedEngine | undefined + let opening: Promise | undefined + let closing: Promise | undefined + const connectionId = ++nextConnectionId // altimate_change start — improve DuckDB error messages // Real DuckDB lock failures read "Could not set lock on file ... Conflicting @@ -90,36 +149,41 @@ export async function connect(config: ConnectionConfig): Promise { if (isLockError(err)) { // Keep DuckDB's own text: it names the PID and executable holding the // conflicting lock, which is the only way to find the other process. - return new Error( + return Object.assign(new Error( `Database "${dbPath}" is locked by another process. ` + `DuckDB takes an exclusive file lock, so a store already open ` + `read-write elsewhere cannot be opened again — not even read-only. ` + `Close the other connection and try again.\n${err.message || String(err)}`, - ) + ), err) } return err } // altimate_change end - function query(sql: string, signal?: AbortSignal): Promise { - return new Promise((resolve, reject) => { - signal?.throwIfAborted() - // The legacy DuckDB SDK's interrupt() is a no-op. Stop waiting and avoid - // subsequent work on abort; the native query still finishes in the SDK. - const onAbort = () => reject(signal!.reason) - signal?.addEventListener("abort", onAbort, { once: true }) - try { - connection.all(sql, (err: Error | null, rows: any[]) => { - signal?.removeEventListener("abort", onAbort) - if (err) reject(wrapDuckDBError(err)) - else resolve(rows ?? []) - }) - } catch (err) { - signal?.removeEventListener("abort", onAbort) - reject(err) - } - }) + // altimate_change start — the budget travels to the helper's row stream + async function run( + sql: string, + params: any[] | undefined, + timeoutMs: number | undefined, + maxResultBytes?: number, + onDispatch?: () => void, + signal?: AbortSignal, + ): Promise { + if (!shared) throw new Error("DuckDB connection not open") + try { + return await shared.engine.call("all", { sql, params, connectionId, maxResultBytes }, timeoutMs, onDispatch, signal) + } catch (err) { + throw err instanceof Error ? wrapDuckDBError(err) : err + } + } + // altimate_change end + + const query = async (sql: string, signal?: AbortSignal): Promise => { + signal?.throwIfAborted() + return run(sql, undefined, resolveQueryTimeout(config).ms, undefined, undefined, signal) } + const queryWithParams = (sql: string, params: any[]): Promise => + run(sql, params, resolveQueryTimeout(config).ms) async function schemaNames(signal?: AbortSignal): Promise { const rows = await query( @@ -129,104 +193,75 @@ export async function connect(config: ConnectionConfig): Promise { return rows.map((r) => r.schema_name as string) } - function queryWithParams(sql: string, params: any[]): Promise { - return new Promise((resolve, reject) => { - connection.all(sql, ...params, (err: Error | null, rows: any[]) => { - if (err) reject(wrapDuckDBError(err)) - else resolve(rows ?? []) - }) - }) - } - - return { - async connect() { + function openConnection(): Promise { + if (closing) return closing.then(openConnection) + if (opening) return opening + if (shared) return Promise.resolve() + opening = (async () => { // altimate_change start — never conjure an empty store on open assertStoreExists(config, dbPath, "DuckDB") // altimate_change end - // altimate_change start — retry with read-only on lock errors - const tryConnect = (accessMode?: string): Promise => - new Promise((resolve, reject) => { - let resolved = false - let timeout: ReturnType | undefined - let instance: any - // Sentinel for an open callback that fired synchronously (before - // `instance` was assigned), replayed once `instance` exists. - // - // This MUST be a value the callback can never supply. It used to be - // `undefined`, which is exactly what a success callback invoked with - // no arguments passes — so such a callback was recorded and then - // never replayed, the promise never settled, and the open failed on - // the deadline below with a timeout message that named nothing. - const NOT_FIRED = Symbol("duckdb-open-not-fired") - let pendingOpen: Error | null | typeof NOT_FIRED = NOT_FIRED - const opts = accessMode ? { access_mode: accessMode } : undefined - const closeQuietly = () => { - try { - if (instance && typeof instance.close === "function") instance.close() - } catch { - // best-effort cleanup of a half-open handle - } - } - const onOpen = (err?: Error | null) => { - // Normalise a zero-argument success callback to `null` so it is - // never confused with "has not fired yet". - const outcome = err ?? null - if (!instance) { - pendingOpen = outcome - return - } - if (resolved) { - closeQuietly() - return - } - resolved = true - if (timeout) clearTimeout(timeout) - if (outcome) { - // Open failed — release the half-open handle so it doesn't leak. - // Reject with DuckDB's own error: callers classify it with - // isLockError(), and its text names the conflicting process. - closeQuietly() - reject(outcome) - } else { - resolve(instance) - } + // Retry with read-only on lock errors. + const tryConnect = async (accessMode?: string): Promise => { + // Anonymous in-memory databases stay private. Never lend an unrestricted + // helper to a sandboxed connector, or change relative SQL path semantics. + const key = + dbPath === ":memory:" + ? undefined + : JSON.stringify([dbPath, accessMode ?? "READ_WRITE", config.sandbox_directory, cwd, extensionDirectory]) + let entry = key === undefined ? undefined : engines.get(key) + while (entry?.closing) { + await entry.closing + entry = key === undefined ? undefined : engines.get(key) + } + if (!entry) { + const engine = internals?.createEngine?.(engineOptions) ?? new LocalEngine(engineOptions) + entry = { + key, + engine, + references: 0, + ready: Promise.resolve().then(() => + engine.open( + // altimate_change start — replay scratch restrictions on every helper open + { + path: dbPath, + accessMode, + modulePath: duckdbModulePath, + extensionDirectory, + secretDirectory, + sandboxDirectory: config.sandbox_directory, + }, + // altimate_change end + openTimeoutMs, + () => + new Error( + `DuckDB store "${dbPath}" did not finish opening within ${openTimeoutMs}ms. ` + + `This is a client-side deadline in the DuckDB driver, not a fault in the store ` + + `— the open may simply be queued behind other work in this process. ` + + (openTimeoutSource === "connection" + ? // Named so callers can tell a self-inflicted deadline from one + // they did not choose. Registry.categorizeConnectionError keys + // off this phrase to report it as configuration rather than as + // a broken client. + `This deadline was set on this connection as open_timeout_ms=${openTimeoutMs}; ` + + `raise or remove it.` + : `Raise the budget with this connection's open_timeout_ms (which takes ` + + `priority) or ALTIMATE_DUCKDB_OPEN_TIMEOUT_MS if the machine is loaded.`), + ), + ), + ), } - instance = opts - ? new duckdb.Database(dbPath, opts, onOpen) - : new duckdb.Database(dbPath, onOpen) - // Liveness guard against an open callback that never fires. Arm the - // timer BEFORE replaying a synchronous callback so a sync - // resolve/reject can actually clear it (otherwise it lingers and - // delays process exit). - timeout = setTimeout(() => { - if (!resolved) { - resolved = true - // Nothing can reach this handle once the promise rejects. If the - // callback arrives later it closes the handle itself (see the - // `resolved` branch in onOpen); if it never arrives, that branch - // never runs, so close here too. Both paths are idempotent - // because closeQuietly swallows a double close. - closeQuietly() - reject( - new Error( - `DuckDB store "${dbPath}" did not finish opening within ${openTimeoutMs}ms. ` + - `This is a client-side deadline in the DuckDB driver, not a fault in the store ` + - `— the open may simply be queued behind other work in this process. ` + - (openTimeoutSource === "connection" - ? // Named so callers can tell a self-inflicted deadline from one - // they did not choose. Registry.categorizeConnectionError keys - // off this phrase to report it as configuration rather than as - // a broken client. - `This deadline was set on this connection as open_timeout_ms=${openTimeoutMs}; ` + - `raise or remove it.` - : `Raise the budget with this connection's open_timeout_ms (which takes ` + - `priority) or ALTIMATE_DUCKDB_OPEN_TIMEOUT_MS if the machine is loaded.`), - ), - ) - } - }, openTimeoutMs) - if (pendingOpen !== NOT_FIRED) onOpen(pendingOpen) - }) + if (key !== undefined) engines.set(key, entry) + } + entry.references++ + try { + await entry.ready + return entry + } catch (err) { + await releaseEngine(entry) + throw err + } + } // altimate_change start — honour an explicit read-only connection. // DuckDB takes an EXCLUSIVE file lock when opened read-write, so N @@ -238,13 +273,13 @@ export async function connect(config: ConnectionConfig): Promise { // open attempt per connection. const wantReadOnly = config.readonly === true && dbPath !== ":memory:" try { - db = await tryConnect(wantReadOnly ? "READ_ONLY" : undefined) + shared = await tryConnect(wantReadOnly ? "READ_ONLY" : undefined) } catch (err: any) { // altimate_change end if (isLockError(err) && !wantReadOnly && dbPath !== ":memory:") { // Retry in read-only mode — allows concurrent reads try { - db = await tryConnect("READ_ONLY") + shared = await tryConnect("READ_ONLY") } catch (retryErr) { throw wrapDuckDBError( retryErr instanceof Error ? retryErr : new Error(String(retryErr)), @@ -265,9 +300,18 @@ export async function connect(config: ConnectionConfig): Promise { throw err } } - // altimate_change end - connection = db.connect() - }, + shared.engine.registerSession?.(connectionId) + })().finally(() => { + opening = undefined + }) + return opening + } + + return { + // altimate_change start — helper checks rows while consuming DuckDB chunks + supportsResultByteLimit: true, + // altimate_change end + connect: openConnection, async execute(sql: string, limit?: number, binds?: any[], options?: ExecuteOptions): Promise { const effectiveLimit = options?.noLimit ? 0 : (limit ?? 1000) @@ -282,9 +326,16 @@ export async function connect(config: ConnectionConfig): Promise { finalSql = `${sql.replace(/;\s*$/, "")} LIMIT ${effectiveLimit + 1}` } - const rows = binds?.length - ? await queryWithParams(finalSql, binds) - : await query(finalSql) + // altimate_change start — enforce the cap before returning a complete result array + const rows = await run( + finalSql, + binds?.length ? binds : undefined, + resolveQueryTimeout(config, options).ms, + options?.maxResultBytes, + options?.onDispatch, + options?.signal, + ) + // altimate_change end const columns = rows.length > 0 ? Object.keys(rows[0]) : [] const truncated = effectiveLimit > 0 && rows.length > effectiveLimit @@ -369,18 +420,26 @@ export async function connect(config: ConnectionConfig): Promise { return { schemas, tables } }, - async close() { - if (db) { - await new Promise((resolve) => { - db.close((err: Error | null) => { - resolve() - }) - // Bun: native callback may not fire; fall back after timeout - setTimeout(resolve, 500) - }) - db = null - connection = null - } + close() { + if (closing) return closing + closing = (async () => { + // A close racing its own open still releases exactly one reference. + await opening?.catch(() => {}) + const current = shared + shared = undefined + if (current) { + if (current.references > 1) { + // Queue session cleanup before subsequent queries without making a + // peer's long-running query block close. Final shutdown or a restart + // may discard the session before this request reaches the helper. + void current.engine.call("disconnect", { connectionId }).catch(() => {}) + } + await releaseEngine(current) + } + })().finally(() => { + closing = undefined + }) + return closing }, } } diff --git a/packages/drivers/src/index.ts b/packages/drivers/src/index.ts index 5bc69ae955..c8dd6a60c4 100644 --- a/packages/drivers/src/index.ts +++ b/packages/drivers/src/index.ts @@ -26,6 +26,6 @@ export { connect as connectSqlserver } from "./sqlserver" export { connect as connectOracle } from "./oracle" export { connect as connectDuckdb } from "./duckdb" export { connect as connectSqlite } from "./sqlite" -export { connect as connectMongodb } from "./mongodb" +export { connect as connectMongodb, hasMongoWriteStage, normalizeMqlCommand } from "./mongodb" export { connect as connectClickhouse } from "./clickhouse" export { connect as connectTrino } from "./trino" diff --git a/packages/drivers/src/local-engine-child-source.ts b/packages/drivers/src/local-engine-child-source.ts new file mode 100644 index 0000000000..8fcdf69559 --- /dev/null +++ b/packages/drivers/src/local-engine-child-source.ts @@ -0,0 +1,267 @@ +/** + * Source of the helper process that owns one local database handle + * (`bun:sqlite` or the legacy `duckdb` binding). + * + * It is a string, not a separate entrypoint, on purpose: the compiled + * `altimate` binary can only run files that exist on disk, and a string needs + * no change to the build's entrypoint list. `local-engine.ts` writes it to a + * content-addressed file and runs it with Bun. + * + * Why a process and not a Worker: measured on Bun 1.3.14, `Worker.terminate()` + * does not stop a blocking `bun:sqlite` call (the thread kept using 100% CPU + * after terminate), and loading the `duckdb` addon in a Worker aborts Bun with + * a NAPI panic. Killing a process is the only cancellation that is certain to + * stop the work and release file locks. See + * `test/fixtures/cancel-probe.ts`. + * + * Protocol: one JSON object per line on stdin (`{id, op, ...}`), one per line + * on stdout (`{id, ok, result | error}`). Requests run strictly in order. + * + * Constraints on this text: plain JavaScript, no backticks, no `${`. + */ +export const LOCAL_ENGINE_CHILD_SOURCE = String.raw` +"use strict"; +// ---- value codec (mirrors local-engine-codec.ts) ---- +function pack(v) { + if (typeof v === "bigint") return { $t: "bigint", v: v.toString() }; + if (typeof v === "number") return Number.isFinite(v) ? v : { $t: "num", v: String(v) }; + if (v === null || typeof v !== "object") return v; + if (v instanceof Date) return { $t: "date", v: Number.isNaN(v.getTime()) ? null : v.toISOString() }; + if (v instanceof Uint8Array) return { $t: "bytes", v: Buffer.from(v.buffer, v.byteOffset, v.byteLength).toString("base64") }; + if (Array.isArray(v)) return v.map(pack); + const out = Object.fromEntries(Object.keys(v).map((k) => [k, pack(v[k])])); + return Object.prototype.hasOwnProperty.call(out, "$t") ? { $t: "obj", v: out } : out; +} +function unpack(v) { + if (v === null || typeof v !== "object") return v; + if (Array.isArray(v)) return v.map(unpack); + if (typeof v.$t === "string") { + if (v.$t === "bigint") return BigInt(v.v); + if (v.$t === "num") return Number(v.v); + if (v.$t === "date") return v.v === null ? new Date(NaN) : new Date(v.v); + if (v.$t === "bytes") return Buffer.from(v.v, "base64"); + if (v.$t === "obj") return Object.fromEntries(Object.keys(v.v).map((k) => [k, unpack(v.v[k])])); + } + return Object.fromEntries(Object.keys(v).map((k) => [k, unpack(v[k])])); +} + +// ---- orphan watchdog ---- +// A blocking native call stops this thread from noticing that the parent died, +// so a separate thread polls the parent pid and ends the process. +const parentPid = Number(process.argv[2]); +if (parentPid > 0) { + const watchdog = [ + "const ppid = " + parentPid + ";", + "setInterval(() => {", + " let alive = true;", + " try { process.kill(ppid, 0); } catch (e) { alive = e && e.code === 'EPERM'; }", + " if (!alive) process.kill(process.pid, 'SIGKILL');", + "}, 1000);", + ].join("\n"); + try { + new Worker(URL.createObjectURL(new Blob([watchdog], { type: "text/javascript" }))); + } catch (e) { /* best effort; stdin EOF below still ends an idle child */ } +} + +// ---- engine state ---- +let engine = null; +let sqliteDb = null; +let duckDb = null; +let duckCon = null; +const duckConnections = new Map(); + +function closeDuckConnections() { + for (const connection of [...duckConnections.values(), duckCon]) { + try { if (connection && typeof connection.close === "function") connection.close(() => {}); } catch (e) {} + } + duckConnections.clear(); + duckCon = null; +} + +function closeQuietly() { + try { if (sqliteDb) sqliteDb.close(); } catch (e) {} + closeDuckConnections(); + try { if (duckDb && typeof duckDb.close === "function") duckDb.close(); } catch (e) {} + sqliteDb = null; duckDb = null; duckCon = null; +} + +async function open(p) { + closeQuietly(); + engine = p.engine; + if (engine === "sqlite") { + const { Database } = await import("bun:sqlite"); + sqliteDb = new Database(p.path, { readonly: p.readonly, readwrite: p.readwrite, create: p.create }); + if (p.wal) sqliteDb.exec("PRAGMA journal_mode = WAL"); + return null; + } + const mod = await import(p.modulePath); + const duckdb = mod.default || mod; + const opts = { + // Keep spill files out of the caller's cwd and separate across helpers. + temp_directory: process.env.TMPDIR + "/duckdb-" + process.pid, + ...(p.accessMode ? { access_mode: p.accessMode } : {}), + ...(p.extensionDirectory ? { extension_directory: p.extensionDirectory } : {}), + }; + let instance; + await new Promise((resolve, reject) => { + const cb = (err) => (err ? reject(err) : resolve()); + instance = opts ? new duckdb.Database(p.path, opts, cb) : new duckdb.Database(p.path, cb); + }).catch((err) => { try { if (instance && instance.close) instance.close(); } catch (e) {} throw err; }); + duckDb = instance; + duckCon = duckDb.connect(); + // altimate_change start — load and save ordinary connector secrets outside the disposable HOME + // DuckDB initializes its default secret path after constructor options, so SET + // it on the opened instance before any query can initialize secret storage. + if (p.secretDirectory && typeof p.sandboxDirectory !== "string") { + await all({ sql: "SET secret_directory = '" + p.secretDirectory.replace(/'/g, "''") + "'" }); + } + // altimate_change end + // altimate_change start — restrictions are replayed when a timed-out helper reopens + if (typeof p.sandboxDirectory === "string") { + // These five settings are GLOBAL in DuckDB (verified with the 1.4.4 binding). + // They also restrict future duckDb.connect() sessions. Keep the global lock + // last and do not replay these SETs per connector: the lock rejects them. + // HOME is isolated by the helper environment, not a connection-local SET. + const directory = "'" + p.sandboxDirectory.replace(/'/g, "''") + "'"; + for (const sql of [ + "SET allowed_directories = [" + directory + "]", + "SET enable_external_access = false", + "SET autoinstall_known_extensions = false", + "SET autoload_known_extensions = false", + "SET lock_configuration = true", + ]) await all({ sql }); + } + // altimate_change end + return null; +} + +// altimate_change start — cap serialized rows before either helper or parent buffers the full result +async function boundedRows(source, maxBytes) { + if (!Number.isSafeInteger(maxBytes) || maxBytes < 1) throw new Error("maxResultBytes must be a positive safe integer"); + const rows = []; + let bytes = 0; + for await (const row of source) { + const values = Object.values(row); + const primitive = values.every((v) => v === null || (typeof v !== "object" && typeof v !== "bigint")); + const text = primitive ? JSON.stringify(values) : JSON.stringify(values, (_key, v) => + typeof v === "bigint" ? v.toString() : v instanceof Uint8Array ? Buffer.from(v).toString("hex") : v); + bytes += Buffer.byteLength(text, "utf8"); + if (bytes > maxBytes) { + const error = new Error("Source result exceeds the " + maxBytes + " byte result limit."); + error.code = "RESULT_BYTE_LIMIT"; + throw error; + } + rows.push(row); + } + return rows; +} + +async function* duckRows(connection, sql, params) { + const statement = connection.prepare(sql); + try { + const result = await statement.stream(...params); + for await (const row of result) yield row; + } finally { + await new Promise((resolve, reject) => statement.finalize((err) => err ? reject(err) : resolve())); + } +} +// altimate_change end + +function all(p) { + const params = (p.params || []).map(unpack); + // altimate_change start — SQLite's iterator steps one row at a time + if (engine === "sqlite") { + const statement = sqliteDb.prepare(p.sql); + return p.maxResultBytes === undefined + ? Promise.resolve(statement.all(...params)) + : boundedRows(statement.iterate(...params), p.maxResultBytes).finally(() => statement.finalize()); + } + // altimate_change end + let connection = duckCon; + if (p.connectionId !== undefined) { + connection = duckConnections.get(p.connectionId); + if (!connection) { + connection = duckDb.connect(); + duckConnections.set(p.connectionId, connection); + } + } + // altimate_change start — DuckDB exposes a chunked async iterator; stop it on overflow + if (p.maxResultBytes !== undefined) return boundedRows(duckRows(connection, p.sql, params), p.maxResultBytes); + // altimate_change end + return new Promise((resolve, reject) => { + connection.all(p.sql, ...params, (err, rows) => (err ? reject(err) : resolve(rows || []))); + }); +} + +async function disconnect(p) { + const connection = duckConnections.get(p.connectionId); + if (!connection) return null; + duckConnections.delete(p.connectionId); + await new Promise((resolve, reject) => { + connection.close((err) => (err ? reject(err) : resolve())); + }); + return null; +} + +function run(p) { + const info = sqliteDb.prepare(p.sql).run(...(p.params || []).map(unpack)); + return { changes: info.changes, lastInsertRowid: info.lastInsertRowid }; +} + +async function close() { + if (duckDb) { + const d = duckDb; + // Native connection closes queue before the database close below, so open + // transactions roll back and all connection handles are released first. + closeDuckConnections(); + // The supervisor bounds a polite close; let DuckDB finish its checkpoint. + await new Promise((resolve) => { try { d.close(() => resolve()); } catch (e) { resolve(); } }); + duckDb = null; duckCon = null; + } + closeQuietly(); + return null; +} + +async function handle(req) { + if (req.op === "open") return open(req.payload); + if (req.op === "all") return all(req.payload); + if (req.op === "run") return run(req.payload); + if (req.op === "disconnect") return disconnect(req.payload); + if (req.op === "close") return close(); + throw new Error("unknown op " + req.op); +} + +function reply(msg) { process.stdout.write(JSON.stringify(msg) + "\n"); } + +(async () => { + const decoder = new TextDecoder(); + // altimate_change start — scan each chunk once, joining a line only at its terminator + let parts = []; + for await (const chunk of Bun.stdin.stream()) { + const text = decoder.decode(chunk, { stream: true }); + let start = 0; + let nl; + while ((nl = text.indexOf("\n", start)) >= 0) { + parts.push(text.slice(start, nl)); + const line = parts.join(""); + parts = []; + start = nl + 1; + // altimate_change end + if (!line.trim()) continue; + const req = JSON.parse(line); + try { + const result = await handle(req); + reply({ id: req.id, ok: true, result: pack(result) }); + } catch (err) { + reply({ id: req.id, ok: false, error: { ...err, message: String((err && err.message) || err), code: err && err.code, errno: err && err.errno } }); + } + if (req.op === "close") { setTimeout(() => process.exit(0), 25); } + } + // altimate_change start — retain only the unfinished suffix + if (start < text.length) parts.push(text.slice(start)); + // altimate_change end + } + closeQuietly(); + process.exit(0); +})(); +` diff --git a/packages/drivers/src/local-engine-codec.ts b/packages/drivers/src/local-engine-codec.ts new file mode 100644 index 0000000000..0e6ed83b71 --- /dev/null +++ b/packages/drivers/src/local-engine-codec.ts @@ -0,0 +1,36 @@ +/** + * JSON codec for values crossing the stdio boundary to a local-engine helper + * process. Plain JSON cannot carry what DuckDB and SQLite return (BigInt, + * Date, blobs, NaN/Infinity), so those are wrapped as `{ $t, v }` tags. + * Dictionaries are rebuilt as plain objects with own data properties so + * `__proto__` remains an ordinary key and STRUCT values support String(). + * Mirrored in `local-engine-child-source.ts`; the unit tests round-trip both. + */ + +export function pack(v: unknown): unknown { + if (typeof v === "bigint") return { $t: "bigint", v: v.toString() } + if (typeof v === "number") return Number.isFinite(v) ? v : { $t: "num", v: String(v) } + if (v === null || typeof v !== "object") return v + if (v instanceof Date) return { $t: "date", v: Number.isNaN(v.getTime()) ? null : v.toISOString() } + if (v instanceof Uint8Array) { + return { $t: "bytes", v: Buffer.from(v.buffer, v.byteOffset, v.byteLength).toString("base64") } + } + if (Array.isArray(v)) return v.map(pack) + const out = Object.fromEntries(Object.keys(v).map((k) => [k, pack((v as Record)[k])])) + return Object.prototype.hasOwnProperty.call(out, "$t") ? { $t: "obj", v: out } : out +} + +export function unpack(v: any): any { + if (v === null || typeof v !== "object") return v + if (Array.isArray(v)) return v.map(unpack) + if (typeof v.$t === "string") { + if (v.$t === "bigint") return BigInt(v.v) + if (v.$t === "num") return Number(v.v) + if (v.$t === "date") return v.v === null ? new Date(NaN) : new Date(v.v) + if (v.$t === "bytes") return Buffer.from(v.v, "base64") + if (v.$t === "obj") { + return Object.fromEntries(Object.keys(v.v).map((k) => [k, unpack(v.v[k])])) + } + } + return Object.fromEntries(Object.keys(v).map((k) => [k, unpack(v[k])])) +} diff --git a/packages/drivers/src/local-engine.ts b/packages/drivers/src/local-engine.ts new file mode 100644 index 0000000000..d0eb6bbb8c --- /dev/null +++ b/packages/drivers/src/local-engine.ts @@ -0,0 +1,655 @@ +/** + * Supervised helper process that owns one local database handle, so a runaway + * query can be stopped for certain. + * + * `bun:sqlite` calls block their thread and expose no interrupt, and the legacy + * `duckdb` binding's `interrupt()` is a documented no-op. A `Worker` does not + * help: `terminate()` left a blocking SQLite call at 100% CPU, and the duckdb + * addon aborts Bun when loaded in a Worker. Killing a process stops the work + * and releases its file locks (measured: see test/fixtures/cancel-probe.ts). + * + * Guarantees: + * - One process per engine owns the database handle. Shared DuckDB engines + * keep a separate native connection per connector, preserving temp tables + * and transactions. In-memory engines remain private to their connector. + * - Calls run one at a time in arrival order. The deadline covers execution + * only (not time queued behind another call), so a caller is never cancelled + * by someone else's timeout. A restart rejects stale queued calls for + * sessions that may have lost state; stateless file readers can continue. + * - After a kill the handle is reopened with the same arguments and open deadline on the next + * call. All sessions on that engine lose their state, and the timeout error + * says so. + * - Each process has its own response reader; a response from a retired + * process can never settle a later call. Every timer is cleared on settle. + */ + +import * as crypto from "crypto" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { LOCAL_ENGINE_CHILD_SOURCE } from "./local-engine-child-source" +import { pack, unpack } from "./local-engine-codec" +import { LocalEngineProcessError, QueryTimeoutError } from "./types" + +/** Grace for a killed process to be reaped before we move on. */ +const REAP_TIMEOUT_MS = 2_000 +/** Grace for a polite close before the process is killed. */ +const CLOSE_TIMEOUT_MS = 2_000 +/** Short grace when close must bypass an in-flight query. */ +const ACTIVE_CLOSE_TIMEOUT_MS = 500 +/** Keep diagnostics bounded, including when another process inherits the stderr pipe. */ +const STDERR_TAIL_CHARS = 8_192 +const STDERR_DRAIN_TIMEOUT_MS = 100 + +type Engine = "sqlite" | "duckdb" + +// This package is typechecked without Bun's ambient types; describe only what is used. +declare const Bun: { spawn(opts: Record): ChildProc } +interface ChildProc { + // altimate_change start — identify the helper's DuckDB spill directory + pid: number + // altimate_change end + stdin: { write(data: string): unknown; flush(): unknown } + stdout: AsyncIterable + stderr: AsyncIterable + exited: Promise + signalCode: string | null + kill(signal?: string): void +} + +interface Pending { + id: number + resolve(value: any): void + reject(err: Error): void +} + +interface Child { + proc: ChildProc + pending?: Pending + /** No further responses are accepted from this process. */ + retired: boolean + /** We ended it on purpose; its exit is not a crash. */ + killedByUs: boolean + stderrTail: string +} + +interface Session { + generation: number + stateful: boolean + lostGeneration: number +} + +/** Prove simple reads only; unfamiliar SQL and batches conservatively retain the state-loss guard. */ +function isStatelessRead(sql: unknown): boolean { + if (typeof sql !== "string") return false + const statement = sql.trim().replace(/;$/, "") + return /^(SELECT|WITH|VALUES)\b/i.test(statement) && + !statement.includes(";") && + !/\b(INSERT|UPDATE|DELETE|MERGE|CREATE|DROP|ALTER|COPY|CALL|EXECUTE|BEGIN|START|COMMIT|ROLLBACK|SAVEPOINT|RELEASE|SET|RESET|USE|ATTACH|DETACH|PRAGMA|INSTALL|LOAD|SETSEED|NEXTVAL|LOAD_EXTENSION)\b/i.test(statement) +} + +const liveChildren = new Set() +let exitHookInstalled = false + +function installExitHook(): void { + if (exitHookInstalled) return + exitHookInstalled = true + globalThis.process?.on?.("exit", () => { + for (const child of liveChildren) { + try { + child.proc.kill("SIGKILL") + } catch {} + } + removeHelperDir() + }) +} + +/** + * The per-process private directory that holds the helper script and serves as + * scratch helpers' HOME and every helper's explicit Bun configuration. It is + * created with an unpredictable name and mode 0700, then verified (real + * directory, not a symlink, ours, private) before anything is written into it + * or executed from it; any doubt + * fails closed. Nobody else can swap its contents. The helper uses this empty + * config explicitly, so project-controlled Bun startup files are never read. + */ +let helperDir: string | undefined + +function assertPrivateDirectory(dir: string): void { + const st = fs.lstatSync(dir) + if (!st.isDirectory() || st.isSymbolicLink()) throw new Error(`Local engine helper directory is not a plain directory: ${dir}`) + if (typeof process.getuid === "function") { + if (st.uid !== process.getuid()) throw new Error(`Local engine helper directory is not owned by this user: ${dir}`) + if ((st.mode & 0o077) !== 0) throw new Error(`Local engine helper directory is not private (mode ${(st.mode & 0o777).toString(8)}): ${dir}`) + } +} + +function removeHelperDir(): void { + const dir = helperDir + helperDir = undefined + if (!dir) return + try { + fs.rmSync(dir, { recursive: true, force: true }) + } catch {} +} + +function privateHelperDir(): string { + if (helperDir) { + try { + assertPrivateDirectory(helperDir) + return helperDir + } catch (err) { + // Gone (e.g. a temp cleaner ran): rebuild. Anything else is tampering. + if ((err as NodeJS.ErrnoException)?.code !== "ENOENT") throw err + helperDir = undefined + } + } + const dir = fs.mkdtempSync(path.join(fs.realpathSync(os.tmpdir()), "altimate-local-engine-")) + try { + if (process.platform !== "win32") fs.chmodSync(dir, 0o700) + assertPrivateDirectory(dir) + // An explicit empty config overrides the caller's project Bun config. + fs.writeFileSync(path.join(dir, "bunfig.toml"), "", { flag: "wx", mode: 0o600 }) + } catch (err) { + try { + fs.rmSync(dir, { recursive: true, force: true }) + } catch {} + throw err + } + helperDir = dir + return dir +} + +/** Where the helper script lives: written once per content hash into the private directory. */ +function ensureChildScript(source: string): { dir: string; file: string } { + const dir = privateHelperDir() + const hash = crypto.createHash("sha256").update(source).digest("hex").slice(0, 16) + const file = path.join(dir, `child-${hash}.mjs`) + try { + fs.writeFileSync(file, source, { flag: "wx", mode: 0o600 }) + } catch (err) { + if ((err as NodeJS.ErrnoException)?.code !== "EEXIST") throw err + const st = fs.lstatSync(file) + if (!st.isFile() || st.isSymbolicLink() || fs.readFileSync(file, "utf8") !== source) { + throw new Error(`Local engine helper script failed verification: ${file}`) + } + } + return { dir, file } +} + +/** + * The helper's entire environment. Forward database settings and cloud access + * variables used by DuckDB extensions, while excluding unrelated model-provider + * variables and Bun startup options. Script execution does not load global Bun + * config; spawn() uses an explicit config and --no-env-file to exclude project + * startup files. Ordinary helpers retain HOME/USERPROFILE/XDG for file-backed + * cloud credentials (including AWS SSO), plus Azure CLI and gcloud directories. + * Scratch helpers keep those directories private. + * `BUN_BE_BUN` makes a compiled executable act as plain bun. + */ +export function buildHelperEnv(dir: string, parent: Record = process.env, scratch = false): Record { + const env: Record = { + PATH: parent["PATH"] ?? "", + TMPDIR: dir, + TMP: dir, + TEMP: dir, + BUN_BE_BUN: "1", + } + for (const name of ["HOME", "USERPROFILE", "XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME", "XDG_STATE_HOME"]) { + const value = scratch ? dir : parent[name] + if (value !== undefined) env[name] = value + } + for (const name of [ + "LANG", "LC_ALL", "TZ", "SystemRoot", "windir", "COMSPEC", "PATHEXT", "GOOGLE_APPLICATION_CREDENTIALS", + "motherduck_token", "MOTHERDUCK_TOKEN", "HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "http_proxy", "https_proxy", "no_proxy", + // altimate_change start — preserve Azure storage authentication without forwarding all AZURE_* variables + "AZURE_STORAGE_CONNECTION_STRING", + "AZURE_CLIENT_ID", + "AZURE_TENANT_ID", + "AZURE_CLIENT_SECRET", + "AZURE_AUTHORITY_HOST", + "AZURE_CLIENT_CERTIFICATE_PATH", + "AZURE_FEDERATED_TOKEN_FILE", + // altimate_change end + ]) { + const v = parent[name] + if (v !== undefined) env[name] = v + } + for (const [name, value] of Object.entries(parent)) { + if (name.startsWith("AWS_") && value !== undefined) env[name] = value + } + // altimate_change start — preserve AWS profiles and ordinary helpers' cloud CLI directories + const parentHome = parent["HOME"] || parent["USERPROFILE"] || os.homedir() + env["AWS_SHARED_CREDENTIALS_FILE"] ??= path.join(parentHome, ".aws", "credentials") + env["AWS_CONFIG_FILE"] ??= path.join(parentHome, ".aws", "config") + if (!scratch) { + env["AZURE_CONFIG_DIR"] = parent["AZURE_CONFIG_DIR"] ?? path.join(parentHome, ".azure") + env["CLOUDSDK_CONFIG"] = parent["CLOUDSDK_CONFIG"] ?? ( + process.platform === "win32" && parent["APPDATA"] !== undefined + ? path.win32.join(parent["APPDATA"], "gcloud") + : path.join(parentHome, ".config", "gcloud") + ) + } + // altimate_change end + return env +} + +/** Keep store paths anchored to the same caller directory across helper restarts. */ +function absolutizeStorePath(payload: Record, cwd: string): Record { + const p = payload["path"] + if (typeof p !== "string" || p === "" || p === ":memory:" || path.isAbsolute(p)) return payload + // Keep URI-style locations (file:, md:, s3:) as they are; a Windows drive path is absolute above. + if (/^[a-z][a-z0-9+.-]+:/i.test(p)) return payload + return { ...payload, path: path.resolve(cwd, p) } +} + +export interface LocalEngineOptions { + engine: Engine + /** Human label used in errors, e.g. "SQLite". */ + label: string + /** Where the store lives, used to word the lost-state disclosure. */ + storePath: string + /** Directory used for relative paths inside SQL; captured at construction by default. */ + cwd?: string + /** Test seam: replaces the helper program. */ + childSource?: string +} + +interface OpenRequest { + payload: Record + timeoutMs: number | undefined + onTimeout: (() => Error) | undefined +} + +export class LocalEngine { + private child: Child | undefined + private openRequest: OpenRequest | undefined + private seq = 0 + private tail: Promise = Promise.resolve() + private closed = false + private generation = 0 + private sharedStateful = false + private readonly sessions = new Map() + private readonly cwd: string + + constructor(private readonly opts: LocalEngineOptions) { + this.cwd = path.resolve(opts.cwd ?? process.cwd()) + } + + /** + * Open the store. `timeoutMs` bounds the open itself (a liveness guard); on + * expiry the process is killed and `onOpenTimeout` supplies the error. The + * payload is remembered only once the open succeeds, so a respawn reopens + * exactly what worked. + */ + open(payload: Record, timeoutMs?: number, onOpenTimeout?: () => Error): Promise { + this.closed = false + return this.enqueue(async () => { + if (this.closed) throw new Error(`${this.opts.label} connection closed`) + const request: OpenRequest = { payload: absolutizeStorePath(payload, this.cwd), timeoutMs, onTimeout: onOpenTimeout } + const child = this.spawn(request) + try { + await this.sendOpen(child, request) + if (this.closed) throw new Error(`${this.opts.label} connection closed`) + } catch (err) { + await this.retire(child) + throw err + } + // Kept with its deadline, so a respawn is bounded by the same open budget. + this.openRequest = request + }) + } + + private sendOpen(child: Child, request: OpenRequest, signal?: AbortSignal): Promise { + return this.send(child, "open", { ...request.payload, engine: this.opts.engine }, request.timeoutMs, () => + request.onTimeout + ? request.onTimeout() + : new Error(`${this.opts.label} store did not finish opening in ${request.timeoutMs}ms`), + undefined, + signal, + ) + } + + /** Register even idle shared-engine connectors so a restart reaches every peer. */ + registerSession(connectionId?: number): void { + if (!this.sessions.has(connectionId)) { + this.sessions.set(connectionId, { + generation: this.generation, + stateful: this.opts.storePath === ":memory:" || this.opts.storePath === "", + lostGeneration: 0, + }) + } + } + + /** Run a query or disconnect, notifying onDispatch once after its message is flushed to the helper. */ + call( + op: "all" | "run" | "disconnect", + payload: Record, + timeoutMs?: number, + onDispatch?: () => void, + signal?: AbortSignal, + ): Promise { + const connectionId = payload["connectionId"] as number | undefined + this.registerSession(connectionId) + const session = this.sessions.get(connectionId)! + const enqueued = this.generation + const acknowledged = session.generation + if (op === "disconnect") this.sessions.delete(connectionId) + return this.enqueue(async () => { + // A retired helper has already discarded its sessions. Cleanup must not + // reopen the store just to disconnect a session that no longer exists. + if (op === "disconnect" && (this.closed || !this.child || this.child.retired)) return null as T + if (this.closed || !this.openRequest) throw new Error(`${this.opts.label} connection not open`) + if (op !== "disconnect") { + if (this.sessions.get(connectionId) !== session) throw new Error(`${this.opts.label} connection not open`) + // Reject the entire stale burst only when this session may have lost + // state, even if an earlier rejection has since acknowledged that loss. + if (enqueued < session.lostGeneration || acknowledged < session.lostGeneration) { + session.generation = this.generation + throw this.sessionStateLostError() + } + } + const child = await this.ensureChild(signal) + if (this.closed) throw new Error(`${this.opts.label} connection closed`) + // Mark before dispatch: a batch may change state before it times out. + if (op !== "disconnect" && !isStatelessRead(payload["sql"])) { + session.stateful = true + // SQLite shares one native session. DuckDB configuration, attachments + // and loaded extensions can affect every connection in the helper. + if (this.opts.engine === "sqlite" || /\b(SET|RESET|USE|ATTACH|DETACH|PRAGMA|INSTALL|LOAD|LOAD_EXTENSION|SETSEED)\b/i.test(String(payload["sql"])) || /\b(CREATE|DROP|ALTER)\s+(OR\s+REPLACE\s+)?(PERSISTENT\s+|TEMPORARY\s+)?(IF\s+(NOT\s+)?EXISTS\s+)?SECRET\b/i.test(String(payload["sql"]))) { + this.sharedStateful = true + } + } + // An aborted active call retires the helper. The session stays unacknowledged + // so its next statement reports SESSION_STATE_LOST rather than silently + // running outside the discarded transaction. + return this.send(child, op, payload, op === "disconnect" ? CLOSE_TIMEOUT_MS : timeoutMs, () => + op === "disconnect" + ? new Error(`${this.opts.label} session did not finish closing`) + : this.discloseTimeout(session, timeoutMs!), + onDispatch, + signal, + ) as Promise + }, signal) + } + + async close(): Promise { + this.closed = true + this.openRequest = undefined + this.sessions.clear() + const child = this.child + if (!child) return + // Do not enqueue close behind a query that may have no execution deadline. + // Keep its pending promise: the process-exit handler clears child.pending. + const pending = child.pending + if (pending) { + let timer: ReturnType | undefined + await Promise.race([ + this.tail, + new Promise((resolve) => { timer = setTimeout(resolve, ACTIVE_CLOSE_TIMEOUT_MS) }), + ]) + if (timer) clearTimeout(timer) + } else { + try { + await this.send(child, "close", {}, CLOSE_TIMEOUT_MS, () => new Error("close timed out")) + } catch {} + } + await this.retire(child) + pending?.reject(new Error(`${this.opts.label} connection closed`)) + } + + // -- internals ------------------------------------------------------------- + + private enqueue(fn: () => Promise, signal?: AbortSignal): Promise { + return new Promise((resolve, reject) => { + const abort = () => reject(signal!.reason) + signal?.addEventListener("abort", abort, { once: true }) + if (signal?.aborted) abort() + const start = () => { + signal?.removeEventListener("abort", abort) + signal?.throwIfAborted() + return fn() + } + const run = this.tail.then(start, start) + this.tail = run.catch(() => {}) + run.then(resolve, reject) + }) + } + + private timeoutQueryError(timeoutMs: number): QueryTimeoutError { + const memory = this.opts.storePath === ":memory:" || this.opts.storePath === "" + return new QueryTimeoutError({ + engine: this.opts.label, + timeoutMs, + stateLost: true, + detail: + "The database session was restarted to stop it: " + + (memory ? "the in-memory database was emptied, and " : "") + + "temporary tables, session settings and any open transaction were discarded" + + (memory ? "." : "; data already committed to the store is unaffected, and an interrupted write was rolled back."), + }) + } + + private sessionStateLostError(): Error { + return Object.assign(new Error( + `${this.opts.label} session state was lost because the database session restarted: ` + + "temporary tables, session settings and any open transaction were discarded. " + + "This statement was not executed; re-establish session state before retrying.", + ), { code: "SESSION_STATE_LOST", stateLost: true }) + } + + private discloseTimeout(session: Session, timeoutMs: number): QueryTimeoutError { + session.generation = this.generation + return this.timeoutQueryError(timeoutMs) + } + + /** A killed/crashed helper and its lazy replacement form one new generation. */ + private invalidate(child: Child): void { + if (child.retired) return + child.retired = true + this.generation++ + for (const session of this.sessions.values()) { + if (session.stateful || this.sharedStateful) session.lostGeneration = this.generation + } + } + + private spawn(request: OpenRequest): Child { + installExitHook() + const { dir, file } = ensureChildScript(this.opts.childSource ?? LOCAL_ENGINE_CHILD_SOURCE) + const proc = Bun.spawn({ + // Preserve relative SQL paths without loading project preloads or .env files. + cmd: [process.execPath, `--config=${path.join(dir, "bunfig.toml")}`, "--no-env-file", file, String(process.pid)], + cwd: this.cwd, + env: buildHelperEnv(dir, process.env, typeof request.payload["sandboxDirectory"] === "string"), + stdin: "pipe", + stdout: "pipe", + stderr: "pipe", + }) + // altimate_change start — remember this process's spill path across helper respawns + const spillDirectory = this.opts.engine === "duckdb" ? path.join(dir, `duckdb-${proc.pid}`) : undefined + // altimate_change end + const child: Child = { proc, retired: false, killedByUs: false, stderrTail: "" } + liveChildren.add(child) + this.child = child + void this.readLoop(child) + const stderrDrained = this.readStderr(child) + void proc.exited.then(async (exitCode) => { + // altimate_change start — SIGKILL cannot let DuckDB clean up; wait for actual exit, not the reap timeout + if (spillDirectory) { + try { + fs.rmSync(spillDirectory, { recursive: true, force: true }) + } catch {} + } + liveChildren.delete(child) + this.invalidate(child) + if (this.child === child) this.child = undefined + const pending = child.pending + child.pending = undefined + if (pending && !child.killedByUs) { + let timer: ReturnType | undefined + await Promise.race([ + stderrDrained, + new Promise((resolve) => { timer = setTimeout(resolve, STDERR_DRAIN_TIMEOUT_MS) }), + ]) + if (timer) clearTimeout(timer) + pending.reject(new LocalEngineProcessError({ + engine: this.opts.label, + exitCode, + signal: proc.signalCode, + stderr: child.stderrTail, + })) + } + // altimate_change end + }) + return child + } + + private async readStderr(child: Child): Promise { + const decoder = new TextDecoder() + try { + for await (const chunk of child.proc.stderr) { + child.stderrTail = (child.stderrTail + decoder.decode(chunk, { stream: true })).slice(-STDERR_TAIL_CHARS) + } + child.stderrTail = (child.stderrTail + decoder.decode()).slice(-STDERR_TAIL_CHARS) + } catch { + // Preserve diagnostics already received if the pipe closes with an error. + } + } + + private async readLoop(child: Child): Promise { + const decoder = new TextDecoder() + // altimate_change start — scan each chunk once, joining a line only at its terminator + let parts: string[] = [] + try { + for await (const chunk of child.proc.stdout) { + const text = decoder.decode(chunk, { stream: true }) + let start = 0 + let nl: number + while ((nl = text.indexOf("\n", start)) >= 0) { + parts.push(text.slice(start, nl)) + const line = parts.join("") + parts = [] + start = nl + 1 + // altimate_change end + if (!line.trim()) continue + let msg: any + try { + msg = JSON.parse(line) + } catch { + continue + } + // A retired process (killed on timeout) must not settle anything. + if (child.retired && child.killedByUs) return + const pending = child.pending + if (!pending || pending.id !== msg.id) continue + child.pending = undefined + if (msg.ok) pending.resolve(unpack(msg.result)) + else { + const err = Object.assign(new Error(msg.error?.message ?? "unknown error"), msg.error) + pending.reject(err) + } + } + // altimate_change start — retain only the unfinished suffix + if (start < text.length) parts.push(text.slice(start)) + // altimate_change end + } + } catch { + // stream error: the exit handler rejects the pending call + } + } + + /** The live process, respawned and reopened after a kill or crash. */ + private async ensureChild(signal?: AbortSignal): Promise { + signal?.throwIfAborted() + if (this.child && !this.child.retired) return this.child + const child = this.spawn(this.openRequest!) + try { + await this.sendOpen(child, this.openRequest!, signal) + } catch (err) { + await this.retire(child) + throw err + } + return child + } + + private send( + child: Child, + op: string, + payload: Record, + timeoutMs: number | undefined, + onTimeout: () => Error, + onDispatch?: () => void, + signal?: AbortSignal, + ): Promise { + return new Promise((resolve, reject) => { + if (child.retired) return reject(new Error(`${this.opts.label} helper process is not running`)) + if (signal?.aborted) return reject(signal.reason) + const id = ++this.seq + let timer: ReturnType | undefined + let settled = false + let stopping = false + const settle = (fn: () => void) => { + if (settled) return + settled = true + if (timer) clearTimeout(timer) + signal?.removeEventListener("abort", abort) + if (child.pending?.id === id) child.pending = undefined + fn() + } + child.pending = { + id, + resolve: (v) => settle(() => resolve(v)), + reject: (e) => settle(() => reject(e)), + } + const stop = (error: () => unknown) => { + if (settled || stopping) return + stopping = true + void this.retire(child).then(() => settle(() => reject(error()))) + } + const abort = () => stop(() => signal!.reason) + signal?.addEventListener("abort", abort, { once: true }) + if (timeoutMs !== undefined) { + timer = setTimeout(() => { + if (settled || child.retired) return + // Stop the work first, then report: the caller must not see the + // timeout while the process still holds the store. + stop(onTimeout) + }, timeoutMs) + } + try { + child.proc.stdin.write(JSON.stringify({ id, op, payload: pack(payload) }) + "\n") + void Promise.resolve(child.proc.stdin.flush()).then( + () => { + try { + onDispatch?.() + } catch { + // An observer must not release the queue while the helper is still running. + } + }, + (err) => settle(() => reject(err)), + ) + } catch (err) { + settle(() => reject(err as Error)) + } + }) + } + + /** Kill a process and wait (bounded) for it to be reaped so its locks are gone. */ + private async retire(child: Child): Promise { + this.invalidate(child) + child.killedByUs = true + if (this.child === child) this.child = undefined + try { + child.proc.kill("SIGKILL") + } catch {} + let timer: ReturnType | undefined + await Promise.race([ + child.proc.exited, + new Promise((r) => { + timer = setTimeout(r, REAP_TIMEOUT_MS) + }), + ]) + if (timer) clearTimeout(timer) + liveChildren.delete(child) + } +} diff --git a/packages/drivers/src/mongodb.ts b/packages/drivers/src/mongodb.ts index f353ee49f1..1c0c59bde9 100644 --- a/packages/drivers/src/mongodb.ts +++ b/packages/drivers/src/mongodb.ts @@ -14,14 +14,20 @@ * { "database": "mydb", "collection": "users", "command": "countDocuments", "filter": {} } */ -import type { ConnectionConfig, Connector, ConnectorResult, SchemaColumn } from "./types" +import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types" +import { QueryTimeoutError } from "./types" +import { resolveQueryTimeout } from "./query-timeout" import { loadOptionalDriver } from "./resolve" +// altimate_change start — cap extraction before cursor results accumulate +import { createResultByteBudget } from "./result-byte-limit" +// altimate_change end /** Supported MQL commands. */ type MqlCommand = | "find" | "aggregate" | "countDocuments" + | "estimatedDocumentCount" | "distinct" | "insertOne" | "insertMany" @@ -33,8 +39,118 @@ type MqlCommand = | "dropCollection" | "createIndex" | "listIndexes" + | "listCollections" | "ping" +// The native wire shape names the collection by the command key: `{"find": "orders", …}`, +// `{"aggregate": "orders", "pipeline": […]}`, `{"count": "orders"}`, `{"distinct": "orders", +// "key": "city"}`. Models write that shape at least as often as this driver's +// `{command, collection}` form, so both are accepted. +const NATIVE_COMMAND_KEYS: Record = { + find: "find", + aggregate: "aggregate", + count: "countDocuments", + countDocuments: "countDocuments", + estimatedDocumentCount: "estimatedDocumentCount", + distinct: "distinct", +} + +/** Validate bounds before command rewriting or opening a MongoDB cursor. */ +function validateMqlBounds(parsed: Record): void { + const command = parsed["command"] + if (command !== "find" && command !== "aggregate" && command !== "countDocuments") return + + function check(value: unknown, field: "limit" | "skip" | "$limit" | "$skip", minimum: number) { + if (typeof value === "number" && Number.isSafeInteger(value) && value >= minimum) return + const rule = field === "skip" || field === "$skip" ? "a non-negative" : "a positive" + throw new Error(`MongoDB ${command} ${field} must be ${rule} integer`) + } + + // A top-level limit of zero retains the existing default-cap behavior. + if (parsed["limit"] !== undefined) check(parsed["limit"], "limit", 0) + if (parsed["skip"] !== undefined) check(parsed["skip"], "skip", 0) + if (command !== "aggregate" || !Array.isArray(parsed["pipeline"])) return + for (const stage of parsed["pipeline"]) { + if (!stage || typeof stage !== "object") continue + // Pipeline $limit has no zero sentinel; MongoDB requires a positive integer. + if ("$limit" in stage) check(stage.$limit, "$limit", 1) + if ("$skip" in stage) check(stage.$skip, "$skip", 0) + } +} + +/** Accept native commands and `{collection, find: filter}` / `{collection, aggregate: pipeline}`. */ +export function normalizeMqlCommand>(parsed: T): T & MqlQuery { + if (!parsed || typeof parsed !== "object") return parsed as T & MqlQuery + if (typeof parsed["command"] === "string") { + validateMqlBounds(parsed) + return parsed as T & MqlQuery + } + if (parsed["listCollections"] === 1) { + const { listCollections: _, ...rest } = parsed + return { ...rest, command: "listCollections" } as T & MqlQuery + } + if (typeof parsed["collection"] === "string" && parsed["collection"]) { + const find = parsed["find"] + const aggregate = parsed["aggregate"] + if (find && typeof find === "object" && !Array.isArray(find)) { + const { find: _, ...rest } = parsed + const normalized = { ...rest, command: "find", filter: parsed["filter"] ?? find } + validateMqlBounds(normalized) + return normalized as T & MqlQuery + } + if (Array.isArray(aggregate)) { + const { aggregate: _, ...rest } = parsed + const normalized = { ...rest, command: "aggregate", pipeline: parsed["pipeline"] ?? aggregate } + validateMqlBounds(normalized) + return normalized as T & MqlQuery + } + } + for (const [key, command] of Object.entries(NATIVE_COMMAND_KEYS)) { + const value = parsed[key] + if (typeof value !== "string" || !value) continue + const { [key]: _collection, key: distinctKey, ...rest } = parsed as Record + const normalized: Record = { ...rest, command, collection: value } + if ((command === "countDocuments" || command === "distinct") && normalized["filter"] === undefined) { + normalized["filter"] = normalized["query"] + } + if (command === "distinct" && typeof distinctKey === "string" && normalized["field"] === undefined) { + normalized["field"] = distinctKey + } else if (distinctKey !== undefined) { + normalized["key"] = distinctKey + } + validateMqlBounds(normalized) + return normalized as T & MqlQuery + } + return parsed as T & MqlQuery +} + +const MONGO_WRITE_STAGES = new Set(["$out", "$merge"]) +const MONGO_COLLECTION_READS = new Set([ + "find", "aggregate", "countDocuments", "estimatedDocumentCount", "distinct", "listIndexes", +]) + +/** Detect write stages in this pipeline, nested pipeline arrays, and $facet branches. */ +export function hasMongoWriteStage(pipeline: unknown[]): boolean { + function hasNestedWrite(value: unknown): boolean { + if (!value || typeof value !== "object") return false + if (Array.isArray(value)) return value.some(hasNestedWrite) + return Object.entries(value).some(([key, nested]) => { + if (key === "pipeline" && Array.isArray(nested)) return hasMongoWriteStage(nested) + if (key === "$facet" && nested && typeof nested === "object") { + return Object.values(nested).some((branch) => Array.isArray(branch) && hasMongoWriteStage(branch)) + } + return hasNestedWrite(nested) + }) + } + + return pipeline.some( + (stage) => + stage && + typeof stage === "object" && + (Object.keys(stage).some((key) => MONGO_WRITE_STAGES.has(key)) || hasNestedWrite(stage)), + ) +} + interface MqlQuery { database?: string collection?: string @@ -84,7 +200,7 @@ function inferType(value: unknown): string { case "Double": return "double" case "Binary": - return "binary" + return (value as any).sub_type === 4 ? "uuid" : "binary" case "Timestamp": return "timestamp" case "MinKey": @@ -129,6 +245,14 @@ function extractFields(docs: Record[]): Map return fieldTypes } +/** Server error code for an operation stopped by `maxTimeMS`. */ +const MONGO_MAX_TIME_EXPIRED = 50 + +/** Per-operation options carrying the server-side execution cap, if any. */ +function withMaxTime(maxTimeMS: number | undefined): { maxTimeMS?: number } { + return maxTimeMS === undefined ? {} : { maxTimeMS } +} + export async function connect(config: ConnectionConfig): Promise { let mongoModule: any mongoModule = await loadOptionalDriver("mongodb", "mongodb") @@ -138,6 +262,45 @@ export async function connect(config: ConnectionConfig): Promise { let client: any const explicitDb = config.database as string | undefined + const collectionCache = new Map>>() + let databaseNames: Promise | undefined + + function clearMetadata() { + collectionCache.clear() + databaseNames = undefined + } + + async function readCollections(db: any, maxTimeMS: number | undefined): Promise> { + const name = db.databaseName as string + const pending: Promise> = collectionCache.get(name) + ?? db.listCollections({}, { nameOnly: true, authorizedCollections: true, ...withMaxTime(maxTimeMS) }).toArray() + collectionCache.set(name, pending) + let collections: Array<{ name: string; type: string }> + try { + collections = await pending + } catch (error) { + collectionCache.delete(name) + throw error + } + // Visible collections prove the database exists without requiring database-listing privileges. + if (collections.length === 0) { + const pendingNames: Promise = databaseNames ?? client.db().admin() + .listDatabases({ nameOnly: true, authorizedDatabases: true, ...withMaxTime(maxTimeMS) }) + .then((result: { databases: Array<{ name: string }> }) => result.databases.map((db) => db.name).sort()) + .catch((error: unknown) => { + databaseNames = undefined + throw error + }) + databaseNames = pendingNames + const names = await pendingNames + if (!names.includes(name)) { + throw new Error( + `MongoDB database "${name}" does not exist or is not accessible. Available databases: ${names.join(", ") || "(none)"}`, + ) + } + } + return collections + } /** Resolve which database to use: query-specified, config-specified, or URI default. */ function resolveDb(queryDb?: string): any { @@ -174,7 +337,11 @@ export async function connect(config: ConnectionConfig): Promise { } // BSON Binary if ((val as any)._bsontype === "Binary") { - return `Binary(${(val as any).length()})` + const binary = val as any + if (binary.sub_type === 4 && typeof binary.toUUID === "function") { + return binary.toUUID().toString() + } + return `base64:${Buffer.from(binary.value(true)).toString("base64")}` } // BSON Timestamp if ((val as any)._bsontype === "Timestamp") { @@ -188,7 +355,20 @@ export async function connect(config: ConnectionConfig): Promise { return JSON.stringify(val) } - return { + const connector: Connector & { + // altimate_change start + runCommand( + query: string, + limit: number | undefined, + maxTimeMS: number | undefined, + maxResultBytes?: number, + signal?: AbortSignal, + ): Promise + // altimate_change end + } = { + // altimate_change start + supportsResultByteLimit: true, + // altimate_change end async connect() { // Support connection_string or individual fields // SECURITY: URI may contain credentials — never log it @@ -233,23 +413,114 @@ export async function connect(config: ConnectionConfig): Promise { client = new MongoClient(uri, connectOptions) await client.connect() + clearMetadata() + }, + + async execute(query: string, limit?: number, _binds?: any[], options?: ExecuteOptions): Promise { + const timeoutMs = resolveQueryTimeout(config, options).ms + try { + options?.signal?.throwIfAborted() + // altimate_change start + return await connector.runCommand(query, limit, timeoutMs, options?.maxResultBytes, options?.signal) + // altimate_change end + } catch (err: any) { + // Server error 50 (MaxTimeMSExpired): the server stopped the operation. + if (timeoutMs !== undefined && (err?.code === MONGO_MAX_TIME_EXPIRED || err?.codeName === "MaxTimeMSExpired")) { + throw new QueryTimeoutError({ engine: "MongoDB", timeoutMs }) + } + throw err + } }, - async execute(query: string, limit?: number, _binds?: any[]): Promise { - let parsed: MqlQuery + // altimate_change start — bounded cursor reads stop before retaining an oversized result + async runCommand( + query: string, + limit: number | undefined, + maxTimeMS: number | undefined, + maxResultBytes?: number, + signal?: AbortSignal, + ): Promise { + async function readCursor(cursor: any): Promise[]> { + const consume = createResultByteBudget(maxResultBytes) + let stopped = false + let failure: unknown + let closing: Promise | undefined + let timer: ReturnType | undefined + let abort: (() => void) | undefined + const close = () => closing ??= Promise.resolve().then(() => cursor.close?.()) + try { + const cancelled = new Promise((_resolve, reject) => { + const stop = (error: unknown) => { + stopped = true + failure = error + void close().catch(() => {}) + reject(error) + } + abort = () => stop(signal!.reason) + signal?.addEventListener("abort", abort, { once: true }) + if (signal?.aborted) abort() + if (maxTimeMS !== undefined) { + timer = setTimeout(() => stop(new QueryTimeoutError({ engine: "MongoDB", timeoutMs: maxTimeMS, cancelled: false })), maxTimeMS) + } + }) + const read = async () => { + if (stopped) throw failure + if (maxResultBytes === undefined && maxTimeMS === undefined && !signal) return cursor.toArray() + const docs: Record[] = [] + for await (const doc of maxResultBytes === undefined ? cursor : cursor.batchSize(1)) { + if (stopped) throw failure + if (maxResultBytes === undefined) { + docs.push(doc) + continue + } + const serialized = Object.fromEntries( + Object.entries(doc).map(([key, value]) => [key, serializeValue(value)]), + ) + consume(Object.values(serialized)) + docs.push(serialized) + } + return docs + } + return await Promise.race([cancelled, read()]) + } finally { + if (timer !== undefined) clearTimeout(timer) + if (abort) signal?.removeEventListener("abort", abort) + if (!stopped) await close() + } + } + + function tabularRows(docs: Record[], columns: string[]): unknown[][] { + const consume = createResultByteBudget(maxResultBytes) + return docs.map((doc) => { + const row = columns.map((col) => serializeValue(doc[col])) + consume(row) + return row + }) + } + // altimate_change end + let raw: Record try { - parsed = JSON.parse(query) as MqlQuery + raw = JSON.parse(query) } catch (e) { throw new Error(`Invalid MQL query — must be valid JSON. Error: ${(e as Error).message}`) } + if (!raw || typeof raw !== "object" || Array.isArray(raw)) { + throw new Error("MQL query must be a JSON command object") + } + const parsed = normalizeMqlCommand(raw) - if (!parsed.command) { + if (typeof parsed.command !== "string" || !parsed.command) { throw new Error("MQL query must include a 'command' field") } const db = resolveDb(parsed.database) const effectiveLimit = limit ?? 1000 const cmd = parsed.command + // altimate_change start — only cursor-based extraction and scalar counts support a byte bound + if (maxResultBytes !== undefined && !["find", "aggregate", "countDocuments", "estimatedDocumentCount"].includes(cmd)) { + throw new Error(`Command '${cmd}' does not support maxResultBytes`) + } + // altimate_change end // Commands that don't need a collection if (cmd === "ping") { @@ -257,12 +528,28 @@ export async function connect(config: ConnectionConfig): Promise { return { columns: ["ok"], rows: [[result.ok]], row_count: 1, truncated: false } } + if (cmd === "listCollections") { + const collections = await readCollections(db, maxTimeMS) + const matches = parsed.filter + ? await db.listCollections(parsed.filter, { + nameOnly: true, authorizedCollections: true, ...withMaxTime(maxTimeMS), + }).toArray() + : collections + const rows = matches.slice(0, effectiveLimit) + .map((collection: { name: string; type: string }) => [collection.name, collection.type]) + return { columns: ["name", "type"], rows, row_count: rows.length, truncated: matches.length > effectiveLimit } + } + + if (!MONGO_COLLECTION_READS.has(cmd)) clearMetadata() + if (cmd === "createCollection") { const name = parsed.name ?? parsed.collection if (!name) { throw new Error("createCollection requires 'name' or 'collection'") } - await db.createCollection(name, parsed.options ?? {}) + // altimate_change start — apply the resolved deadline to writes + await db.createCollection(name, { ...parsed.options, ...withMaxTime(maxTimeMS) }) + // altimate_change end return { columns: ["result"], rows: [["ok"]], row_count: 1, truncated: false } } @@ -270,13 +557,15 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.collection) { throw new Error("dropCollection requires 'collection'") } + // altimate_change start const dropped = await db .collection(parsed.collection) - .drop() + .drop(withMaxTime(maxTimeMS)) .catch((e: any) => { if (e.codeName === "NamespaceNotFound" || e.code === 26) return false throw e }) + // altimate_change end return { columns: ["dropped"], rows: [[dropped]], @@ -289,18 +578,36 @@ export async function connect(config: ConnectionConfig): Promise { throw new Error(`Command '${cmd}' requires a 'collection' field`) } + if (MONGO_COLLECTION_READS.has(cmd)) { + let collections = await readCollections(db, maxTimeMS) + if (!collections.some((collection) => collection.name === parsed.collection)) { + // A collection created by another client after the first listing is not cached; re-list once before refusing. + collectionCache.delete(db.databaseName as string) + databaseNames = undefined + collections = await readCollections(db, maxTimeMS) + } + if (!collections.some((collection) => collection.name === parsed.collection)) { + const names = collections.map((collection) => collection.name).sort() + throw new Error( + `MongoDB collection "${parsed.collection}" does not exist or is not accessible in database "${db.databaseName}". Available collections: ${names.join(", ") || "(none)"}`, + ) + } + } + const coll = db.collection(parsed.collection) switch (cmd) { case "find": { - let cursor = coll.find(parsed.filter ?? {}) + let cursor = coll.find(parsed.filter ?? {}, withMaxTime(maxTimeMS)) if (parsed.projection) cursor = cursor.project(parsed.projection) if (parsed.sort) cursor = cursor.sort(parsed.sort) if (parsed.skip) cursor = cursor.skip(parsed.skip) // Cap user-specified limit against effectiveLimit to prevent OOM const queryLimit = parsed.limit ? Math.min(parsed.limit, effectiveLimit) : effectiveLimit cursor = cursor.limit(queryLimit + 1) - const docs = await cursor.toArray() + // altimate_change start + const docs = await readCursor(cursor) + // altimate_change end const truncated = docs.length > queryLimit const limited = truncated ? docs.slice(0, queryLimit) : docs @@ -318,7 +625,9 @@ export async function connect(config: ConnectionConfig): Promise { } const columns = Array.from(colSet) - const rows = limited.map((doc: any) => columns.map((col) => serializeValue(doc[col]))) + // altimate_change start — union columns can add null padding beyond the document byte total + const rows = tabularRows(limited, columns) + // altimate_change end return { columns, rows, row_count: limited.length, truncated } } @@ -328,16 +637,12 @@ export async function connect(config: ConnectionConfig): Promise { throw new Error("aggregate requires a 'pipeline' array") } // Block dangerous stages/operators: - // - $out/$merge: write operations (top-level stage keys) + // - $out/$merge: write operations (including nested pipelines) // - $function/$accumulator: arbitrary JS execution (can be nested in expressions) const pipeline = [...parsed.pipeline] - const blockedWriteStages = ["$out", "$merge"] - const hasBlockedWrite = pipeline.some((stage) => - blockedWriteStages.some((s) => s in stage), - ) - if (hasBlockedWrite) { + if (hasMongoWriteStage(pipeline)) { throw new Error( - `Pipeline contains a blocked write stage (${blockedWriteStages.join(", ")}). Write operations are not allowed.`, + `Pipeline contains a blocked write stage (${[...MONGO_WRITE_STAGES].join(", ")}). Write operations are not allowed.`, ) } // $function/$accumulator can appear nested inside $project, $addFields, $group, etc. @@ -348,19 +653,15 @@ export async function connect(config: ConnectionConfig): Promise { "Pipeline contains a blocked operator ($function, $accumulator). Executing arbitrary JavaScript is not allowed.", ) } - // Cap or append $limit to prevent OOM (write stages already blocked above). - const limitIdx = pipeline.findIndex((stage) => "$limit" in stage) - if (limitIdx >= 0) { - // Cap user-specified $limit against effectiveLimit - const userLimit = (pipeline[limitIdx] as any).$limit - if (typeof userLimit === "number" && userLimit > effectiveLimit) { - pipeline[limitIdx] = { $limit: effectiveLimit + 1 } - } - } else { + // Earlier limits cannot bound rows produced by later expanding stages. + const terminalLimit = pipeline.at(-1)?.$limit + if (!(typeof terminalLimit === "number" && terminalLimit <= effectiveLimit + 1)) { pipeline.push({ $limit: effectiveLimit + 1 }) } - const docs = await coll.aggregate(pipeline).toArray() + // altimate_change start + const docs = await readCursor(coll.aggregate(pipeline, withMaxTime(maxTimeMS))) + // altimate_change end const truncated = docs.length > effectiveLimit const limited = truncated ? docs.slice(0, effectiveLimit) : docs @@ -377,13 +678,25 @@ export async function connect(config: ConnectionConfig): Promise { } const columns = Array.from(colSet) - const rows = limited.map((doc: any) => columns.map((col) => serializeValue(doc[col]))) + // altimate_change start + const rows = tabularRows(limited, columns) + // altimate_change end return { columns, rows, row_count: limited.length, truncated } } - case "countDocuments": { - const count = await coll.countDocuments(parsed.filter ?? {}) + case "countDocuments": + case "estimatedDocumentCount": { + const count = cmd === "estimatedDocumentCount" + ? await coll.estimatedDocumentCount(withMaxTime(maxTimeMS)) + : await coll.countDocuments(parsed.filter ?? {}, { + ...withMaxTime(maxTimeMS), + ...(parsed.limit === undefined ? {} : { limit: parsed.limit }), + ...(parsed.skip === undefined ? {} : { skip: parsed.skip }), + }) + // altimate_change start + createResultByteBudget(maxResultBytes)([count]) + // altimate_change end return { columns: ["count"], rows: [[count]], @@ -396,12 +709,25 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.field) { throw new Error("distinct requires a 'field' string") } - const values = await coll.distinct(parsed.field, parsed.filter ?? {}) - const truncated = values.length > effectiveLimit - const limited = truncated ? values.slice(0, effectiveLimit) : values + const docs = await readCursor( + coll.aggregate( + [ + { $match: parsed.filter ?? {} }, + // Native `distinct` deconstructs arrays, reports explicit nulls, and skips missing + // fields and empty arrays: exclude the latter two, then unwind preserving nulls. + { $match: { [parsed.field]: { $exists: true, $ne: [] } } }, + { $unwind: { path: `$${parsed.field}`, preserveNullAndEmptyArrays: true } }, + { $group: { _id: `$${parsed.field}` } }, + { $limit: effectiveLimit + 1 }, + ], + withMaxTime(maxTimeMS), + ), + ) + const truncated = docs.length > effectiveLimit + const limited = truncated ? docs.slice(0, effectiveLimit) : docs return { columns: [parsed.field], - rows: limited.map((v: unknown) => [serializeValue(v)]), + rows: limited.map((doc) => [serializeValue(doc._id)]), row_count: limited.length, truncated, } @@ -411,7 +737,9 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.document) { throw new Error("insertOne requires a 'document' object") } - const result = await coll.insertOne(parsed.document) + // altimate_change start + const result = await coll.insertOne(parsed.document, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["insertedId"], rows: [[result.insertedId.toString()]], @@ -424,7 +752,9 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.documents || !Array.isArray(parsed.documents)) { throw new Error("insertMany requires a 'documents' array") } - const result = await coll.insertMany(parsed.documents) + // altimate_change start + const result = await coll.insertMany(parsed.documents, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["insertedCount"], rows: [[result.insertedCount]], @@ -437,7 +767,9 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.update) { throw new Error("updateOne requires an 'update' object") } - const result = await coll.updateOne(parsed.filter ?? {}, parsed.update) + // altimate_change start + const result = await coll.updateOne(parsed.filter ?? {}, parsed.update, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["matchedCount", "modifiedCount"], rows: [[result.matchedCount, result.modifiedCount]], @@ -450,7 +782,9 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.update) { throw new Error("updateMany requires an 'update' object") } - const result = await coll.updateMany(parsed.filter ?? {}, parsed.update) + // altimate_change start + const result = await coll.updateMany(parsed.filter ?? {}, parsed.update, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["matchedCount", "modifiedCount"], rows: [[result.matchedCount, result.modifiedCount]], @@ -460,7 +794,9 @@ export async function connect(config: ConnectionConfig): Promise { } case "deleteOne": { - const result = await coll.deleteOne(parsed.filter ?? {}) + // altimate_change start + const result = await coll.deleteOne(parsed.filter ?? {}, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["deletedCount"], rows: [[result.deletedCount]], @@ -470,7 +806,9 @@ export async function connect(config: ConnectionConfig): Promise { } case "deleteMany": { - const result = await coll.deleteMany(parsed.filter ?? {}) + // altimate_change start + const result = await coll.deleteMany(parsed.filter ?? {}, withMaxTime(maxTimeMS)) + // altimate_change end return { columns: ["deletedCount"], rows: [[result.deletedCount]], @@ -483,7 +821,9 @@ export async function connect(config: ConnectionConfig): Promise { if (!parsed.keys) { throw new Error("createIndex requires a 'keys' object") } - const indexName = await coll.createIndex(parsed.keys, parsed.options ?? {}) + // altimate_change start + const indexName = await coll.createIndex(parsed.keys, { ...parsed.options, ...withMaxTime(maxTimeMS) }) + // altimate_change end return { columns: ["indexName"], rows: [[indexName]], @@ -493,7 +833,7 @@ export async function connect(config: ConnectionConfig): Promise { } case "listIndexes": { - const indexes = await coll.listIndexes().toArray() + const indexes = await readCursor(coll.listIndexes(withMaxTime(maxTimeMS))) if (indexes.length === 0) { return { columns: [], rows: [], row_count: 0, truncated: false } } @@ -538,7 +878,12 @@ export async function connect(config: ConnectionConfig): Promise { const coll = db.collection(table) // Sample up to 100 documents to infer schema - const docs = await coll.find({}).limit(100).toArray() + // altimate_change start — format the existing cursor chain + const docs = await coll + .find({}, withMaxTime(resolveQueryTimeout(config).ms)) + .limit(100) + .toArray() + // altimate_change end if (docs.length === 0) { return [] @@ -587,6 +932,8 @@ export async function connect(config: ConnectionConfig): Promise { await client.close() client = null } + clearMetadata() }, } + return connector } diff --git a/packages/drivers/src/postgres.ts b/packages/drivers/src/postgres.ts index 8b8d39ab73..4d2a05a0ef 100644 --- a/packages/drivers/src/postgres.ts +++ b/packages/drivers/src/postgres.ts @@ -4,6 +4,51 @@ import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types" import { loadOptionalDriver } from "./resolve" +import { QueryTimeoutError } from "./types" +import { MAX_TIMER_MS, resolveQueryTimeout, tighter } from "./query-timeout" +// altimate_change start — enforce extraction byte limits while rows arrive +import { createResultByteBudget } from "./result-byte-limit" +// altimate_change end + +/** SQLSTATE for a statement cancelled by the server (statement_timeout or a manual cancel). */ +const PG_QUERY_CANCELED = "57014" + +const PG_UNIT_MS: Record = { us: 0.001, ms: 1, s: 1000, min: 60_000, h: 3_600_000, d: 86_400_000 } + +/** Parse a `SHOW statement_timeout` value ("30s", "5min", "0", "250ms") to ms; `0` means unlimited. */ +export function parsePgDuration(value: unknown): { ms: number | undefined } | undefined { + const m = /^\s*(\d+(?:\.\d+)?)\s*(us|ms|s|min|h|d)?\s*$/i.exec(String(value ?? "")) + if (!m) return undefined + const ms = Number(m[1]) * PG_UNIT_MS[(m[2] ?? "ms").toLowerCase()]! + return { ms: ms > 0 ? Math.ceil(ms) : undefined } +} + +async function acquireClient(pool: any, signal?: AbortSignal): Promise { + if (!signal) return pool.connect() + signal.throwIfAborted() + const connecting = pool.connect() + return new Promise((resolve, reject) => { + const abort = () => reject(signal.reason) + signal.addEventListener("abort", abort, { once: true }) + connecting.then( + (client: any) => { + signal.removeEventListener("abort", abort) + // pg cannot remove a queued pool.connect(): return a late client without + // issuing any SQL, even after the caller has already received its timeout. + if (signal.aborted) { + client.release() + reject(signal.reason) + return + } + resolve(client) + }, + (error: unknown) => { + signal.removeEventListener("abort", abort) + reject(error) + }, + ) + }) +} export async function connect(config: ConnectionConfig): Promise { let pg: any @@ -11,8 +56,15 @@ export async function connect(config: ConnectionConfig): Promise { const Pool = pg.default?.Pool ?? pg.Pool let pool: any + // The role/database/session default a pooled client starts each call with + // (we RESET back to it), cached until user SQL mentions statement_timeout. + // `undefined` = not read yet. + const existingTimeout = new WeakMap() const connector: Connector = { + // altimate_change start + supportsResultByteLimit: true, + // altimate_change end async connect() { const poolConfig: Record = {} @@ -44,12 +96,93 @@ export async function connect(config: ConnectionConfig): Promise { }, async execute(sql: string, limit?: number, _binds?: any[], options?: ExecuteOptions): Promise { - const client = await pool.connect() + const client = await acquireClient(pool, options?.signal) + // Tighter of the explicit statement_timeout and the common execution + // deadline: a configured limit stricter than the default is preserved. + const configured = Number(config.statement_timeout) + const configuredMs = Number.isFinite(configured) && configured > 0 ? Math.round(configured) : undefined + const queryTimeout = resolveQueryTimeout(config, options) + const ourMs = tighter(configuredMs, queryTimeout.ms) + let effectiveMs = ourMs + let timeoutApplied = false + let discardClient = false + // altimate_change start — keep source extraction inside one client's read-only transaction + let readOnlyTransaction = false + let releasedClient = false + // altimate_change end + const runQuery = async (run: () => Promise): Promise => { + const signal = options?.signal + if (!signal) return run() + signal.throwIfAborted() + let abort: (() => void) | undefined + try { + return await new Promise((resolve, reject) => { + abort = () => { + discardClient = true + if (!releasedClient) { + releasedClient = true + client.release(true) + } + reject(signal.reason) + } + signal.addEventListener("abort", abort, { once: true }) + Promise.resolve(run()).then(resolve, reject) + }) + } finally { + if (abort) signal.removeEventListener("abort", abort) + } + } try { - if (config.statement_timeout) { - const timeoutMs = Number(config.statement_timeout) - if (Number.isFinite(timeoutMs) && timeoutMs > 0) { - await client.query(`SET statement_timeout TO ${Math.round(timeoutMs)}`) + options?.signal?.throwIfAborted() + if (ourMs !== undefined) { + // Session setup runs before the user's SQL has a deadline of its own. Race each + // setup query against the effective deadline and the caller's signal; pg's promise + // API has no cancellation handle, so an abandoned client is discarded, never reused. + const signal = options?.signal + const bounded = async (run: () => Promise): Promise => { + let timer: ReturnType | undefined + let abort: (() => void) | undefined + try { + return await new Promise((resolve, reject) => { + const fail = (error: unknown) => { + discardClient = true + reject(error) + } + abort = () => fail(signal!.reason) + signal?.addEventListener("abort", abort, { once: true }) + // A caller's signal may fire only after its own grace period, or never. + timer = setTimeout( + () => fail(new QueryTimeoutError({ engine: "PostgreSQL", timeoutMs: ourMs })), + Math.min(ourMs, MAX_TIMER_MS), + ) + if (signal?.aborted) { + abort() + return + } + // Handle late settlement too, just as acquireClient does. + Promise.resolve(run()).then(resolve, reject) + }) + } finally { + if (timer !== undefined) clearTimeout(timer) + if (abort) signal?.removeEventListener("abort", abort) + } + } + // Never loosen a stricter limit the server or role already imposes. + let existing = existingTimeout.get(client) + if (existing === undefined) { + try { + const shown = await bounded(() => runQuery(() => client.query("SHOW statement_timeout"))) + existing = parsePgDuration(shown?.rows?.[0]?.statement_timeout) ?? null + } catch (error) { + if (discardClient) throw error + existing = null + } + existingTimeout.set(client, existing) + } + effectiveMs = tighter(existing?.ms, ourMs) + if (existing?.ms === undefined || ourMs < existing.ms) { + await bounded(() => runQuery(() => client.query(`SET statement_timeout TO ${ourMs}`))) + timeoutApplied = true } } @@ -65,7 +198,62 @@ export async function connect(config: ConnectionConfig): Promise { query = `${sql.replace(/;\s*$/, "")} LIMIT ${effectiveLimit + 1}` } - const result = await client.query(query) + // altimate_change start — a derived SELECT can still invoke a writing function + if (options?.readOnly) { + await runQuery(() => client.query("BEGIN READ ONLY")) + readOnlyTransaction = true + } + // altimate_change end + // The deadline can also expire while the session's timeout or read-only + // transaction is being set up. Never start the user's SQL afterwards. + options?.signal?.throwIfAborted() + // User SQL can change a stricter session timeout that we did not SET or + // RESET. Recheck it on the next call instead of trusting stale state. + // `RESET ALL` / `DISCARD ALL` clear every session setting, including statement_timeout. + if (/statement_timeout|\breset\s+all\b|\bdiscard\s+all\b/i.test(sql)) existingTimeout.delete(client) + // altimate_change start — pg Query row listeners disable pg's result-array accumulation + if (options?.maxResultBytes !== undefined) { + const consume = createResultByteBudget(options.maxResultBytes) + const Query = pg.default?.Query ?? pg.Query + return await runQuery(() => new Promise((resolve, reject) => { + const stream = new Query({ text: query, rowMode: "array" }) + const rows: unknown[][] = [] + let columns: string[] = [] + let truncated = false + let stopped = false + stream.on("row", (row: unknown[], result: { fields: { name: string }[] }) => { + if (stopped || releasedClient) return + try { + if (effectiveLimit > 0 && rows.length >= effectiveLimit) { + truncated = true + return + } + consume(row) + columns = result.fields.map((field) => field.name) + rows.push(row) + } catch (error) { + stopped = true + // Destroying the connection stops delivery and rolls back any open transaction. + discardClient = true + releasedClient = true + client.release(true) + reject(error) + } + }) + stream.on("error", (error: Error) => { + stopped = true + reject(error) + }) + stream.on("end", (result: { fields?: { name: string }[] }) => { + if (stopped) return + columns = result.fields?.map((field) => field.name) ?? columns + resolve({ columns, rows, row_count: rows.length, truncated }) + }) + client.query(stream) + })) + } + // altimate_change end + const result = await runQuery(() => client.query(query)) const columns = result.fields?.map((f: any) => f.name) ?? [] const truncated = effectiveLimit > 0 && result.rows.length > effectiveLimit const rows = truncated @@ -78,8 +266,36 @@ export async function connect(config: ConnectionConfig): Promise { row_count: rows.length, truncated, } + } catch (err: any) { + if (options?.signal?.aborted && err === options.signal.reason) throw err + // 57014 is also a manual cancel; only the message names a timeout. + if (effectiveMs !== undefined && err?.code === PG_QUERY_CANCELED && /statement timeout/i.test(String(err?.message))) { + throw new QueryTimeoutError({ engine: "PostgreSQL", timeoutMs: effectiveMs }) + } + throw err } finally { - client.release() + // altimate_change start — rollback also suppresses transaction-delayed pg_notify calls + if (readOnlyTransaction && !releasedClient) { + try { + await runQuery(() => client.query("ROLLBACK")) + } catch { + discardClient = true + } + } + // altimate_change end + // Restore the session default before the client returns to the pool, so + // one call's deadline never leaks into the next caller's query. If the + // reset fails the session state is unknown: drop the connection instead. + // altimate_change start — a byte-limit abort already discarded the connection + if (timeoutApplied && !releasedClient) { + try { + await runQuery(() => client.query("RESET statement_timeout")) + } catch { + discardClient = true + } + } + if (!releasedClient) client.release(discardClient ? true : undefined) + // altimate_change end } }, diff --git a/packages/drivers/src/query-timeout.ts b/packages/drivers/src/query-timeout.ts new file mode 100644 index 0000000000..7ea4c9915e --- /dev/null +++ b/packages/drivers/src/query-timeout.ts @@ -0,0 +1,66 @@ +/** + * Query execution deadline policy shared by every driver. + * + * Precedence (first that is set wins): + * 1. `options.queryTimeoutMs` per call + * 2. `config.query_timeout_ms` per connection + * 3. `ALTIMATE_SQL_QUERY_TIMEOUT_MS` per machine + * 4. DEFAULT_QUERY_TIMEOUT_MS + * Per-call or environment `0` uses the next configured/default deadline. + * Only connection `0`/`null` disables the deadline. Unusable values (negative, + * NaN, non-numeric) are ignored and fall through to the next source. + * + * This is the interactive execution budget only. Connection, open and + * server-selection budgets are separate and untouched. + */ + +import type { ConnectionConfig, ExecuteOptions } from "./types" + +export const DEFAULT_QUERY_TIMEOUT_MS = 120_000 +export const QUERY_TIMEOUT_ENV = "ALTIMATE_SQL_QUERY_TIMEOUT_MS" + +/** Largest delay `setTimeout` represents; larger values overflow to 1ms. */ +export const MAX_TIMER_MS = 2_147_483_647 + +export type QueryTimeoutSource = "call" | "connection" | "env" | "default" + +export interface QueryTimeout { + /** Deadline in ms, or `undefined` when disabled. */ + ms: number | undefined + source: QueryTimeoutSource +} + +type Parsed = { disabled: true } | { ms: number } | undefined + +function parse(value: unknown, allowNull: boolean): Parsed { + if (value === null) return allowNull ? { disabled: true } : undefined + if (value === undefined || value === "" || typeof value === "boolean") return undefined + const n = typeof value === "number" ? value : Number(value) + if (!Number.isFinite(n) || n < 0) return undefined + if (n === 0) return allowNull ? { disabled: true } : undefined + return { ms: Math.min(Math.round(n), MAX_TIMER_MS) } +} + +export function resolveQueryTimeout( + config: ConnectionConfig | undefined, + options?: Pick, + env: Record = globalThis.process?.env ?? {}, +): QueryTimeout { + const sources: Array<[QueryTimeoutSource, Parsed]> = [ + ["call", parse(options?.queryTimeoutMs, false)], + ["connection", parse(config?.["query_timeout_ms"], true)], + ["env", parse(env[QUERY_TIMEOUT_ENV], false)], + ] + for (const [source, parsed] of sources) { + if (!parsed) continue + return { ms: "ms" in parsed ? parsed.ms : undefined, source } + } + return { ms: DEFAULT_QUERY_TIMEOUT_MS, source: "default" } +} + +/** The tighter of two optional positive limits (`undefined` = unlimited). */ +export function tighter(a: number | undefined, b: number | undefined): number | undefined { + if (a === undefined) return b + if (b === undefined) return a + return Math.min(a, b) +} diff --git a/packages/drivers/src/result-byte-limit.ts b/packages/drivers/src/result-byte-limit.ts new file mode 100644 index 0000000000..55c00eace5 --- /dev/null +++ b/packages/drivers/src/result-byte-limit.ts @@ -0,0 +1,45 @@ +/** Serialized result size, not a process heap limit: one row/client chunk can be in flight. */ +export const RESULT_BYTE_LIMIT_CODE = "RESULT_BYTE_LIMIT" + +export class ResultByteLimitError extends Error { + readonly code = RESULT_BYTE_LIMIT_CODE + + constructor(readonly maxBytes: number) { + super(`Source result exceeds the ${maxBytes} byte result limit.`) + this.name = "ResultByteLimitError" + } +} + +export function isResultByteLimitError(error: unknown): boolean { + return typeof error === "object" && error !== null && (error as { code?: unknown }).code === RESULT_BYTE_LIMIT_CODE +} + +/** Match the materialization codec, including UTF-8, bigint, dates and binary data. */ +export function rowBytes(row: unknown[]): number { + const primitive = row.every((value) => value === null || (typeof value !== "object" && typeof value !== "bigint")) + return Buffer.byteLength( + primitive + ? JSON.stringify(row) + : JSON.stringify(row, (_key, value) => + typeof value === "bigint" + ? value.toString() + : value instanceof Uint8Array + ? Buffer.from(value).toString("hex") + : value, + ), + "utf8", + ) +} + +/** Call before retaining each row; stop/close the producer when this throws. */ +export function createResultByteBudget(maxBytes: number | undefined): (row: unknown[]) => void { + if (maxBytes !== undefined && (!Number.isSafeInteger(maxBytes) || maxBytes < 1)) { + throw new Error("maxResultBytes must be a positive safe integer") + } + let bytes = 0 + return (row) => { + if (maxBytes === undefined) return + bytes += rowBytes(row) + if (bytes > maxBytes) throw new ResultByteLimitError(maxBytes) + } +} diff --git a/packages/drivers/src/sqlite.ts b/packages/drivers/src/sqlite.ts index 3c9da882fd..f068bbf903 100644 --- a/packages/drivers/src/sqlite.ts +++ b/packages/drivers/src/sqlite.ts @@ -1,19 +1,30 @@ /** * SQLite driver using Bun's built-in `bun:sqlite`. - * Synchronous API wrapped in async interface. + * + * `bun:sqlite` is synchronous and has no interrupt, so the handle lives in a + * supervised helper process (see `local-engine.ts`) that the driver can kill to + * enforce the query execution deadline. */ -import { Database } from "bun:sqlite" -import { allowsCreate, assertStoreExists, requireStorePath } from "./file-store" +import { LocalEngine } from "./local-engine" +import * as path from "path" +import { resolveQueryTimeout } from "./query-timeout" +import { allowsCreate, assertStoreExists, isLocalFilePath, requireStorePath } from "./file-store" import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types" export async function connect(config: ConnectionConfig): Promise { // altimate_change start — a missing path must fail loudly, not become :memory: - const dbPath = requireStorePath(config, "SQLite") + const cwd = process.cwd() + const configuredPath = requireStorePath(config, "SQLite") + const dbPath = isLocalFilePath(configuredPath) ? path.resolve(cwd, configuredPath) : configuredPath // altimate_change end - let db: Database | null = null + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: dbPath, cwd }) + let opened = false return { + // altimate_change start — helper checks rows as the SQLite iterator advances + supportsResultByteLimit: true, + // altimate_change end async connect() { const isReadonly = config.readonly === true // altimate_change start — never conjure an empty store on open. @@ -21,22 +32,24 @@ export async function connect(config: ConnectionConfig): Promise { // missing file there; the guard is told the effective decision. const willCreate = !isReadonly && allowsCreate(config) assertStoreExists(config, dbPath, "SQLite", willCreate) - db = new Database(dbPath, { + await engine.open({ + path: dbPath, readonly: isReadonly, // `create` alone is no longer implied by "not readonly", so the // read-write flag has to be explicit — bun:sqlite rejects an options // object that sets no open flag at all. readwrite: !isReadonly, create: willCreate, + wal: !isReadonly, }) + engine.registerSession() + opened = true // altimate_change end - if (!isReadonly) { - db.exec("PRAGMA journal_mode = WAL") - } }, async execute(sql: string, limit?: number, _binds?: any[], options?: ExecuteOptions): Promise { - if (!db) throw new Error("SQLite connection not open") + if (!opened) throw new Error("SQLite connection not open") + const timeoutMs = resolveQueryTimeout(config, options).ms const effectiveLimit = options?.noLimit ? 0 : (limit ?? 1000) // Determine if this is a SELECT-like statement @@ -61,7 +74,15 @@ export async function connect(config: ConnectionConfig): Promise { if (!isSelect) { // Non-SELECT statements (INSERT, UPDATE, DELETE, CREATE, etc.) - const info = db.prepare(sql).run() + // altimate_change start — report dispatch so callers can order follow-up work + const info = await engine.call<{ changes: number; lastInsertRowid: number | bigint }>( + "run", + { sql }, + timeoutMs, + options?.onDispatch, + options?.signal, + ) + // altimate_change end return { columns: ["changes", "lastInsertRowid"], rows: [[info.changes, info.lastInsertRowid]], @@ -70,8 +91,9 @@ export async function connect(config: ConnectionConfig): Promise { } } - const stmt = db.prepare(query) - const rows = stmt.all() as any[] + // altimate_change start — forward the budget before the helper collects rows + const rows = await engine.call("all", { sql: query, maxResultBytes: options?.maxResultBytes }, timeoutMs, options?.onDispatch, options?.signal) + // altimate_change end const columns = rows.length > 0 ? Object.keys(rows[0]) : [] const truncated = effectiveLimit > 0 && rows.length > effectiveLimit const limitedRows = truncated ? rows.slice(0, effectiveLimit) : rows @@ -94,12 +116,14 @@ export async function connect(config: ConnectionConfig): Promise { async listTables( _schema: string, ): Promise> { - if (!db) throw new Error("SQLite connection not open") - const rows = db - .prepare( - "SELECT name, type FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ORDER BY name", - ) - .all() as any[] + if (!opened) throw new Error("SQLite connection not open") + const rows = await engine.call( + "all", + { + sql: "SELECT name, type FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ORDER BY name", + }, + resolveQueryTimeout(config).ms, + ) return rows.map((r: any) => ({ name: r.name as string, type: r.type as string, @@ -110,8 +134,12 @@ export async function connect(config: ConnectionConfig): Promise { _schema: string, table: string, ): Promise { - if (!db) throw new Error("SQLite connection not open") - const rows = db.prepare('SELECT * FROM pragma_table_info(?) ORDER BY cid').all(table) as any[] + if (!opened) throw new Error("SQLite connection not open") + const rows = await engine.call( + "all", + { sql: "SELECT * FROM pragma_table_info(?) ORDER BY cid", params: [table] }, + resolveQueryTimeout(config).ms, + ) return rows.map((r: any) => ({ name: r.name as string, data_type: r.type as string, @@ -120,9 +148,9 @@ export async function connect(config: ConnectionConfig): Promise { }, async close() { - if (db) { - db.close() - db = null + if (opened) { + opened = false + await engine.close() } }, } diff --git a/packages/drivers/src/types.ts b/packages/drivers/src/types.ts index 6bec217883..31a575514e 100644 --- a/packages/drivers/src/types.ts +++ b/packages/drivers/src/types.ts @@ -26,12 +26,110 @@ export interface SchemaMetadata { } export interface ExecuteOptions { + // altimate_change start — bounded extraction is enforced while consuming source rows + /** Serialized row byte ceiling. Requires Connector.supportsResultByteLimit. */ + maxResultBytes?: number + // altimate_change end + // altimate_change start — PostgreSQL source extraction uses a pinned, rolled-back transaction + /** PostgreSQL only: execute in a READ ONLY transaction and roll it back before releasing the client. */ + readOnly?: boolean + // altimate_change end + /** Cancel pending or active execution when the driver supports cancellation. */ + signal?: AbortSignal /** Skip the default LIMIT injection and post-truncation. Use when the caller * needs the complete, untruncated result set (e.g. data-diff pipelines). */ noLimit?: boolean + /** Execution deadline for this call, in milliseconds. `0` uses the default. + * When omitted the driver resolves one from the connection's + * `query_timeout_ms`, then `ALTIMATE_SQL_QUERY_TIMEOUT_MS`, then the + * 120 s default (see `query-timeout.ts`). */ + queryTimeoutMs?: number + /** DuckDB only: called once after handing this query to its helper; callback errors do not affect execution. */ + onDispatch?: () => void +} + +/** Stable machine-readable code carried by every query deadline failure. */ +export const QUERY_TIMEOUT_CODE = "QUERY_TIMEOUT" + +/** + * A query ran past its execution deadline. + * + * Carries a stable `code` so callers can tell a deadline from any other + * failure without parsing text, and says whether the engine actually stopped + * the work (`cancelled`) — a client-side deadline cannot always guarantee it. + */ +export class QueryTimeoutError extends Error { + readonly code = QUERY_TIMEOUT_CODE + readonly timeoutMs: number + readonly engine: string + readonly cancelled: boolean + /** Session state discarded to stop the query (temp tables, `:memory:` data). */ + readonly stateLost: boolean + + constructor(opts: { + engine: string + timeoutMs: number + cancelled?: boolean + stateLost?: boolean + detail?: string + }) { + const cancelled = opts.cancelled ?? true + super( + `${QUERY_TIMEOUT_CODE}: ${opts.engine} query exceeded the ${formatDeadline(opts.timeoutMs)} execution deadline ` + + (cancelled ? "and was cancelled. " : "and was abandoned; it may still be running on the server. ") + + (opts.detail ? `${opts.detail} ` : "") + + "Narrow the query (filters, a smaller sample, pre-aggregation) or set query_timeout_ms on the connection " + + "or ALTIMATE_SQL_QUERY_TIMEOUT_MS to allow longer runs.", + ) + this.name = "QueryTimeoutError" + this.timeoutMs = opts.timeoutMs + this.engine = opts.engine + this.cancelled = cancelled + this.stateLost = opts.stateLost ?? false + } +} + +function formatDeadline(ms: number): string { + return ms >= 1000 && ms % 1000 === 0 ? `${ms / 1000}s` : `${ms}ms` +} + +/** Duck-typed so it survives module duplication and wrapped error shapes. */ +export function isQueryTimeoutError(e: unknown): boolean { + return typeof e === "object" && e !== null && (e as { code?: unknown }).code === QUERY_TIMEOUT_CODE +} + +/** Stable code for an unexpected local helper exit, distinct from a query deadline. */ +export const LOCAL_ENGINE_PROCESS_EXITED = "LOCAL_ENGINE_PROCESS_EXITED" + +export class LocalEngineProcessError extends Error { + readonly code = LOCAL_ENGINE_PROCESS_EXITED + readonly stateLost = true + readonly engine: string + readonly exitCode: number | null + readonly signal: string | null + readonly stderr: string + + constructor(opts: { engine: string; exitCode: number | null; signal: string | null; stderr: string }) { + const cause = opts.signal ? `signal ${opts.signal}` : `exit code ${opts.exitCode ?? "unknown"}` + super(`${LOCAL_ENGINE_PROCESS_EXITED}: ${opts.engine} helper process exited unexpectedly (${cause}).` + + (opts.stderr.trim() ? ` Helper stderr: ${opts.stderr.trim()}` : "")) + this.name = "LocalEngineProcessError" + this.engine = opts.engine + this.exitCode = opts.exitCode + this.signal = opts.signal + this.stderr = opts.stderr + } +} + +/** Duck-typed so helper failures remain identifiable through wrapper boundaries. */ +export function isLocalEngineProcessError(e: unknown): boolean { + return typeof e === "object" && e !== null && (e as { code?: unknown }).code === LOCAL_ENGINE_PROCESS_EXITED } export interface Connector { + // altimate_change start — callers must fail closed when byte-bounded transfer is unavailable + readonly supportsResultByteLimit?: boolean + // altimate_change end connect(): Promise execute(sql: string, limit?: number, binds?: any[], options?: ExecuteOptions): Promise listSchemas(): Promise diff --git a/packages/drivers/test/clickhouse-unit.test.ts b/packages/drivers/test/clickhouse-unit.test.ts index ae6acbc8fa..e5e47e52d4 100644 --- a/packages/drivers/test/clickhouse-unit.test.ts +++ b/packages/drivers/test/clickhouse-unit.test.ts @@ -8,6 +8,9 @@ * - Binds parameter is silently ignored */ import { describe, test, expect, mock, beforeEach } from "bun:test" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("@clickhouse/client") // --- Mock @clickhouse/client --- diff --git a/packages/drivers/test/driver-security.test.ts b/packages/drivers/test/driver-security.test.ts index eaf354c7dc..ad8f3ccc72 100644 --- a/packages/drivers/test/driver-security.test.ts +++ b/packages/drivers/test/driver-security.test.ts @@ -7,46 +7,57 @@ * - Registry: known-unsupported DB hints, password validation */ import { describe, test, expect, mock, beforeEach, afterEach } from "bun:test" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("pg", "mongodb") // --------------------------------------------------------------------------- // DuckDB: wrapDuckDBError + lock retry +// +// The handle lives in a helper process, so these tests script the engine the +// driver talks to instead of mocking the native binding in-process. Behaviour +// that moved into the helper (a synchronous open callback) is covered against +// the real helper in local-engine.test.ts. // --------------------------------------------------------------------------- describe("DuckDB driver", () => { - function openCallback(optsOrCb: any, cb?: (err: Error | null) => void): (err: Error | null) => void { - return typeof optsOrCb === "function" ? optsOrCb : cb! + interface FakeScript { + /** One entry per open attempt: an Error to reject with, or null to succeed. */ + opens?: Array + /** Result or error for each call. */ + call?: (sql: string) => any[] | Error } - // Test wrapDuckDBError logic inline (it's a closure, so we test via connect behavior) - describe("wrapDuckDBError", () => { - test("wraps SQLITE_BUSY errors with user-friendly message", async () => { - const mockDb = { - connect: () => ({ - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(new Error("SQLITE_BUSY: database is locked"), []) - }, - }), - close: (_cb: any) => {}, - } + function fakeEngine(script: FakeScript) { + const openPayloads: any[] = [] + const engine = { + async open(payload: any) { + openPayloads.push(payload) + const outcome = script.opens?.[openPayloads.length - 1] ?? null + if (outcome) throw outcome + }, + async call(_op: string, payload: any) { + const out = script.call ? script.call(payload.sql) : [] + if (out instanceof Error) throw out + return out + }, + async close() {}, + } + return { engine, openPayloads } + } - // Mock duckdb module - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - setTimeout(() => openCallback(optsOrCb, cb)(null), 0) - } - connect() { - return mockDb.connect() - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) + async function connectorWith(config: any, script: FakeScript) { + const fake = fakeEngine(script) + const { connect } = await import("../src/duckdb") + const connector = await connect(config, { createEngine: () => fake.engine as any }) + return { connector, ...fake } + } - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: ":memory:" }) + describe("wrapDuckDBError", () => { + test("wraps SQLITE_BUSY errors with user-friendly message and preserves code and flags", async () => { + const { connector } = await connectorWith( + { type: "duckdb", path: ":memory:" }, + { call: () => Object.assign(new Error("SQLITE_BUSY: database is locked"), { code: "SQLITE_BUSY", errno: 5, retryable: true }) }, + ) await connector.connect() try { @@ -58,36 +69,17 @@ describe("DuckDB driver", () => { // DuckDB's own text names the PID holding the lock, so it must survive // being wrapped rather than being replaced by the friendly summary. expect(e.message).toContain("SQLITE_BUSY: database is locked") + expect(e).toMatchObject({ code: "SQLITE_BUSY", errno: 5, retryable: true }) } await connector.close() }) test("passes through non-lock errors unchanged", async () => { - const originalError = new Error("syntax error at position 42") - - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - setTimeout(() => openCallback(optsOrCb, cb)(null), 0) - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(originalError, []) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: ":memory:" }) + const { connector } = await connectorWith( + { type: "duckdb", path: ":memory:" }, + { call: () => new Error("syntax error at position 42") }, + ) await connector.connect() try { @@ -101,28 +93,10 @@ describe("DuckDB driver", () => { }) test("detects DUCKDB_LOCKED keyword", async () => { - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - setTimeout(() => openCallback(optsOrCb, cb)(null), 0) - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(new Error("DUCKDB_LOCKED: cannot write"), []) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: ":memory:" }) + const { connector } = await connectorWith( + { type: "duckdb", path: ":memory:" }, + { call: () => new Error("DUCKDB_LOCKED: cannot write") }, + ) await connector.connect() try { @@ -145,46 +119,16 @@ describe("DuckDB driver", () => { describe("connect retry with READ_ONLY", () => { test("retries with READ_ONLY when file DB is locked on initial connect", async () => { - let connectAttempts = 0 - const accessModes: Array = [] - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - const opts = typeof optsOrCb === "function" ? undefined : optsOrCb - const done = openCallback(optsOrCb, cb) - accessModes.push(opts?.access_mode) - connectAttempts++ - if (connectAttempts === 1 && !opts?.access_mode) { - // First attempt fails with lock error - setTimeout(() => done(new Error("DUCKDB_LOCKED: file is locked")), 0) - } else { - // READ_ONLY retry succeeds - setTimeout(() => done(null), 0) - } - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(null, [{ result: 1 }]) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: "/tmp/test.duckdb", create: true }) + const { connector, openPayloads } = await connectorWith( + { type: "duckdb", path: "/tmp/test.duckdb", create: true }, + { opens: [new Error("DUCKDB_LOCKED: file is locked"), null] }, + ) await connector.connect() - expect(connectAttempts).toBe(2) // First failed, second succeeded in READ_ONLY + expect(openPayloads.length).toBe(2) // First failed, second succeeded in READ_ONLY // The retry must specifically request READ_ONLY — two attempts alone don't // prove the lock was worked around correctly. - expect(accessModes[0]).toBeUndefined() - expect(accessModes[1]).toBe("READ_ONLY") + expect(openPayloads[0].accessMode).toBeUndefined() + expect(openPayloads[1].accessMode).toBe("READ_ONLY") await connector.close() }) @@ -194,36 +138,10 @@ describe("DuckDB driver", () => { // not contention. Wrapping it as "locked by another process" would send // the reader after a process to close and hide the real cause — and the // registry would trust that fabricated wrapper as recoverable. - let attempts = 0 - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - attempts++ - setTimeout( - () => - openCallback(optsOrCb, cb)( - new Error('IO Error: Could not set lock on file "/tmp/test.duckdb": Operation not supported'), - ), - 0, - ) - } - connect() { - return {} - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - // altimate_change start — bypass the store-existence guard for this mock: - // it never touches the real filesystem, and the test targets lock-error - // classification, not the existence check. - const connector = await connect({ type: "duckdb", path: "/tmp/test.duckdb", create: true }) - // altimate_change end + const { connector, openPayloads } = await connectorWith( + { type: "duckdb", path: "/tmp/test.duckdb", create: true }, + { opens: [new Error('IO Error: Could not set lock on file "/tmp/test.duckdb": Operation not supported')] }, + ) try { await connector.connect() @@ -234,52 +152,22 @@ describe("DuckDB driver", () => { } // And it is not treated as contention, so no read-only retry is spent. - expect(attempts).toBe(1) + expect(openPayloads.length).toBe(1) }) test("retries with READ_ONLY when the first open fails with DuckDB's real lock text", async () => { - // The other retry test drives a fabricated "DUCKDB_LOCKED: file is locked" - // string, which the driver's original `.includes("locked")` check already - // matched. Only this one uses the message DuckDB actually emits, so only - // this one would catch a regression that broke detection of a real lock - // collision on the retry path. - let attempts = 0 - const accessModes: Array = [] - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - const opts = typeof optsOrCb === "function" ? undefined : optsOrCb - const done = openCallback(optsOrCb, cb) - accessModes.push(opts?.access_mode) - attempts++ - if (attempts === 1) setTimeout(() => done(new Error(REAL_DUCKDB_LOCK_ERROR)), 0) - else setTimeout(() => done(null), 0) - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(null, [{ result: 1 }]) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - // altimate_change start — bypass the store-existence guard for this mock; - // see the identical note above. - const connector = await connect({ type: "duckdb", path: "/tmp/test.duckdb", create: true }) - // altimate_change end + // Only this test uses the message DuckDB actually emits, so only this one + // would catch a regression that broke detection of a real lock collision + // on the retry path. + const { connector, openPayloads } = await connectorWith( + { type: "duckdb", path: "/tmp/test.duckdb", create: true }, + { opens: [new Error(REAL_DUCKDB_LOCK_ERROR), null] }, + ) await connector.connect() - expect(attempts).toBe(2) - expect(accessModes[0]).toBeUndefined() - expect(accessModes[1]).toBe("READ_ONLY") + expect(openPayloads.length).toBe(2) + expect(openPayloads[0].accessMode).toBeUndefined() + expect(openPayloads[1].accessMode).toBe("READ_ONLY") await connector.close() }) @@ -289,35 +177,11 @@ describe("DuckDB driver", () => { // so there is nothing for the retry to try differently — DuckDB's file // lock is exclusive against read-only opens too. The failure must still // be *labelled* a lock, though: consumers classify it by the wrapper's - // "locked by another process" wording, and this branch used to rethrow - // DuckDB's raw text, which contains "lock" but never "locked". - let attempts = 0 - const accessModes: Array = [] - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - const opts = typeof optsOrCb === "function" ? undefined : optsOrCb - accessModes.push(opts?.access_mode) - attempts++ - setTimeout(() => openCallback(optsOrCb, cb)(new Error(REAL_DUCKDB_LOCK_ERROR)), 0) - } - connect() { - return {} - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - // altimate_change start — bypass the store-existence guard for this mock; - // see the identical note above. `create` and `readonly` are independent - // flags: `create` only controls the existence check, not access mode. - const connector = await connect({ type: "duckdb", path: "/tmp/test.duckdb", readonly: true, create: true }) - // altimate_change end + // "locked by another process" wording. + const { connector, openPayloads } = await connectorWith( + { type: "duckdb", path: "/tmp/test.duckdb", readonly: true, create: true }, + { opens: [new Error(REAL_DUCKDB_LOCK_ERROR)] }, + ) try { await connector.connect() @@ -329,29 +193,14 @@ describe("DuckDB driver", () => { } // Exactly one attempt, and it asked for READ_ONLY up front. - expect(attempts).toBe(1) - expect(accessModes).toEqual(["READ_ONLY"]) + expect(openPayloads.map((p) => p.accessMode)).toEqual(["READ_ONLY"]) }) test("does not retry in-memory DB on lock error", async () => { - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - setTimeout(() => openCallback(optsOrCb, cb)(new Error("DUCKDB_LOCKED")), 0) - } - connect() { - return {} - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: ":memory:" }) + const { connector, openPayloads } = await connectorWith( + { type: "duckdb", path: ":memory:" }, + { opens: [new Error("DUCKDB_LOCKED")] }, + ) try { await connector.connect() @@ -360,89 +209,16 @@ describe("DuckDB driver", () => { // In-memory DB should not retry, just throw the original error expect(e.message).toBe("DUCKDB_LOCKED") } + expect(openPayloads.length).toBe(1) }) - test("handles native open callback invoked synchronously", async () => { - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - openCallback(optsOrCb, cb)(null) - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(null, [{ ok: 1 }]) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: ":memory:" }) - await connector.connect() - expect(await connector.execute("SELECT 1")).toMatchObject({ columns: ["ok"], rows: [[1]], row_count: 1 }) - await connector.close() - }) - - test("retries read-only when native open synchronously reports a file lock", async () => { - let connectAttempts = 0 - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - const opts = typeof optsOrCb === "function" ? undefined : optsOrCb - const done = openCallback(optsOrCb, cb) - connectAttempts++ - done(connectAttempts === 1 && !opts?.access_mode ? new Error("DUCKDB_LOCKED: file is locked") : null) - } - connect() { - return { - all: (_sql: string, cb: (err: Error | null, rows: any[]) => void) => { - cb(null, [{ ok: 1 }]) - }, - } - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: "/tmp/sync-lock.duckdb", create: true }) - await connector.connect() - expect(connectAttempts).toBe(2) - expect(await connector.execute("SELECT 1")).toMatchObject({ columns: ["ok"], rows: [[1]], row_count: 1 }) - await connector.close() - }) - - test("propagates synchronous non-lock open errors without connecting undefined db", async () => { - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_path: string, optsOrCb: any, cb?: (err: Error | null) => void) { - openCallback(optsOrCb, cb)(new Error("catalog is corrupt")) - } - connect() { - throw new Error("should not connect") - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - - const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: "/tmp/corrupt.duckdb", create: true }) + test("propagates non-lock open errors without marking the connection open", async () => { + const { connector } = await connectorWith( + { type: "duckdb", path: "/tmp/corrupt.duckdb", create: true }, + { opens: [new Error("catalog is corrupt")] }, + ) await expect(connector.connect()).rejects.toThrow("catalog is corrupt") + await expect(connector.execute("SELECT 1")).rejects.toThrow("not open") }) }) }) @@ -460,9 +236,12 @@ describe("MongoDB driver", () => { connect: async () => {}, close: async () => {}, db: () => ({ + databaseName: "test", + listCollections: () => ({ toArray: async () => [{ name: "users", type: "collection" }] }), collection: () => ({ aggregate: () => ({ toArray: async () => [], + async *[Symbol.asyncIterator]() {}, }), find: () => ({ project: function () { return this }, @@ -470,6 +249,7 @@ describe("MongoDB driver", () => { skip: function () { return this }, limit: function () { return this }, toArray: async () => [], + async *[Symbol.asyncIterator]() {}, }), }), command: async () => ({ ok: 1 }), @@ -740,7 +520,49 @@ describe("PostgreSQL driver", () => { expect(queriesSent.some((q) => q.includes("statement_timeout") && q.includes("5000"))).toBe(true) }) - test("statement_timeout with NaN is silently skipped", async () => { + const fakePg = (shown: string, queriesSent: string[]) => + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + query: async (sql: string) => { + queriesSent.push(sql) + return sql === "SHOW statement_timeout" + ? { fields: [], rows: [{ statement_timeout: shown }] } + : { fields: [], rows: [] } + }, + release: () => {}, + } + } + }, + }, + })) + + test("a stricter server statement_timeout is never loosened by the default deadline", async () => { + const queriesSent: string[] = [] + fakePg("30s", queriesSent) + const { connect } = await import("../src/postgres") + const connector = await connect({ type: "postgres", host: "localhost", password: "test" }) + await connector.connect() + await connector.execute("SELECT 1") + expect(queriesSent).toContain("SHOW statement_timeout") + expect(queriesSent.some((q) => q.startsWith("SET statement_timeout"))).toBe(false) + }) + + test("a looser or unlimited server statement_timeout is tightened to ours", async () => { + for (const shown of ["5min", "0"]) { + const queriesSent: string[] = [] + fakePg(shown, queriesSent) + const { connect } = await import("../src/postgres") + const connector = await connect({ type: "postgres", host: "localhost", password: "test" }) + await connector.connect() + await connector.execute("SELECT 1") + expect(queriesSent).toContain("SET statement_timeout TO 120000") + } + }) + + test("statement_timeout with NaN is ignored; the default deadline applies instead", async () => { let queriesSent: string[] = [] mock.module("pg", () => ({ default: { @@ -768,10 +590,13 @@ describe("PostgreSQL driver", () => { await connector.connect() await connector.execute("SELECT 1") - expect(queriesSent.some((q) => q.includes("statement_timeout"))).toBe(false) + // The unusable value is never sent; the common 120s deadline is, and reset after. + expect(queriesSent.some((q) => q.includes("statement_timeout") && /NaN|-1|not-a-number/.test(q))).toBe(false) + expect(queriesSent).toContain("SET statement_timeout TO 120000") + expect(queriesSent).toContain("RESET statement_timeout") }) - test("statement_timeout with negative value is silently skipped", async () => { + test("statement_timeout with negative value is ignored; the default deadline applies instead", async () => { let queriesSent: string[] = [] mock.module("pg", () => ({ default: { @@ -799,7 +624,10 @@ describe("PostgreSQL driver", () => { await connector.connect() await connector.execute("SELECT 1") - expect(queriesSent.some((q) => q.includes("statement_timeout"))).toBe(false) + // The unusable value is never sent; the common 120s deadline is, and reset after. + expect(queriesSent.some((q) => q.includes("statement_timeout") && /NaN|-1|not-a-number/.test(q))).toBe(false) + expect(queriesSent).toContain("SET statement_timeout TO 120000") + expect(queriesSent).toContain("RESET statement_timeout") }) }) diff --git a/packages/drivers/test/duckdb-argv-dir.test.ts b/packages/drivers/test/duckdb-argv-dir.test.ts new file mode 100644 index 0000000000..a2f4ae3eab --- /dev/null +++ b/packages/drivers/test/duckdb-argv-dir.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, test } from "bun:test" +import { spawnSync } from "child_process" +import fs from "fs" +import os from "os" +import path from "path" + +// `altimate-code run --dir ` broke every DuckDB load in two evaluation runs +// (2026-08-31 and 2026-10-12): the duckdb package's node-pre-gyp loader parses the +// HOST process argv and treats `--dir` as its own `--directory`. The driver must not +// load the binding in the host process at all. +describe("duckdb driver with --dir in the host argv", () => { + test("opens a store and answers a query when process.argv carries --dir ", () => { + let duckdbAvailable = true + try { + require.resolve("duckdb") + } catch { + duckdbAvailable = false + } + if (!duckdbAvailable) return // optional native dependency absent: nothing to regress + + const dir = fs.mkdtempSync(path.join(os.tmpdir(), "duckdb-argv-")) + const unrelated = path.join(dir, "unrelated-run-dir") + fs.mkdirSync(unrelated) + const store = path.join(dir, "probe.duckdb") + const fixture = path.join(import.meta.dir, "fixtures", "duckdb-argv-dir.ts") + try { + const out = spawnSync(process.execPath, ["run", fixture, "--dir", unrelated, store], { + encoding: "utf8", + timeout: 120_000, + cwd: unrelated, + }) + const stdout = out.stdout.trim().split("\n").pop() ?? "" + expect(out.status, `stderr: ${out.stderr.slice(0, 2000)}`).toBe(0) + const parsed = JSON.parse(stdout) + expect(parsed.argv).toEqual(["--dir", unrelated]) + expect(parsed.rows).toHaveLength(1) + expect(String(parsed.rows[0][0])).toMatch(/^[0-9a-f]{32}$/) + expect(out.stderr).not.toContain("ENOENT") + expect(out.stderr).not.toContain("failed to load") + } finally { + fs.rmSync(dir, { recursive: true, force: true }) + } + }, 150_000) +}) diff --git a/packages/drivers/test/duckdb-persistent-secrets.test.ts b/packages/drivers/test/duckdb-persistent-secrets.test.ts new file mode 100644 index 0000000000..ab31f0721b --- /dev/null +++ b/packages/drivers/test/duckdb-persistent-secrets.test.ts @@ -0,0 +1,87 @@ +// altimate_change start — preserve ordinary DuckDB secrets without exposing them to scratch helpers +import { afterEach, describe, expect, test } from "bun:test" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { connect } from "../src/duckdb" +import type { Connector } from "../src/types" + +const connectors: Connector[] = [] +const directories: string[] = [] +const originalHome = process.env.HOME + +afterEach(async () => { + await Promise.all(connectors.splice(0).map((connector) => connector.close())) + if (originalHome === undefined) delete process.env.HOME + else process.env.HOME = originalHome + for (const directory of directories.splice(0)) fs.rmSync(directory, { recursive: true, force: true }) +}) + +function callerHome() { + const directory = fs.mkdtempSync(path.join(fs.realpathSync(os.tmpdir()), "duckdb-secrets-test-")) + directories.push(directory) + process.env.HOME = directory + return directory +} + +async function connector(sandboxDirectory?: string) { + const connection = await connect({ type: "duckdb", path: ":memory:", sandbox_directory: sandboxDirectory }) + connectors.push(connection) + await connection.connect() + return connection +} + +const secretNames = "SELECT name FROM duckdb_secrets() WHERE persistent ORDER BY name" + +describe("DuckDB persistent secrets", () => { + test("ordinary helpers load caller secrets and persist new secrets across close and timeout", async () => { + const home = callerHome() + const secretDirectory = path.join(home, ".duckdb", "stored_secrets") + const seed = await connector() + await seed.execute(`SET secret_directory = '${secretDirectory.replace(/'/g, "''")}'`) + // The built-in HTTP secret type needs neither an extension nor network access. + await seed.execute("CREATE PERSISTENT SECRET existing_fixture (TYPE http, BEARER_TOKEN 'fixture-only')") + await seed.close() + + const first = await connector() + expect((await first.execute(secretNames)).rows).toEqual([["existing_fixture"]]) + expect((await first.execute("SELECT current_setting('secret_directory')")).rows).toEqual([[secretDirectory]]) + await first.execute("CREATE PERSISTENT SECRET new_fixture (TYPE http, BEARER_TOKEN 'fixture-only')") + expect(fs.readdirSync(secretDirectory).sort()).toEqual([ + "existing_fixture.duckdb_secret", + "new_fixture.duckdb_secret", + ]) + await first.close() + + const second = await connector() + expect((await second.execute(secretNames)).rows).toEqual([["existing_fixture"], ["new_fixture"]]) + await expect( + second.execute("SELECT count(*) FROM range(100000000000) a, range(1000) b", 1, undefined, { + queryTimeoutMs: 100, + }), + ).rejects.toMatchObject({ code: "QUERY_TIMEOUT" }) + expect((await second.execute(secretNames)).rows).toEqual([["existing_fixture"], ["new_fixture"]]) + }) + + test("scratch helpers keep caller persistent secrets isolated", async () => { + const home = callerHome() + const secretDirectory = path.join(home, ".duckdb", "stored_secrets") + const seed = await connector() + await seed.execute(`SET secret_directory = '${secretDirectory.replace(/'/g, "''")}'`) + await seed.execute("CREATE PERSISTENT SECRET caller_fixture (TYPE http, BEARER_TOKEN 'fixture-only')") + await seed.close() + + const scratch = path.join(home, "scratch") + fs.mkdirSync(scratch) + const isolated = await connector(scratch) + expect((await isolated.execute(secretNames)).rows).toEqual([]) + const result = await isolated.execute( + "SELECT current_setting('secret_directory'), current_setting('temp_directory')", + ) + const [secrets, spill] = result.rows[0] + expect(secrets).toBe(path.join(path.dirname(spill), ".duckdb", "stored_secrets")) + expect(secrets).not.toBe(secretDirectory) + expect(fs.readdirSync(secretDirectory)).toEqual(["caller_fixture.duckdb_secret"]) + }) +}) +// altimate_change end diff --git a/packages/drivers/test/duckdb-schema.test.ts b/packages/drivers/test/duckdb-schema.test.ts index 6fbc227f60..3b38871f70 100644 --- a/packages/drivers/test/duckdb-schema.test.ts +++ b/packages/drivers/test/duckdb-schema.test.ts @@ -1,28 +1,40 @@ import { afterEach, describe, expect, spyOn, test } from "bun:test" -import { connect } from "../src/duckdb" -import type { Connector } from "../src/types" +import { connect, type DuckDBEngine } from "../src/duckdb" +import { LocalEngine } from "../src/local-engine" +import type { ConnectionConfig, Connector } from "../src/types" // Run in a separate process because other suites mock the DuckDB module. const duckdbTest = process.env.ALTIMATE_DUCKDB_E2E === "1" ? test : test.skip let connector: Connector | undefined -let allSpy: ReturnType | undefined -let duckdb: typeof import("duckdb") +let callSpy: ReturnType | undefined afterEach(async () => { - allSpy?.mockRestore() - allSpy = undefined + callSpy?.mockRestore() + callSpy = undefined await connector?.close() connector = undefined }) -async function open() { - duckdb = await import("duckdb").then((module) => module.default) - connector = await connect({ type: "duckdb", path: ":memory:" }) +async function open(engine?: DuckDBEngine, config: Partial = {}) { + connector = await connect( + { type: "duckdb", path: ":memory:", ...config }, + engine ? { createEngine: () => engine } : undefined, + ) await connector.connect() return connector } +function scriptedEngine(query: (sql: string, timeoutMs?: number, signal?: AbortSignal) => Promise): DuckDBEngine { + return { + async open() {}, + async call(_method, payload, timeoutMs, _onDispatch, signal) { + return await query(payload.sql as string, timeoutMs, signal) as T + }, + async close() {}, + } +} + describe("DuckDB schema introspection", () => { duckdbTest("lists each schema once and scopes tables and columns to the current catalog", async () => { const driver = await open() @@ -48,11 +60,11 @@ describe("DuckDB schema introspection", () => { for (let i = 0; i < 24; i++) { await driver.execute(`CREATE TABLE item_${i} (id INTEGER)`) } - allSpy = spyOn(duckdb.Connection.prototype, "all") + callSpy = spyOn(LocalEngine.prototype, "call") const metadata = await driver.introspectSchema!() - expect(allSpy).toHaveBeenCalledTimes(2) + expect(callSpy).toHaveBeenCalledTimes(2) expect(metadata.schemas).toEqual(["empty_schema", "main"]) expect(metadata.tables).toHaveLength(26) expect(metadata.tables.find((table) => table.name === "events")).toEqual({ @@ -84,30 +96,57 @@ describe("DuckDB schema introspection", () => { expect(metadata.tables[0].columns.at(-1)?.name).toBe("field_1099") }) - duckdbTest("rejects an already aborted introspection without querying", async () => { - const driver = await open() - allSpy = spyOn(duckdb.Connection.prototype, "all") + test("forwards query deadlines and abort signals to both bulk metadata queries", async () => { + const calls: Array<{ sql: string; timeoutMs?: number; signal?: AbortSignal }> = [] + const driver = await open(scriptedEngine(async (sql, timeoutMs, signal) => { + calls.push({ sql, timeoutMs, signal }) + return calls.length === 1 + ? [{ schema_name: "main" }] + : [{ table_schema: "main", table_name: "events", table_type: "BASE TABLE", column_name: "id", data_type: "INTEGER", is_nullable: "NO" }] + }), { query_timeout_ms: 37 }) + const controller = new AbortController() + + expect(await driver.introspectSchema!(controller.signal)).toEqual({ + schemas: ["main"], + tables: [{ schema: "main", name: "events", type: "table", columns: [{ name: "id", data_type: "INTEGER", nullable: false }] }], + }) + expect(calls).toHaveLength(2) + for (const call of calls) { + expect(call.timeoutMs).toBe(37) + expect(call.signal).toBe(controller.signal) + expect(call.sql).not.toMatch(/\bLIMIT\b/i) + } + }) + + test("rejects an already aborted introspection without querying", async () => { + const engine = scriptedEngine(async () => []) + const driver = await open(engine) + callSpy = spyOn(engine, "call") const controller = new AbortController() controller.abort(new Error("Index cancelled")) await expect(driver.introspectSchema!(controller.signal)).rejects.toThrow("Index cancelled") - expect(allSpy).not.toHaveBeenCalled() + expect(callSpy).not.toHaveBeenCalled() }) - duckdbTest("stops waiting on abort and starts no further metadata queries", async () => { - const driver = await open() - let complete: ((error: Error | null, rows: unknown[]) => void) | undefined - allSpy = spyOn(duckdb.Connection.prototype, "all").mockImplementation(function (_sql, ...args) { - complete = args.at(-1) as typeof complete - return this - }) + test("stops waiting on abort and starts no further metadata queries", async () => { + const entered = Promise.withResolvers() + let complete!: (rows: unknown[]) => void + const engine = scriptedEngine((_sql, _timeoutMs, signal) => new Promise((resolve, reject) => { + complete = resolve + signal!.addEventListener("abort", () => reject(signal!.reason), { once: true }) + entered.resolve() + })) + const driver = await open(engine) + callSpy = spyOn(engine, "call") const controller = new AbortController() const pending = driver.introspectSchema!(controller.signal) + await entered.promise controller.abort(new Error("Index cancelled")) await expect(pending).rejects.toThrow("Index cancelled") - complete!(null, [{ schema_name: "main" }]) + complete([{ schema_name: "main" }]) await Promise.resolve() - expect(allSpy).toHaveBeenCalledTimes(1) + expect(callSpy).toHaveBeenCalledTimes(1) }) }) diff --git a/packages/drivers/test/duckdb-shared-engine.test.ts b/packages/drivers/test/duckdb-shared-engine.test.ts new file mode 100644 index 0000000000..e53c1dbdeb --- /dev/null +++ b/packages/drivers/test/duckdb-shared-engine.test.ts @@ -0,0 +1,419 @@ +import { afterEach, describe, expect, test } from "bun:test" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { connect, type DuckDBEngine } from "../src/duckdb" +import type { ConnectionConfig, Connector } from "../src/types" + +const connectors: Connector[] = [] +const directories: string[] = [] + +afterEach(async () => { + await Promise.all(connectors.splice(0).map((connector) => connector.close())) + for (const directory of directories.splice(0)) fs.rmSync(directory, { recursive: true, force: true }) +}) + +function storePath() { + const directory = fs.mkdtempSync(path.join(os.tmpdir(), "duckdb-shared-engine-")) + directories.push(directory) + return path.join(directory, "warehouse.duckdb") +} + +function engineFactory(hooks: { open?: (payload: Record) => Promise; close?: () => Promise } = {}) { + const engines: Array<{ openPayloads: Record[]; closeCalls: number }> = [] + const createEngine = (): DuckDBEngine => { + const state = { openPayloads: [] as Record[], closeCalls: 0 } + engines.push(state) + return { + async open(payload) { + state.openPayloads.push(payload) + await hooks.open?.(payload) + }, + async call() { + return [{ value: 1 }] as T + }, + async close() { + state.closeCalls++ + await hooks.close?.() + }, + } + } + return { createEngine, engines } +} + +async function connectorWith( + dbPath: string, + factory: ReturnType, + config: Partial = {}, +) { + const connector = await connect({ type: "duckdb", path: dbPath, create: true, ...config }, factory) + connectors.push(connector) + return connector +} + +describe("DuckDB shared file engines", () => { + test.each([ + { name: "next call", queued: false }, + { name: "already queued", queued: true }, + ])("reports a peer's lost session once after a timeout ($name)", async ({ queued }) => { + const dbPath = storePath() + const first = await connect({ type: "duckdb", path: dbPath, create: true }) + const second = await connect({ type: "duckdb", path: dbPath, create: true }) + connectors.push(first, second) + await Promise.all([first.connect(), second.connect()]) + await second.execute("CREATE TEMP TABLE session_state AS SELECT 1 AS value") + const timedOut = first.execute( + "SELECT count(*) AS n FROM range(100000000000) a, range(1000) b", + 10, + undefined, + { queryTimeoutMs: 100 }, + ).catch((error) => error) + const next = () => second.execute("CREATE TABLE must_not_run AS SELECT 1 AS value").catch((error) => error) + const peer = queued ? next() : undefined + expect(await timedOut).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + const error = await (peer ?? next()) + expect(error).toBeInstanceOf(Error) + expect(error).toMatchObject({ stateLost: true }) + expect(error.message).toContain("temporary tables, session settings and any open transaction were discarded") + // A rejected statement must not execute, and acknowledging the loss allows + // this connector to use the replacement helper without a second rejection. + expect((await second.execute("SELECT count(*) AS n FROM information_schema.tables WHERE table_name = 'must_not_run'")).rows) + .toEqual([[0n]]) + expect((await first.execute("SELECT 42 AS answer")).rows).toEqual([[42]]) + }) + + test("rejects every statement a stateful peer queued before the shared-session restart", async () => { + const dbPath = storePath() + const first = await connect({ type: "duckdb", path: dbPath, create: true }) + const second = await connect({ type: "duckdb", path: dbPath, create: true }) + connectors.push(first, second) + await Promise.all([first.connect(), second.connect()]) + // Only state dispatched before the restart can be lost. A queued BEGIN + // alone has not established a transaction on the retired helper. + await second.execute("CREATE TEMP TABLE session_state AS SELECT 1 AS value") + const timedOut = first.execute( + "SELECT count(*) AS n FROM range(100000000000) a, range(1000) b", + 10, + undefined, + { queryTimeoutMs: 100 }, + ).catch((error) => error) + // Both statements are queued behind the timed-out query before the restart. + const begin = second.execute("BEGIN").catch((error) => error) + const write = second.execute("CREATE TABLE must_not_run_pair AS SELECT 1 AS value").catch((error) => error) + expect(await timedOut).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await begin).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(await write).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await second.execute("SELECT count(*) AS n FROM information_schema.tables WHERE table_name = 'must_not_run_pair'")).rows) + .toEqual([[0n]]) + }) + + test("runs a stateless peer's queued transaction entirely on the replacement helper", async () => { + const dbPath = storePath() + const first = await connect({ type: "duckdb", path: dbPath, create: true }) + const second = await connect({ type: "duckdb", path: dbPath, create: true }) + connectors.push(first, second) + await Promise.all([first.connect(), second.connect()]) + const results = await Promise.allSettled([ + first.execute( + "SELECT count(*) AS n FROM range(100000000000) a, range(1000) b", + 10, + undefined, + { queryTimeoutMs: 100 }, + ), + second.execute("BEGIN"), + second.execute("CREATE TABLE queued_transaction AS SELECT 7 AS value"), + second.execute("COMMIT"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT", stateLost: true } }) + for (const result of results.slice(1)) expect(result.status).toBe("fulfilled") + expect((await first.execute("SELECT value FROM queued_transaction")).rows).toEqual([[7]]) + }) + + test("coalesces eight opens while the first engine open is held at a barrier", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + const factory = engineFactory({ + open: async () => { + entered.resolve() + await release.promise + }, + }) + const dbPath = storePath() + const group = await Promise.all(Array.from({ length: 8 }, () => connectorWith(dbPath, factory))) + const opening = group.map((connector) => connector.connect()) + try { + await entered.promise + // All eight requests exist while the first open is unresolved. No helper + // may be created for the remaining seven, regardless of machine timing. + expect(factory.engines).toHaveLength(1) + expect(factory.engines[0].openPayloads).toHaveLength(1) + } finally { + release.resolve() + await Promise.all(opening) + } + expect(await Promise.all(group.map((connector) => connector.execute("SELECT 1 AS value")))) + .toEqual(Array.from({ length: 8 }, () => ({ columns: ["value"], rows: [[1]], row_count: 1, truncated: false }))) + }) + + test("creates an engine only when a connector opens", async () => { + const factory = engineFactory() + const connector = await connectorWith(storePath(), factory) + expect(factory.engines).toHaveLength(0) + await connector.close() + expect(factory.engines).toHaveLength(0) + await connector.connect() + expect(factory.engines).toHaveLength(1) + }) + + test("keeps the engine alive until the last connector closes and releases each reference once", async () => { + const factory = engineFactory() + const dbPath = storePath() + const first = await connectorWith(dbPath, factory) + const second = await connectorWith(dbPath, factory) + await Promise.all([first.connect(), first.connect(), second.connect()]) + expect(factory.engines).toHaveLength(1) + expect(factory.engines[0].openPayloads).toHaveLength(1) + await Promise.all([first.close(), first.close()]) + expect(factory.engines[0].closeCalls).toBe(0) + expect((await second.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + await expect(first.execute("SELECT 1")).rejects.toThrow("connection not open") + await Promise.all([second.close(), second.close()]) + expect(factory.engines[0].closeCalls).toBe(1) + }) + + test("waits for the last engine to finish closing before opening its replacement", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + let closing = false + let openedDuringClose = false + const factory = engineFactory({ + open: async () => { + openedDuringClose ||= closing + }, + close: async () => { + closing = true + entered.resolve() + await release.promise + closing = false + }, + }) + const dbPath = storePath() + const first = await connectorWith(dbPath, factory) + const second = await connectorWith(dbPath, factory) + await first.connect() + const closed = first.close() + await entered.promise + const opening = second.connect() + try { + await Promise.resolve() + expect(factory.engines).toHaveLength(1) + } finally { + release.resolve() + await Promise.all([closed, opening]) + } + expect(openedDuringClose).toBe(false) + expect(factory.engines).toHaveLength(2) + expect(factory.engines[0].closeCalls).toBe(1) + expect(factory.engines[1].openPayloads).toHaveLength(1) + }) + + test("evicts a failed shared open so the same connectors can retry", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + const failure = new Error("scripted open failure") + let fail = true + const factory = engineFactory({ + open: async () => { + entered.resolve() + await release.promise + if (fail) throw failure + }, + }) + const dbPath = storePath() + const first = await connectorWith(dbPath, factory) + const second = await connectorWith(dbPath, factory) + const opening = Promise.allSettled([first.connect(), second.connect()]) + try { + await entered.promise + expect(factory.engines).toHaveLength(1) + } finally { + release.resolve() + await opening + } + expect(await opening).toEqual([ + { status: "rejected", reason: failure }, + { status: "rejected", reason: failure }, + ]) + expect(factory.engines[0].closeCalls).toBe(1) + fail = false + await Promise.all([first.connect(), second.connect()]) + expect(factory.engines).toHaveLength(2) + expect(factory.engines[1].openPayloads).toHaveLength(1) + }) + + test("shares equivalent relative and absolute store paths", async () => { + const factory = engineFactory() + const dbPath = storePath() + const absolute = await connectorWith(dbPath, factory) + const relative = await connectorWith(path.relative(process.cwd(), dbPath), factory) + await Promise.all([absolute.connect(), relative.connect()]) + expect(factory.engines).toHaveLength(1) + expect(factory.engines[0].openPayloads[0].path).toBe(dbPath) + }) + + test("keeps READ_ONLY engines separate from read-write engines", async () => { + const factory = engineFactory() + const dbPath = storePath() + const writer = await connectorWith(dbPath, factory) + const reader = await connectorWith(dbPath, factory, { readonly: true }) + const otherReader = await connectorWith(dbPath, factory, { readonly: true }) + await Promise.all([writer.connect(), reader.connect(), otherReader.connect()]) + expect(factory.engines).toHaveLength(2) + expect(factory.engines.map((engine) => engine.openPayloads[0].accessMode)) + .toEqual([undefined, "READ_ONLY"]) + await writer.close() + expect(factory.engines[0].closeCalls).toBe(1) + expect(factory.engines[1].closeCalls).toBe(0) + }) + + test("a READ_ONLY retry joins the existing read-only engine and retains the other reader", async () => { + const factory = engineFactory({ + open: async (payload) => { + if (payload.accessMode !== "READ_ONLY") { + throw new Error('IO Error: Could not set lock on file "warehouse.duckdb": Conflicting lock is held in another process') + } + }, + }) + const dbPath = storePath() + const reader = await connectorWith(dbPath, factory, { readonly: true }) + const fallback = await connectorWith(dbPath, factory) + await reader.connect() + await fallback.connect() + expect(factory.engines).toHaveLength(2) + expect(factory.engines[0].openPayloads).toHaveLength(1) + expect(factory.engines[0].openPayloads[0].accessMode).toBe("READ_ONLY") + expect(factory.engines[1].openPayloads).toHaveLength(1) + expect(factory.engines[1].openPayloads[0].accessMode).toBeUndefined() + expect(factory.engines[1].closeCalls).toBe(1) + await fallback.close() + expect(factory.engines[0].closeCalls).toBe(0) + expect((await reader.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + await reader.close() + expect(factory.engines[0].closeCalls).toBe(1) + }) + + test("does not share engines across different sandbox restrictions", async () => { + const factory = engineFactory() + const dbPath = storePath() + const unrestricted = await connectorWith(dbPath, factory) + const firstSandbox = path.dirname(dbPath) + const secondSandbox = path.join(firstSandbox, "restricted") + const restricted = await connectorWith(dbPath, factory, { sandbox_directory: firstSandbox }) + const otherRestricted = await connectorWith(dbPath, factory, { sandbox_directory: secondSandbox }) + const sameRestricted = await connectorWith(dbPath, factory, { sandbox_directory: firstSandbox }) + await Promise.all([unrestricted.connect(), restricted.connect(), otherRestricted.connect(), sameRestricted.connect()]) + expect(factory.engines).toHaveLength(3) + expect(factory.engines.map((engine) => engine.openPayloads[0].sandboxDirectory)) + .toEqual([undefined, firstSandbox, secondSandbox]) + }) + + test("keeps separate in-memory databases for separate connectors", async () => { + const factory = engineFactory() + const first = await connectorWith(":memory:", factory) + const second = await connectorWith(":memory:", factory) + await Promise.all([first.connect(), second.connect()]) + expect(factory.engines).toHaveLength(2) + await first.close() + expect(factory.engines[0].closeCalls).toBe(1) + expect(factory.engines[1].closeCalls).toBe(0) + }) + + test("does not share helpers with different working directories for relative SQL paths", async () => { + const factory = engineFactory() + const dbPath = storePath() + const previousCwd = process.cwd() + let first: Connector + let second: Connector + try { + first = await connectorWith(dbPath, factory) + process.chdir(path.dirname(dbPath)) + second = await connectorWith(dbPath, factory) + } finally { + process.chdir(previousCwd) + } + await Promise.all([first.connect(), second.connect()]) + expect(factory.engines).toHaveLength(2) + }) + + test("closing a connector during a shared pending open releases only its own reference", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + const factory = engineFactory({ + open: async () => { + entered.resolve() + await release.promise + }, + }) + const dbPath = storePath() + const first = await connectorWith(dbPath, factory) + const second = await connectorWith(dbPath, factory) + const opening = [first.connect(), first.connect(), second.connect()] + await entered.promise + const closing = [first.close(), first.close()] + release.resolve() + await Promise.all([...opening, ...closing]) + expect(factory.engines).toHaveLength(1) + expect(factory.engines[0].closeCalls).toBe(0) + await expect(first.execute("SELECT 1")).rejects.toThrow("connection not open") + expect((await second.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + await second.close() + expect(factory.engines[0].closeCalls).toBe(1) + }) + + test("closing the sole connector during open releases the engine when open completes", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + const factory = engineFactory({ + open: async () => { + entered.resolve() + await release.promise + }, + }) + const connector = await connectorWith(storePath(), factory) + const opening = connector.connect() + await entered.promise + const closing = connector.close() + release.resolve() + await Promise.all([opening, closing]) + expect(factory.engines[0].closeCalls).toBe(1) + await expect(connector.execute("SELECT 1")).rejects.toThrow("connection not open") + await connector.connect() + expect(factory.engines).toHaveLength(2) + }) + + test("reconnecting the same connector waits for its pending close", async () => { + const entered = Promise.withResolvers() + const release = Promise.withResolvers() + const factory = engineFactory({ + close: async () => { + entered.resolve() + await release.promise + }, + }) + const connector = await connectorWith(storePath(), factory) + await connector.connect() + const closing = connector.close() + await entered.promise + const reopening = connector.connect() + try { + await Promise.resolve() + expect(factory.engines).toHaveLength(1) + } finally { + release.resolve() + await Promise.all([closing, reopening]) + } + expect(factory.engines).toHaveLength(2) + expect(factory.engines[0].closeCalls).toBe(1) + expect((await connector.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + }) +}) diff --git a/packages/drivers/test/file-store-guard.test.ts b/packages/drivers/test/file-store-guard.test.ts index 282afe1ebb..5c78c3815e 100644 --- a/packages/drivers/test/file-store-guard.test.ts +++ b/packages/drivers/test/file-store-guard.test.ts @@ -10,7 +10,7 @@ * unrelated cwd, run against a compiled binary — lives in * packages/opencode/test/altimate/store-path-resolution.test.ts. */ -import { describe, test, expect, mock, afterEach } from "bun:test" +import { describe, test, expect, afterEach } from "bun:test" import { Database } from "bun:sqlite" import * as fs from "fs" import * as os from "os" @@ -232,30 +232,17 @@ describe("absoluteFileUriPath", () => { describe("DuckDB driver create-on-open", () => { test("refuses to open a missing store and creates nothing", async () => { - // The real duckdb addon is an optional dependency; the guard runs before - // any Database is constructed, so a stub is enough to prove it fires first. + // The native handle lives in a helper process; reject before constructing + // that engine, rather than mocking a binding this process never imports. let constructed = false - mock.module("duckdb", () => ({ - default: { - Database: class { - constructor(_p: string, optsOrCb: any, cb?: (err: Error | null) => void) { - constructed = true - const done = typeof optsOrCb === "function" ? optsOrCb : cb! - setTimeout(() => done(null), 0) - } - connect() { - return {} - } - close(cb: any) { - if (cb) cb(null) - } - }, - }, - })) - const missing = path.join(tmp(), "absent.duckdb") const { connect } = await import("../src/duckdb") - const connector = await connect({ type: "duckdb", path: missing }) + const connector = await connect({ type: "duckdb", path: missing }, { + createEngine() { + constructed = true + throw new Error("missing-store guard should run before engine construction") + }, + }) await expect(connector.connect()).rejects.toThrow("not found") expect(constructed).toBe(false) diff --git a/packages/drivers/test/fixtures/cancel-probe-child.ts b/packages/drivers/test/fixtures/cancel-probe-child.ts new file mode 100644 index 0000000000..5179c9e112 --- /dev/null +++ b/packages/drivers/test/fixtures/cancel-probe-child.ts @@ -0,0 +1,13 @@ +// Probe child process: same long query as the worker probe, as a standalone process. +const engine = process.argv[2] +if (engine === "sqlite") { + const { Database } = await import("bun:sqlite") + const db = new Database(":memory:") + db.prepare("WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c").all() +} else { + const duckdb: any = (await import("duckdb")).default + const db = new duckdb.Database(process.argv[3] || ":memory:") + const con = db.connect() + con.all("SELECT count(*) FROM range(100000000000) a, range(1000) b", () => {}) + setInterval(() => {}, 1000) +} diff --git a/packages/drivers/test/fixtures/cancel-probe-worker.ts b/packages/drivers/test/fixtures/cancel-probe-worker.ts new file mode 100644 index 0000000000..b2eb04694c --- /dev/null +++ b/packages/drivers/test/fixtures/cancel-probe-worker.ts @@ -0,0 +1,17 @@ +// Probe worker: runs a deliberately huge query on bun:sqlite or duckdb inside a Worker. +declare var self: Worker +self.onmessage = async (e: MessageEvent) => { + const { engine } = e.data + self.postMessage({ started: true }) + if (engine === "sqlite") { + const { Database } = await import("bun:sqlite") + const db = new Database(":memory:") + db.prepare("WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c").all() + } else { + const duckdb: any = (await import("duckdb")).default + const db = new duckdb.Database(":memory:") + const con = db.connect() + con.all("SELECT count(*) FROM range(100000000000) a, range(1000) b", () => {}) + } + self.postMessage({ done: true }) +} diff --git a/packages/drivers/test/fixtures/cancel-probe.ts b/packages/drivers/test/fixtures/cancel-probe.ts new file mode 100644 index 0000000000..a5469a4b8a --- /dev/null +++ b/packages/drivers/test/fixtures/cancel-probe.ts @@ -0,0 +1,51 @@ +// Measures whether Worker.terminate() / subprocess kill stops a blocking native query. +// usage: bun cancel-probe.ts +import { spawnSync } from "node:child_process" +const [mode, engine] = process.argv.slice(2) +const here = import.meta.dir +const cpuOf = (pid: number) => Number(spawnSync("ps", ["-o", "cputime=", "-p", String(pid)]).stdout.toString().trim().split(":").reduce((a, p) => a * 60 + Number(p), 0)) +const pcpu = (pid: number) => Number(spawnSync("ps", ["-o", "%cpu=", "-p", String(pid)]).stdout.toString().trim() || "0") +const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)) +const out: any = { mode, engine } +if (mode === "worker") { + const w = new Worker(`${here}/cancel-probe-worker.ts`) + w.postMessage({ engine }) + await sleep(1500) + let ticks = 0, last = performance.now(), maxLag = 0 + const t = setInterval(() => { const n = performance.now(); maxLag = Math.max(maxLag, n - last - 20); last = n; ticks++ }, 20) + await sleep(500) + const cpuBefore = cpuOf(process.pid) + const terminateAt = performance.now() + w.terminate() + await sleep(2000) + const cpuAfter = cpuOf(process.pid) + await sleep(2000) + const cpuLater = cpuOf(process.pid) + clearInterval(t) + out.mainThreadMaxLagMs = Math.round(maxLag) + out.cpuSecsDuring2sAfterTerminate = cpuAfter - cpuBefore + out.cpuSecsDuringNext2s = cpuLater - cpuAfter + out.pcpuNow = pcpu(process.pid) + out.stoppedConsumingCpu = out.cpuSecsDuringNext2s < 0.5 + console.log(JSON.stringify(out)) + process.exit(0) +} +if (mode === "process") { + const dbfile = `${process.env.TMPDIR || "/tmp"}/cancel-probe-${process.pid}.duckdb` + const child = Bun.spawn(["bun", `${here}/cancel-probe-child.ts`, engine!, dbfile], { stdout: "ignore", stderr: "ignore" }) + await sleep(1500) + out.childCpuPctBeforeKill = pcpu(child.pid) + const t0 = performance.now() + child.kill("SIGKILL") + await child.exited + out.reapedAfterMs = Math.round(performance.now() - t0) + await sleep(300) + out.childStillAlive = spawnSync("ps", ["-p", String(child.pid)]).status === 0 + if (engine === "duckdb") { + // lock released: parent can open the same file read-write + const duckdb: any = (await import("duckdb")).default + out.lockReleased = await new Promise((res) => { const d = new duckdb.Database(dbfile, (e: any) => res(!e)) }) + } + console.log(JSON.stringify(out)) + process.exit(0) +} diff --git a/packages/drivers/test/fixtures/duckdb-argv-dir.ts b/packages/drivers/test/fixtures/duckdb-argv-dir.ts new file mode 100644 index 0000000000..a3ee6cd6f5 --- /dev/null +++ b/packages/drivers/test/fixtures/duckdb-argv-dir.ts @@ -0,0 +1,14 @@ +// Regression fixture: open a DuckDB store through the driver while this process's +// argv carries an unrelated `--dir ` flag — the shape `altimate-code run --dir` +// has. `@mapbox/node-pre-gyp` parses the host argv and abbreviation-matches `--dir` +// to its `--directory`, joining it onto the absolute addon manifest path, so loading +// the binding in a process with that argv fails with ENOENT. The parent must therefore +// never load the binding; only the helper (clean argv) may. +// usage: bun run duckdb-argv-dir.ts --dir /some/unrelated/dir +const store = process.argv[process.argv.length - 1] +const { connect } = await import("../../src/duckdb") +const c = await connect({ type: "duckdb", path: store, create: true } as any) +await c.connect() +const r = await c.execute("SELECT md5('argv-probe') AS digest") +console.log(JSON.stringify({ argv: process.argv.slice(2, -1), rows: r.rows })) +await c.close() diff --git a/packages/drivers/test/fixtures/fake-duckdb-sync.mjs b/packages/drivers/test/fixtures/fake-duckdb-sync.mjs new file mode 100644 index 0000000000..382533c04d --- /dev/null +++ b/packages/drivers/test/fixtures/fake-duckdb-sync.mjs @@ -0,0 +1,16 @@ +// Stand-in for the duckdb binding whose open callback fires synchronously, before +// the Database constructor returns (the case a naive wrapper would hang on). +export default { + Database: class { + constructor(path, optsOrCb, cb) { + const done = typeof optsOrCb === "function" ? optsOrCb : cb + this.path = path + if (path.includes("corrupt")) done(new Error("catalog is corrupt")) + else done() + } + connect() { + return { all: (sql, ...rest) => rest[rest.length - 1](null, [{ ok: 1, sql }]) } + } + close(cb) { cb && cb(null) } + }, +} diff --git a/packages/drivers/test/local-engine-abort.test.ts b/packages/drivers/test/local-engine-abort.test.ts new file mode 100644 index 0000000000..afc63a394e --- /dev/null +++ b/packages/drivers/test/local-engine-abort.test.ts @@ -0,0 +1,74 @@ +import { expect, test } from "bun:test" +import { connect as sqlite } from "../src/sqlite" +import { connect as duckdb } from "../src/duckdb" + +for (const [name, connect, sql] of [ + ["SQLite", sqlite, "WITH RECURSIVE values_cte(n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM values_cte WHERE n < 4000000000) SELECT count(*) FROM values_cte"], + ["DuckDB", duckdb, "SELECT count(*) FROM range(100000000000) a, range(1000) b"], +] as const) { + test(`${name} abort kills an active helper and rejects queued work`, async () => { + const connector = await connect({ type: name.toLowerCase(), path: ":memory:" }) + await connector.connect() + const controller = new AbortController() + const started = Promise.withResolvers() + const reason = new Error("session stopped") + const running = connector.execute(sql, 10, undefined, { + signal: controller.signal, + onDispatch: () => started.resolve(), + queryTimeoutMs: 500, + }).catch((error) => error) + try { + await started.promise + const queued = connector.execute("CREATE TABLE later(value INTEGER)").catch((error) => error) + const start = performance.now() + controller.abort(reason) + expect(await running).toBe(reason) + expect(performance.now() - start).toBeLessThan(2000) + expect(await queued).toMatchObject({ code: "SESSION_STATE_LOST" }) + expect((await connector.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + await expect(connector.execute("SELECT * FROM later")).rejects.toThrow() + } finally { + await connector.close() + } + }) + + test(`${name} abort reports lost session state on the next statement`, async () => { + const connector = await connect({ type: name.toLowerCase(), path: ":memory:" }) + await connector.connect() + const controller = new AbortController() + const started = Promise.withResolvers() + const running = connector.execute(sql, 10, undefined, { + signal: controller.signal, + onDispatch: () => started.resolve(), + queryTimeoutMs: 500, + }).catch((error) => error) + try { + await started.promise + controller.abort(new Error("session stopped")) + await running + await expect(connector.execute("SELECT 1 AS value")).rejects.toMatchObject({ code: "SESSION_STATE_LOST" }) + expect((await connector.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + } finally { + await connector.close() + } + }) + + test(`${name} cancels queued work without interrupting its active peer`, async () => { + const connector = await connect({ type: name.toLowerCase(), path: ":memory:" }) + await connector.connect() + const controller = new AbortController() + const reason = new Error("queued request stopped") + const running = connector.execute(sql, 10, undefined, { queryTimeoutMs: 300 }).catch((error) => error) + const queued = connector.execute("CREATE TABLE later(value INTEGER)", undefined, undefined, { + signal: controller.signal, + }).catch((error) => error) + controller.abort(reason) + try { + expect(await Promise.race([queued, Bun.sleep(100).then(() => "still queued")])).toBe(reason) + expect(await running).toMatchObject({ code: "QUERY_TIMEOUT" }) + await expect(connector.execute("SELECT * FROM later")).rejects.toThrow() + } finally { + await connector.close() + } + }) +} diff --git a/packages/drivers/test/local-engine-crash.test.ts b/packages/drivers/test/local-engine-crash.test.ts new file mode 100644 index 0000000000..3d6b7e49eb --- /dev/null +++ b/packages/drivers/test/local-engine-crash.test.ts @@ -0,0 +1,90 @@ +import { expect, test } from "bun:test" +import { LocalEngine } from "../src/local-engine" + +function helper(query: string) { + return new LocalEngine({ + engine: "duckdb", + label: "DuckDB", + storePath: ":memory:", + childSource: ` +import { writeSync } from "node:fs"; +import { createInterface } from "node:readline"; +for await (const line of createInterface({ input: process.stdin })) { + const message = JSON.parse(line); + if (message.op === "all") { ${query} } + process.stdout.write(JSON.stringify({ id: message.id, ok: true, result: null }) + "\\n"); +} +`, + }) +} + +test("a helper killed mid-query reports SIGKILL without assuming an out-of-memory cause", async () => { + const engine = helper('process.kill(process.pid, "SIGKILL"); await new Promise(() => {});') + try { + await engine.open({ path: ":memory:" }) + const error = await engine.call("all", { sql: "SELECT 1" }, 2_000).catch((error) => error) + expect(error).toMatchObject({ code: "LOCAL_ENGINE_PROCESS_EXITED", engine: "DuckDB", signal: "SIGKILL", stateLost: true }) + expect(error.message).toContain("DuckDB helper process") + expect(error.message).toContain("SIGKILL") + expect(error.message).not.toMatch(/out.of.memory/i) + } finally { + await engine.close() + } +}) + +test("a helper crash preserves its exit code and only a bounded stderr tail", async () => { + const engine = helper('writeSync(2, "earlier diagnostic\\n" + "x".repeat(20_000) + "\\nallocator diagnostic: é🙂\\n"); process.exit(23);') + try { + await engine.open({ path: ":memory:" }) + const error = await engine.call("all", { sql: "SELECT 1" }, 2_000).catch((error) => error) + expect(error).toMatchObject({ code: "LOCAL_ENGINE_PROCESS_EXITED", exitCode: 23, signal: null }) + expect(error.message).toContain("exit code 23") + expect(error.message).toContain("allocator diagnostic: é🙂") + expect(error.stderr).toEndWith("allocator diagnostic: é🙂\n") + expect(error.stderr.length).toBeLessThanOrEqual(8_192) + expect(error.stderr).not.toContain("earlier diagnostic") + } finally { + await engine.close() + } +}) + +test("a helper killed to enforce a deadline remains a query timeout", async () => { + const engine = helper("await new Promise(() => {});") + try { + await engine.open({ path: ":memory:" }) + const error = await engine.call("all", { sql: "SELECT 1" }, 50).catch((error) => error) + expect(error).toMatchObject({ code: "QUERY_TIMEOUT" }) + expect(error.message).not.toContain("LOCAL_ENGINE_PROCESS_EXITED") + } finally { + await engine.close() + } +}) + +test("a crashed helper reports promptly when an inherited stderr pipe stays open past the deadline", async () => { + const engine = helper(` + const descendant = Bun.spawn({ + cmd: [process.execPath, "--config=" + process.env.TMPDIR + "/bunfig.toml", "--no-env-file", "-e", "setTimeout(() => {}, 2000)"], + stdin: "ignore", stdout: "ignore", stderr: "inherit", + }); + writeSync(2, "stderr descendant " + descendant.pid + "\\n"); + process.exit(31); + `) + let descendant: number | undefined + let timer: ReturnType | undefined + try { + await engine.open({ path: ":memory:" }) + const error = await Promise.race([ + engine.call("all", { sql: "SELECT 1" }, 100).catch((error) => error), + new Promise((_, reject) => { timer = setTimeout(() => reject(new Error("Helper exit did not settle")), 1_000) }), + ]) + descendant = Number(error.stderr?.match(/stderr descendant (\d+)/)?.[1]) || undefined + expect(error).toMatchObject({ code: "LOCAL_ENGINE_PROCESS_EXITED", exitCode: 31 }) + expect(error.stderr).toContain("stderr descendant") + } finally { + if (timer) clearTimeout(timer) + if (descendant) { + try { process.kill(descendant, "SIGKILL") } catch {} + } + await engine.close() + } +}) diff --git a/packages/drivers/test/local-engine-lines.test.ts b/packages/drivers/test/local-engine-lines.test.ts new file mode 100644 index 0000000000..847cdeaf2c --- /dev/null +++ b/packages/drivers/test/local-engine-lines.test.ts @@ -0,0 +1,65 @@ +import { expect, test } from "bun:test" +import { LocalEngine } from "../src/local-engine" +import { LOCAL_ENGINE_CHILD_SOURCE } from "../src/local-engine-child-source" + +async function* chunks(text: string) { + const bytes = new TextEncoder().encode(text) + for (let offset = 0; offset < bytes.length; offset += 127) yield bytes.slice(offset, offset + 127) +} + +async function scannedCharacters(run: () => Promise) { + const original = String.prototype.indexOf + let scanned = 0 + String.prototype.indexOf = function (search, position = 0) { + if (search === "\n") scanned += this.length - position + return original.call(this, search, position) + } + try { + await run() + return scanned + } finally { + String.prototype.indexOf = original + } +} + +test("stdout reader scans fragmented Unicode JSON lines in linear work", async () => { + const value = "a🙂é".repeat(20_000) + const line = JSON.stringify({ id: 1, ok: true, result: value }) + "\n\n" + let received: unknown + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: ":memory:" }) + const scanned = await scannedCharacters(async () => { + await (engine as any).readLoop({ + proc: { stdout: chunks(line) }, + pending: { id: 1, resolve: (value: unknown) => (received = value), reject: () => {} }, + }) + }) + expect(received).toBe(value) + expect(scanned).toBeLessThan(line.length * 3) +}) + +test("stdin reader scans fragmented Unicode JSON requests in linear work", async () => { + const line = + JSON.stringify({ id: 1, op: "unknown", payload: { sql: "a🙂é".repeat(20_000) } }) + + "\n\n" + + JSON.stringify({ id: 2, op: "unknown" }) + + "\n" + const responses: any[] = [] + const execute = new Function( + "Bun", + "process", + LOCAL_ENGINE_CHILD_SOURCE.replace("(async () => {", "return (async () => {"), + ) + const scanned = await scannedCharacters(async () => { + await execute( + { stdin: { stream: () => chunks(line) } }, + { + argv: ["bun", "test", "0"], + stdout: { write: (line: string) => responses.push(JSON.parse(line)) }, + exit: () => {}, + }, + ) + }) + expect(responses.map((response) => response.id)).toEqual([1, 2]) + expect(responses.every((response) => response.error.message === "unknown op unknown")).toBe(true) + expect(scanned).toBeLessThan(line.length * 3) +}) diff --git a/packages/drivers/test/local-engine-review.test.ts b/packages/drivers/test/local-engine-review.test.ts new file mode 100644 index 0000000000..ff9c879dc5 --- /dev/null +++ b/packages/drivers/test/local-engine-review.test.ts @@ -0,0 +1,363 @@ +import { afterEach, describe, expect, test } from "bun:test" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { connect as connectDuckdb } from "../src/duckdb" +import { connect as connectSqlite } from "../src/sqlite" +import { LocalEngine, buildHelperEnv } from "../src/local-engine" +import { pack, unpack } from "../src/local-engine-codec" +import { LOCAL_ENGINE_CHILD_SOURCE } from "../src/local-engine-child-source" +import type { Connector } from "../src/types" + +const dirs: string[] = [] +const connections: Connector[] = [] +afterEach(async () => { + while (connections.length) await connections.pop()!.close() + while (dirs.length) fs.rmSync(dirs.pop()!, { recursive: true, force: true }) +}) + +describe("helper environment compatibility", () => { + test("documented Azure storage credentials pass through without unrelated Azure or startup variables", () => { + const forwarded = { + AZURE_STORAGE_CONNECTION_STRING: "DefaultEndpointsProtocol=https;AccountName=test;AccountKey=test-key", + AZURE_CLIENT_ID: "test-client", + AZURE_TENANT_ID: "test-tenant", + AZURE_CLIENT_SECRET: "test-secret", + AZURE_AUTHORITY_HOST: "https://login.microsoftonline.com", + AZURE_CLIENT_CERTIFICATE_PATH: "/caller/test-certificate.pem", + AZURE_FEDERATED_TOKEN_FILE: "/caller/test-federated-token", + } + const env = buildHelperEnv("/private/helper", { + ...forwarded, + HOME: "/caller/home", + AZURE_OPENAI_API_KEY: "test-provider-secret", + AZURE_UNRELATED_SETTING: "test-unrelated", + BUN_OPTIONS: "--preload=untrusted.js", + NODE_OPTIONS: "--require=untrusted.js", + }) + expect(env).toMatchObject(forwarded) + expect(env.AZURE_OPENAI_API_KEY).toBeUndefined() + expect(env.AZURE_UNRELATED_SETTING).toBeUndefined() + expect(env.BUN_OPTIONS).toBeUndefined() + expect(env.NODE_OPTIONS).toBeUndefined() + // Ordinary helpers keep the caller's home so file-backed cloud credentials resolve; scratch helpers stay private. + expect(env.HOME).toBe("/caller/home") + expect(env.XDG_CONFIG_HOME).toBeUndefined() + const scratch = buildHelperEnv("/private/helper", { ...forwarded, HOME: "/caller/home" }, true) + expect(scratch.HOME).toBe("/private/helper") + expect(scratch.XDG_CONFIG_HOME).toBe("/private/helper") + }) + + test("uppercase MotherDuck and both proxy cases pass through with the caller's HOME", () => { + const forwarded = { + MOTHERDUCK_TOKEN: "test-uppercase-motherduck", + HTTP_PROXY: "http://uppercase-http.invalid:8080", + HTTPS_PROXY: "http://uppercase-https.invalid:8080", + NO_PROXY: "uppercase.invalid", + http_proxy: "http://lowercase-http.invalid:8080", + https_proxy: "http://lowercase-https.invalid:8080", + no_proxy: "lowercase.invalid", + } + const env = buildHelperEnv("/private/helper", { ...forwarded, HOME: "/caller/home" }) + expect(env).toMatchObject({ ...forwarded, HOME: "/caller/home" }) + }) + + test("DuckDB inherits TZ for current_setting('TimeZone')", async () => { + const previous = process.env.TZ + process.env.TZ = "Asia/Kolkata" + try { + const connector = await connection("duckdb") + await connector.connect() + const result = await connector.execute("SELECT current_setting('TimeZone')") + expect(result.rows).toEqual([["Asia/Kolkata"]]) + } finally { + if (previous === undefined) delete process.env.TZ + else process.env.TZ = previous + } + }) + + test("DuckDB uses the caller's persistent extension directory", async () => { + const dir = projectDir() + const previous = process.env.HOME + process.env.HOME = dir + try { + const connector = await connection("duckdb") + await connector.connect() + const result = await connector.execute("SELECT current_setting('extension_directory')") + expect(result.rows).toEqual([[path.join(dir, ".duckdb", "extensions")]]) + } finally { + if (previous === undefined) delete process.env.HOME + else process.env.HOME = previous + } + }) + + test("only documented database environment variables accompany the isolated runtime", () => { + const env = buildHelperEnv("/private/helper", { + PATH: "/usr/bin", + HOME: "/caller/home", + TZ: "Asia/Kolkata", + AWS_ACCESS_KEY_ID: "test-access", + AWS_SECRET_ACCESS_KEY: "test-secret", + AWS_SESSION_TOKEN: "test-session", + AWS_PROFILE: "test-profile", + AWS_REGION: "us-east-1", + GOOGLE_APPLICATION_CREDENTIALS: "/caller/test-credentials.json", + motherduck_token: "test-motherduck", + OPENAI_API_KEY: "test-provider-secret", + ANTHROPIC_API_KEY: "test-provider-secret", + BUN_OPTIONS: "--preload=untrusted.js", + }) + expect(env.TZ).toBe("Asia/Kolkata") + expect(env.AWS_ACCESS_KEY_ID).toBe("test-access") + expect(env.AWS_SECRET_ACCESS_KEY).toBe("test-secret") + expect(env.AWS_SESSION_TOKEN).toBe("test-session") + expect(env.AWS_PROFILE).toBe("test-profile") + expect(env.AWS_REGION).toBe("us-east-1") + expect(env.GOOGLE_APPLICATION_CREDENTIALS).toBe("/caller/test-credentials.json") + expect(env.motherduck_token).toBe("test-motherduck") + expect(env.OPENAI_API_KEY).toBeUndefined() + expect(env.ANTHROPIC_API_KEY).toBeUndefined() + expect(env.BUN_OPTIONS).toBeUndefined() + expect(env.HOME).toBe("/caller/home") + }) +}) + +describe("helper returned value compatibility", () => { + test("DuckDB STRUCT values support String() formatting", async () => { + const connector = await connection("duckdb") + await connector.connect() + const result = await connector.execute("SELECT {'a':1,'b':[1,2]} AS s") + const value = result.rows[0]![0] + expect(String(value)).toBe("[object Object]") + expect(Object.getPrototypeOf(value)).toBe(Object.prototype) + expect(value).toEqual({ a: 1, b: [1, 2] }) + }) + + test.each(["sqlite", "duckdb"] as const)("%s BLOB results are Buffers", async (engine) => { + const connector = await connection(engine) + await connector.connect() + const result = await connector.execute(engine === "sqlite" ? "SELECT X'6162' AS b" : "SELECT 'ab'::BLOB AS b") + const value = result.rows[0]![0] + expect(Buffer.isBuffer(value)).toBe(true) + expect(value.toString()).toBe("ab") + }) + + test("both codecs preserve plain objects and own __proto__ without modifying prototypes", () => { + const childCodec = new Function(LOCAL_ENGINE_CHILD_SOURCE.split("// ---- orphan watchdog ----")[0] + "; return { pack, unpack }")() as { + pack: typeof pack + unpack: typeof unpack + } + for (const codec of [{ pack, unpack }, childCodec]) { + const value = JSON.parse('{"__proto__":{"polluted":true},"nested":{"$t":"obj","v":"user-value"}}') + const result = codec.unpack(JSON.parse(JSON.stringify(codec.pack(value)))) + expect(Object.getPrototypeOf(result)).toBe(Object.prototype) + expect(Object.getPrototypeOf(result.nested)).toBe(Object.prototype) + expect(Object.hasOwn(result, "__proto__")).toBe(true) + expect(result.__proto__).toEqual({ polluted: true }) + expect(result.polluted).toBeUndefined() + expect(result.nested).toEqual(value.nested) + expect(Buffer.isBuffer(codec.unpack(codec.pack(Buffer.from("ab"))))).toBe(true) + } + }) +}) + +describe("helper close cancellation", () => { + test("idle DuckDB close allows a checkpoint callback more than 500 ms to finish", async () => { + const dir = projectDir() + const sentinel = path.join(dir, "checkpoint-complete") + const modulePath = path.join(dir, "delayed-duckdb.mjs") + fs.writeFileSync(modulePath, `import * as fs from "fs"; +export default { + Database: class { + constructor(path, options, callback) { callback(null); } + connect() { return {}; } + close(callback) { + setTimeout(() => { + fs.writeFileSync(${JSON.stringify(sentinel)}, "complete"); + callback(null); + }, 800); + } + } +}; +`) + const engine = new LocalEngine({ engine: "duckdb", label: "DuckDB", storePath: ":memory:" }) + try { + await engine.open({ path: ":memory:", modulePath }, 1000) + await engine.close() + expect(fs.existsSync(sentinel)).toBe(true) + } finally { + await engine.close() + } + }) + + test.each(["sqlite", "duckdb"] as const)("%s close interrupts a running query instead of waiting in its queue", async (engine) => { + const connector = await connection(engine) + await connector.connect() + const sql = engine === "sqlite" + ? "WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c" + : "SELECT count(*) AS n FROM range(100000000000) a, range(1000) b" + // The finite query deadline keeps cleanup bounded even with the original broken close(). + const running = connector.execute(sql, 1, undefined, { queryTimeoutMs: 2500 }).then( + () => undefined, + (error) => error, + ) + await Bun.sleep(50) + const queued = connector.execute("SELECT 7").then( + () => undefined, + (error) => error, + ) + const started = performance.now() + await connector.close() + expect(performance.now() - started).toBeLessThan(1200) + expect((await running)?.message).toContain("closed") + expect((await queued)?.message).toContain("not open") + await expect(connector.execute("SELECT 1")).rejects.toThrow("not open") + await connector.connect() + expect(Number((await connector.execute("SELECT 9")).rows[0]![0])).toBe(9) + }) +}) + +function projectDir() { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), "local-engine-review-")) + dirs.push(dir) + return dir +} + +async function connection(engine: "sqlite" | "duckdb", options: Record = {}) { + const connect = engine === "sqlite" ? connectSqlite : connectDuckdb + const connector = await connect({ type: engine, path: ":memory:", create: true, ...options }) + connections.push(connector) + return connector +} + +describe("helper caller working directory", () => { + test("DuckDB connections use separate spill directories inside the private helper directory", async () => { + const dir = projectDir() + const previous = process.cwd() + const connectors: Connector[] = [] + try { + process.chdir(dir) + connectors.push(await connection("duckdb"), await connection("duckdb")) + } finally { + process.chdir(previous) + } + const spillDirectories: string[] = [] + for (const connector of connectors) { + await connector.connect() + await connector.execute("SET memory_limit = '16MB'") + const result = await connector.execute("SELECT current_setting('temp_directory')") + const spillDirectory = result.rows[0]![0] as string + expect(path.isAbsolute(spillDirectory)).toBe(true) + expect(path.basename(spillDirectory)).toMatch(/^duckdb-\d+$/) + const helperDirectory = path.dirname(spillDirectory) + expect(path.basename(helperDirectory)).toMatch(/^altimate-local-engine-/) + expect(fs.realpathSync(path.dirname(helperDirectory))).toBe(fs.realpathSync(os.tmpdir())) + if (process.platform !== "win32") expect(fs.statSync(helperDirectory).mode & 0o777).toBe(0o700) + spillDirectories.push(spillDirectory) + } + expect(new Set(spillDirectories).size).toBe(connectors.length) + expect(fs.existsSync(path.join(dir, ".tmp"))).toBe(false) + }) + + test.each(["sqlite", "duckdb"] as const)("%s guards and opens a relative store against the connector's cwd", async (engine) => { + const dir = projectDir() + const seed = await connection(engine, { path: path.join(dir, "store.db") }) + await seed.connect() + await seed.execute("CREATE TABLE kept (value INTEGER)") + await seed.execute("INSERT INTO kept VALUES (7)") + await seed.close() + const previous = process.cwd() + let connector: Connector + try { + process.chdir(dir) + connector = await connection(engine, { path: "store.db", readonly: true, create: false }) + } finally { + process.chdir(previous) + } + await connector!.connect() + expect((await connector!.execute("SELECT value FROM kept")).rows).toEqual([[7]]) + }) + + test("caller cwd does not load project Bun preloads or .env files", async () => { + const dir = projectDir() + const sentinel = path.join(dir, "PRELOAD_RAN") + fs.writeFileSync(path.join(dir, "pre.ts"), `require("fs").writeFileSync(${JSON.stringify(sentinel)}, "ran")`) + fs.writeFileSync(path.join(dir, "bunfig.toml"), 'preload = ["./pre.ts"]\n') + fs.writeFileSync(path.join(dir, ".env"), "ALTIMATE_TEST_DOTENV=from-project\n") + const engine = new LocalEngine({ + engine: "sqlite", label: "SQLite", storePath: ":memory:", cwd: dir, + childSource: `let buffer = ""; +for await (const chunk of Bun.stdin.stream()) { + buffer += new TextDecoder().decode(chunk); + let newline; + while ((newline = buffer.indexOf("\\n")) >= 0) { + const request = JSON.parse(buffer.slice(0, newline)); + buffer = buffer.slice(newline + 1); + const result = request.op === "all" ? [{ cwd: process.cwd(), dotenv: process.env.ALTIMATE_TEST_DOTENV ?? null }] : null; + process.stdout.write(JSON.stringify({ id: request.id, ok: true, result }) + "\\n"); + } +}`, + }) + try { + await engine.open({ path: ":memory:" }, 1000) + const rows = await engine.call("all", { sql: "probe" }, 1000) + expect(fs.realpathSync(rows[0].cwd)).toBe(fs.realpathSync(dir)) + expect(rows[0].dotenv).toBeNull() + expect(fs.existsSync(sentinel)).toBe(false) + } finally { + await engine.close() + } + }) + + test("DuckDB resolves relative read_csv_auto against the connector's cwd", async () => { + const dir = projectDir() + fs.writeFileSync(path.join(dir, "data.csv"), "id,name\n1,Ada\n") + const previous = process.cwd() + let connector: Connector + try { + process.chdir(dir) + connector = await connection("duckdb") + } finally { + process.chdir(previous) + } + await connector!.connect() + const result = await connector!.execute("SELECT name FROM read_csv_auto('data.csv')") + expect(result.rows).toEqual([["Ada"]]) + }) + + test.each(["sqlite", "duckdb"] as const)("%s ATTACH creates a persistent file in the connector's cwd", async (engine) => { + const dir = projectDir() + const previous = process.cwd() + let connector: Connector + try { + process.chdir(dir) + connector = await connection(engine) + } finally { + process.chdir(previous) + } + await connector!.connect() + await connector!.execute(`ATTACH '${engine}-other.db' AS other`) + await connector!.execute("CREATE TABLE other.kept (value INTEGER)") + await connector!.close() + expect(fs.existsSync(path.join(dir, `${engine}-other.db`))).toBe(true) + }) +}) + +test("helper retains default AWS profile paths and the caller's home", () => { + const env = buildHelperEnv("/private/helper", { HOME: "/caller/home", AWS_PROFILE: "analytics" }) + expect(env.HOME).toBe("/caller/home") + expect(buildHelperEnv("/private/helper", { HOME: "/caller/home" }, true).HOME).toBe("/private/helper") + expect(env.AWS_PROFILE).toBe("analytics") + expect(env.AWS_SHARED_CREDENTIALS_FILE).toBe("/caller/home/.aws/credentials") + expect(env.AWS_CONFIG_FILE).toBe("/caller/home/.aws/config") + const explicit = buildHelperEnv("/private/helper", { + USERPROFILE: "/caller/windows", + AWS_SHARED_CREDENTIALS_FILE: "/custom/credentials", + AWS_CONFIG_FILE: "/custom/config", + }) + expect(explicit.AWS_SHARED_CREDENTIALS_FILE).toBe("/custom/credentials") + expect(explicit.AWS_CONFIG_FILE).toBe("/custom/config") + expect(buildHelperEnv("/private/helper", { USERPROFILE: "/caller/windows" }).AWS_CONFIG_FILE).toBe( + "/caller/windows/.aws/config", + ) +}) diff --git a/packages/drivers/test/local-engine-spill.test.ts b/packages/drivers/test/local-engine-spill.test.ts new file mode 100644 index 0000000000..0c09177533 --- /dev/null +++ b/packages/drivers/test/local-engine-spill.test.ts @@ -0,0 +1,60 @@ +import { afterEach, expect, test } from "bun:test" +import * as fs from "fs" +import * as path from "path" +import { connect } from "../src/duckdb" +import type { Connector } from "../src/types" + +const connections: Connector[] = [] + +afterEach(async () => { + while (connections.length) await connections.pop()!.close() +}) + +async function spillingConnection() { + const connector = await connect({ type: "duckdb", path: ":memory:" }) + connections.push(connector) + await connector.connect() + await connector.execute("SET memory_limit = '16MB'") + const result = await connector.execute("SELECT current_setting('temp_directory')") + const spillDirectory = result.rows[0]![0] as string + await connector.execute( + "CREATE TABLE spilled AS SELECT i, repeat(md5(i::VARCHAR), 32) AS payload FROM range(100000) t(i)", + ) + expect(fs.readdirSync(spillDirectory).length).toBeGreaterThan(0) + const pid = Number(path.basename(spillDirectory).slice("duckdb-".length)) + return { connector, spillDirectory, pid } +} + +test("removes timed-out DuckDB spill files after exit and preserves a live helper's spill files", async () => { + const timedOut = await spillingConnection() + const live = await spillingConnection() + + await expect( + timedOut.connector.execute("SELECT count(*) FROM range(100000000000) a, range(1000) b", 10, undefined, { + queryTimeoutMs: 100, + }), + ).rejects.toMatchObject({ code: "QUERY_TIMEOUT" }) + + expect(() => process.kill(timedOut.pid, 0)).toThrow() + expect(fs.existsSync(timedOut.spillDirectory)).toBe(false) + expect(fs.readdirSync(live.spillDirectory).length).toBeGreaterThan(0) + expect((await live.connector.execute("SELECT count(*) FROM spilled")).rows).toEqual([[100000n]]) + + const restarted = await timedOut.connector.execute("SELECT current_setting('temp_directory'), 42 AS answer") + expect(restarted.rows[0]![0]).not.toBe(timedOut.spillDirectory) + expect(restarted.rows[0]![1]).toBe(42) + await live.connector.close() + expect(fs.existsSync(live.spillDirectory)).toBe(false) +}) + +test("removes DuckDB spill files after an unexpected helper exit", async () => { + const { connector, spillDirectory, pid } = await spillingConnection() + process.kill(pid, "SIGKILL") + for (let attempt = 0; attempt < 500 && fs.existsSync(spillDirectory); attempt++) await Bun.sleep(10) + expect(fs.existsSync(spillDirectory)).toBe(false) + await expect(connector.execute("SELECT 7 AS answer")).rejects.toMatchObject({ + code: "SESSION_STATE_LOST", + stateLost: true, + }) + expect((await connector.execute("SELECT 7 AS answer")).rows).toEqual([[7]]) +}) diff --git a/packages/drivers/test/local-engine.test.ts b/packages/drivers/test/local-engine.test.ts new file mode 100644 index 0000000000..f27c413a88 --- /dev/null +++ b/packages/drivers/test/local-engine.test.ts @@ -0,0 +1,955 @@ +/** + * Query execution deadlines for the file-backed engines, against the real + * helper process and the real bun:sqlite / duckdb bindings. + * + * The expensive queries are deterministic: a recursive CTE / cross join that + * would run for minutes if not stopped. + */ +import { afterEach, describe, expect, test } from "bun:test" +import { spawnSync } from "child_process" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { connect as connectSqlite } from "../src/sqlite" +import { connect as connectDuckdb } from "../src/duckdb" +import { LocalEngine, buildHelperEnv } from "../src/local-engine" +import { pack, unpack } from "../src/local-engine-codec" +import { QUERY_TIMEOUT_ENV } from "../src/query-timeout" +import type { Connector } from "../src/types" + +const FOREVER = { + sqlite: "WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c", + duckdb: "SELECT count(*) AS n FROM range(100000000000) a, range(1000) b", +} +/** Takes a measurable fraction of a second, finishes on its own. */ +const MEDIUM = { + sqlite: "WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 3000000) SELECT count(*) AS n FROM c", + duckdb: "SELECT count(*) AS n FROM range(2000000000)", +} + +const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "local-engine-test-")) +const open: Connector[] = [] +const savedEnv = process.env[QUERY_TIMEOUT_ENV] +afterEach(async () => { + while (open.length) await open.pop()!.close().catch(() => {}) + if (savedEnv === undefined) delete process.env[QUERY_TIMEOUT_ENV] + else process.env[QUERY_TIMEOUT_ENV] = savedEnv +}) + +function helperPids(): number[] { + const out = spawnSync("pgrep", ["-f", "altimate-local-engine"]).stdout.toString().trim() + return out ? out.split("\n").map(Number) : [] +} + +async function make(engine: "sqlite" | "duckdb", config: Record = {}): Promise { + const c = + engine === "sqlite" + ? await connectSqlite({ type: "sqlite", path: ":memory:", ...config }) + : await connectDuckdb({ type: "duckdb", path: ":memory:", ...config }) + await c.connect() + open.push(c) + return c +} + +async function timed(fn: () => Promise): Promise<{ ms: number; value?: T; error?: any }> { + const t = performance.now() + try { + const value = await fn() + return { ms: performance.now() - t, value } + } catch (error) { + return { ms: performance.now() - t, error } + } +} + +test("dispatch notification fires once per dispatched call and never for rejected queued calls", async () => { + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: ":memory:" }) + const dispatched: string[] = [] + try { + await engine.open({ path: ":memory:", readwrite: true, create: true }) + expect(await engine.call("all", { sql: "SELECT 1 AS value" }, 5000, () => { + dispatched.push("first") + throw new Error("observer failure must not affect the query") + })).toEqual([{ value: 1 }]) + expect(dispatched).toEqual(["first"]) + + let notify!: () => void + const started = new Promise((resolve) => { notify = resolve }) + const slow = engine.call("all", { sql: FOREVER.sqlite }, 100, () => { + dispatched.push("slow") + notify() + }).catch((error) => error) + await Promise.race([ + started, + slow.then(() => { throw new Error("Slow query settled without a dispatch notification") }), + ]) + const queued = engine.call("all", { sql: "SELECT 2 AS value" }, 5000, () => { + dispatched.push("queued") + }).catch((error) => error) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT" }) + expect(await queued).toMatchObject({ code: "SESSION_STATE_LOST" }) + expect(dispatched).toEqual(["first", "slow"]) + + expect(await engine.call("all", { sql: "SELECT 3 AS value" }, 5000, () => { + dispatched.push("fresh") + })).toEqual([{ value: 3 }]) + expect(dispatched).toEqual(["first", "slow", "fresh"]) + } finally { + await engine.close() + } +}) + +describe.each(["sqlite", "duckdb"] as const)("%s query deadline", (engine) => { + test.each([false, true])("queued stateless file reads survive a sibling timeout (readonly=%s)", async (readonly) => { + const file = path.join(tmp, `${engine}-read-queue-${crypto.randomUUID()}.db`) + const writer = await make(engine, { path: file, create: true }) + await writer.execute("CREATE TABLE kept(value INTEGER)") + await writer.execute("INSERT INTO kept VALUES (7)") + await writer.close() + open.pop() + + const reader = await make(engine, { path: file, readonly }) + await reader.execute("SELECT value FROM kept") + const calls = [ + reader.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 100 }), + reader.execute("SELECT value FROM kept", 10, undefined, { queryTimeoutMs: 1000 }), + reader.execute("WITH values_read AS (SELECT value FROM kept) SELECT value + 1 AS value FROM values_read"), + ] + const results = await Promise.allSettled(calls) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1]).toMatchObject({ status: "fulfilled", value: { rows: [[7]] } }) + expect(results[2]).toMatchObject({ status: "fulfilled", value: { rows: [[8]] } }) + }) + + test("state created after a stateless restart does not invalidate the remaining queue", async () => { + const file = path.join(tmp, `${engine}-new-state-${crypto.randomUUID()}.db`) + const c = await make(engine, { path: file, create: true }) + const results = await Promise.allSettled([ + c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 100 }), + c.execute("CREATE TEMP TABLE new_values AS SELECT 7 AS value"), + c.execute("SELECT value FROM new_values"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1].status).toBe("fulfilled") + expect(results[2]).toMatchObject({ status: "fulfilled", value: { rows: [[7]] } }) + const lost = await Promise.allSettled([ + c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 100 }), + c.execute("SELECT value FROM new_values"), + ]) + expect(lost[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(lost[1]).toMatchObject({ status: "rejected", reason: { code: "SESSION_STATE_LOST" } }) + }) + + test("a read-only connection with temporary state still rejects queued reads after a timeout", async () => { + const file = path.join(tmp, `${engine}-readonly-state-${crypto.randomUUID()}.db`) + const writer = await make(engine, { path: file, create: true }) + await writer.execute("CREATE TABLE kept(value INTEGER)") + await writer.close() + open.pop() + const reader = await make(engine, { path: file, readonly: true }) + await reader.execute("CREATE TEMP TABLE session_values AS SELECT 7 AS value") + const results = await Promise.allSettled([ + reader.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 100 }), + reader.execute("SELECT value FROM session_values"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1]).toMatchObject({ status: "rejected", reason: { code: "SESSION_STATE_LOST" } }) + expect((await reader.execute("SELECT value FROM kept")).rows).toEqual([]) + }) + + test("an expensive query stops within the deadline and reports QUERY_TIMEOUT", async () => { + const c = await make(engine) + const r = await timed(() => c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 700 })) + expect(r.value).toBeUndefined() + expect(r.error?.code).toBe("QUERY_TIMEOUT") + expect(r.error?.message).toContain("QUERY_TIMEOUT") + expect(r.error?.message).toContain(engine === "sqlite" ? "SQLite" : "DuckDB") + expect(r.error?.message).toContain("700ms") + expect(r.ms).toBeGreaterThanOrEqual(650) + expect(r.ms).toBeLessThan(3000) + }) + + test("the next query on the same connection succeeds and nothing keeps running", async () => { + const before = helperPids().length + const c = await make(engine) + await c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 500 }).catch(() => {}) + const after = await c.execute("SELECT 41 + 1 AS answer") + expect(Number(after.rows[0]![0])).toBe(42) + // exactly one live helper for this connection: the timed-out one is gone + expect(helperPids().length).toBe(before + 1) + await c.close() + await Bun.sleep(100) + expect(helperPids().length).toBe(before) + }) + + test("a timeout rejects the caller's stale queued statement with state loss and accepts fresh work", async () => { + const c = await make(engine) + const slow = c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 600 }) + const queued = c.execute("SELECT 7 AS seven", 10, undefined, { queryTimeoutMs: 5000 }) + const results = await Promise.allSettled([slow, queued]) + expect(results[0].status).toBe("rejected") + expect((results[0] as PromiseRejectedResult).reason).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(results[1].status).toBe("rejected") + expect((results[1] as PromiseRejectedResult).reason).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(Number((await c.execute("SELECT 7 AS seven")).rows[0]![0])).toBe(7) + }) + + test("a timeout rejects every queued write even without an open transaction", async () => { + const c = await make(engine, { path: path.join(tmp, `${engine}-queue-${crypto.randomUUID()}.db`), create: true }) + await c.execute("CREATE TABLE sentinel(value INTEGER)") + await c.execute("CREATE TEMP TABLE session_values(value INTEGER)") + const slow = c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 100 }).catch((error) => error) + const writes = [1, 2].map((value) => c.execute(`INSERT INTO sentinel VALUES (${value})`).catch((error) => error)) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + for (const write of writes) expect(await write).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await c.execute("SELECT value FROM sentinel")).rows).toEqual([]) + await expect(c.execute("SELECT * FROM session_values")).rejects.toThrow() + await c.execute("INSERT INTO sentinel VALUES (3)") + expect((await c.execute("SELECT value FROM sentinel")).rows).toEqual([[3]]) + }) + + test("queue wait does not count against the deadline", async () => { + const c = await make(engine) + const first = c.execute(MEDIUM[engine], 10, undefined, { queryTimeoutMs: 0 }) + // deadline shorter than the first query's runtime: only execution time counts + const second = c.execute("SELECT 1 AS one", 10, undefined, { queryTimeoutMs: 150 }) + const [a, b] = await Promise.all([first, second]) + expect(Number(a.rows[0]![0])).toBeGreaterThan(0) + expect(Number(b.rows[0]![0])).toBe(1) + }) + + test("connection query_timeout_ms applies, and the call option overrides it", async () => { + const c = await make(engine, { query_timeout_ms: 400 }) + const hit = await timed(() => c.execute(FOREVER[engine])) + expect(hit.error?.code).toBe("QUERY_TIMEOUT") + expect(hit.error?.message).toContain("400ms") + expect(hit.ms).toBeLessThan(3000) + const zero = await timed(() => c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 0 })) + expect(zero.error?.code).toBe("QUERY_TIMEOUT") + expect(zero.error?.timeoutMs).toBe(400) + const ok = await c.execute(MEDIUM[engine], 10, undefined, { queryTimeoutMs: 5000 }) + expect(Number(ok.rows[0]![0])).toBeGreaterThan(0) + }) + + test("ALTIMATE_SQL_QUERY_TIMEOUT_MS applies; connection value 0 / null disables it", async () => { + process.env[QUERY_TIMEOUT_ENV] = "100" + const viaEnv = await make(engine) + const hit = await timed(() => viaEnv.execute(MEDIUM[engine])) + expect(hit.error?.code).toBe("QUERY_TIMEOUT") + for (const disabled of [0, null]) { + const c = await make(engine, { query_timeout_ms: disabled }) + const ok = await c.execute(MEDIUM[engine]) + expect(Number(ok.rows[0]![0])).toBeGreaterThan(0) + } + }) + + test("a timed-out in-memory connection says its state was lost and starts empty", async () => { + const c = await make(engine) + await c.execute("CREATE TABLE keep(x INTEGER)") + const r = await timed(() => c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 400 })) + expect(r.error?.stateLost).toBe(true) + expect(r.error?.message).toContain("in-memory database was emptied") + await expect(c.execute("SELECT * FROM keep")).rejects.toThrow() + }) + + test("table state survives within the session and file data survives a timeout", async () => { + const file = path.join(tmp, `${engine}-persist-${process.pid}.db`) + const c = await make(engine, { path: file, create: true }) + await c.execute("CREATE TABLE kept(x INTEGER)") + await c.execute("INSERT INTO kept VALUES (1), (2)") + expect((await c.execute("SELECT count(*) AS n FROM kept")).rows[0]![0]).toEqual(engine === "duckdb" ? 2n : 2) + const r = await timed(() => c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 500 })) + expect(r.error?.code).toBe("QUERY_TIMEOUT") + expect(r.error?.message).not.toContain("in-memory") + expect(Number((await c.execute("SELECT count(*) AS n FROM kept")).rows[0]![0])).toBe(2) + }) + + test("a read-only store times out, recovers, and still rejects writes", async () => { + const file = path.join(tmp, `${engine}-ro-${process.pid}.db`) + const writer = await make(engine, { path: file, create: true }) + await writer.execute("CREATE TABLE t(x INTEGER)") + await writer.execute("INSERT INTO t VALUES (1)") + await writer.close() + open.pop() + + const ro = await make(engine, { path: file, readonly: true }) + const r = await timed(() => ro.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 500 })) + expect(r.error?.code).toBe("QUERY_TIMEOUT") + expect(Number((await ro.execute("SELECT count(*) AS n FROM t")).rows[0]![0])).toBe(1) + await expect(ro.execute("INSERT INTO t VALUES (2)")).rejects.toThrow() + }) + + test("killing the helper on timeout releases the store for another connection", async () => { + const file = path.join(tmp, `${engine}-lock-${process.pid}.db`) + const c = await make(engine, { path: file, create: true }) + await c.execute("CREATE TABLE t(x INTEGER)") + const r = await timed(() => c.execute(FOREVER[engine], 10, undefined, { queryTimeoutMs: 500 })) + expect(r.error?.code).toBe("QUERY_TIMEOUT") + // c has not yet reopened (lazy), so a second read-write connection can open the file + const other = await make(engine, { path: file }) + expect(Number((await other.execute("SELECT count(*) AS n FROM t")).rows[0]![0])).toBe(0) + }) + + test("the deadline timer is cleared when a query finishes", async () => { + const c = await make(engine) + for (let i = 0; i < 3; i++) await c.execute("SELECT 1", 10, undefined, { queryTimeoutMs: 300 }) + await Bun.sleep(450) // would have killed the session if a timer leaked + expect(Number((await c.execute("SELECT 5 AS five")).rows[0]![0])).toBe(5) + }) +}) + +describe("sqlite session restart disclosure", () => { + test.each(["BEGIN", "/* transaction */ SAVEPOINT pending_write"])( + "rejects every queued write when the timed-out caller loses an open transaction (%s)", + async (begin) => { + const c = await make("sqlite", { path: path.join(tmp, `sqlite-transaction-${crypto.randomUUID()}.db`), create: true }) + await c.execute("CREATE TABLE sentinel(value INTEGER)") + await c.execute(begin) + await c.execute("INSERT INTO sentinel VALUES (1)") + const slow = c.execute(FOREVER.sqlite, 10, undefined, { queryTimeoutMs: 100 }).catch((error) => error) + const writes = [2, 3].map((value) => c.execute(`INSERT INTO sentinel VALUES (${value})`).catch((error) => error)) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + for (const write of writes) { + expect(await write).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + } + // Neither the rolled-back write nor either queued write may survive in autocommit. + expect((await c.execute("SELECT value FROM sentinel")).rows).toEqual([]) + await c.execute("INSERT INTO sentinel VALUES (4)") + expect((await c.execute("SELECT value FROM sentinel")).rows).toEqual([[4]]) + }, + ) + + test.each(["COMMIT", "ROLLBACK"])("rejects the timeout caller's stale queued statements even after %s", async (end) => { + const c = await make("sqlite") + await c.execute("BEGIN") + await c.execute(end) + const slow = c.execute(FOREVER.sqlite, 10, undefined, { queryTimeoutMs: 100 }).catch((error) => error) + const queued = c.execute("SELECT 7 AS seven").catch((error) => error) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await queued).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await c.execute("SELECT 7 AS seven")).rows).toEqual([[7]]) + }) + + test("rejects stale queued statements after SQLite implicitly rolls back a failed statement", async () => { + const c = await make("sqlite") + await c.execute("CREATE TABLE unique_values(value INTEGER UNIQUE)") + await c.execute("INSERT INTO unique_values VALUES (1)") + await c.execute("BEGIN") + await expect(c.execute("INSERT OR ROLLBACK INTO unique_values VALUES (1)")).rejects.toThrow() + const slow = c.execute(FOREVER.sqlite, 10, undefined, { queryTimeoutMs: 100 }).catch((error) => error) + const queued = c.execute("SELECT 7 AS seven").catch((error) => error) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await queued).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await c.execute("SELECT 7 AS seven")).rows).toEqual([[7]]) + }) + + test.each([ + { name: "next call", queued: false }, + { name: "already queued", queued: true }, + ])("reports a SQLite engine peer's lost session once after a timeout ($name)", async ({ queued }) => { + const file = path.join(tmp, `sqlite-peer-${crypto.randomUUID()}.db`) + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: file }) + try { + await engine.open({ path: file, readwrite: true, create: true }) + await engine.call("run", { sql: "CREATE TABLE sentinel(value INTEGER)", connectionId: 2 }) + const slow = engine.call("all", { sql: FOREVER.sqlite, connectionId: 1 }, 100).catch((error) => error) + const write = () => engine.call("run", { sql: "INSERT INTO sentinel VALUES (1)", connectionId: 2 }).catch((error) => error) + const peer = queued ? write() : undefined + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await (peer ?? write())).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(await engine.call("all", { sql: "SELECT value FROM sentinel", connectionId: 2 })).toEqual([]) + expect(await engine.call("all", { sql: "SELECT 42 AS answer", connectionId: 1 })).toEqual([{ answer: 42 }]) + } finally { + await engine.close() + } + }) + + test("rejects every statement a SQLite engine peer queued before the session restart", async () => { + const file = path.join(tmp, `sqlite-peer-queue-${crypto.randomUUID()}.db`) + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: file }) + try { + await engine.open({ path: file, readwrite: true, create: true }) + await engine.call("run", { sql: "CREATE TABLE sentinel(value INTEGER)", connectionId: 2 }) + const slow = engine.call("all", { sql: FOREVER.sqlite, connectionId: 1 }, 100).catch((error) => error) + const begin = engine.call("run", { sql: "BEGIN", connectionId: 2 }).catch((error) => error) + const write = engine.call("run", { sql: "INSERT INTO sentinel VALUES (1)", connectionId: 2 }).catch((error) => error) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await begin).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(await write).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(await engine.call("all", { sql: "SELECT value FROM sentinel", connectionId: 2 })).toEqual([]) + } finally { + await engine.close() + } + }) + + test("rejects all three peer writes enqueued after restart before state-loss acknowledgement", async () => { + const file = path.join(tmp, `sqlite-peer-disclosure-${crypto.randomUUID()}.db`) + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: file }) + try { + await engine.open({ path: file, readwrite: true, create: true }) + await engine.call("run", { sql: "CREATE TABLE sentinel(value INTEGER)", connectionId: 2 }) + await expect(engine.call("all", { sql: FOREVER.sqlite, connectionId: 1 }, 100)) + .rejects.toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + + // Enqueue the entire burst before the first rejection acknowledges the restart. + const writes = [1, 2, 3].map((value) => + engine.call("run", { sql: `INSERT INTO sentinel VALUES (${value})`, connectionId: 2 }), + ) + const settled = Promise.allSettled(writes) + await expect(writes[0]).rejects.toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + const fresh = engine.call("all", { sql: "SELECT value FROM sentinel", connectionId: 2 }) + const results = await settled + expect(await fresh).toEqual([]) + for (const result of results) { + expect(result.status).toBe("rejected") + expect((result as PromiseRejectedResult).reason).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + } + } finally { + await engine.close() + } + }) +}) + +describe("duckdb concurrent stores", () => { + test.each([ + ["SET GLOBAL", "default_null_order = 'NULLS_FIRST'"], + ["PRAGMA", "default_null_order = 'NULLS_FIRST'"], + ])("helper-wide %s settings preserve state-loss disclosure for otherwise stateless peers", async (statement, setting) => { + const file = path.join(tmp, `duckdb-shared-setting-${crypto.randomUUID()}.db`) + const caller = await make("duckdb", { path: file, create: true }) + const peer = await make("duckdb", { path: file }) + await caller.execute(`${statement} ${setting}`) + expect((await peer.execute("SELECT value FROM (VALUES (1), (NULL)) t(value) ORDER BY value")).rows).toEqual([[null], [1]]) + const results = await Promise.allSettled([ + caller.execute(FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 100 }), + peer.execute("SELECT value FROM (VALUES (1), (NULL)) t(value) ORDER BY value"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1]).toMatchObject({ status: "rejected", reason: { code: "SESSION_STATE_LOST" } }) + }) + + test("a helper-wide secret preserves state-loss disclosure for otherwise stateless peers", async () => { + const file = path.join(tmp, `duckdb-shared-secret-${crypto.randomUUID()}.db`) + const caller = await make("duckdb", { path: file, create: true }) + const peer = await make("duckdb", { path: file }) + await caller.execute("CREATE OR REPLACE SECRET shared_secret (TYPE http, BEARER_TOKEN 'x')") + const results = await Promise.allSettled([ + caller.execute(FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 100 }), + peer.execute("SELECT 1 AS value"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1]).toMatchObject({ status: "rejected", reason: { code: "SESSION_STATE_LOST" } }) + }) + + test("a stateless peer keeps queued reads when another connection loses temporary state", async () => { + const file = path.join(tmp, `duckdb-peer-reads-${crypto.randomUUID()}.db`) + const caller = await make("duckdb", { path: file, create: true }) + const peer = await make("duckdb", { path: file }) + await caller.execute("CREATE TEMP TABLE session_values AS SELECT 7 AS value") + const results = await Promise.allSettled([ + caller.execute(FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 100 }), + peer.execute("SELECT 7 AS value"), + peer.execute("SELECT 8 AS value"), + caller.execute("SELECT value FROM session_values"), + ]) + expect(results[0]).toMatchObject({ status: "rejected", reason: { code: "QUERY_TIMEOUT" } }) + expect(results[1]).toMatchObject({ status: "fulfilled", value: { rows: [[7]] } }) + expect(results[2]).toMatchObject({ status: "fulfilled", value: { rows: [[8]] } }) + expect(results[3]).toMatchObject({ status: "rejected", reason: { code: "SESSION_STATE_LOST" } }) + }) + + test("rejects all three peer writes enqueued after restart before state-loss acknowledgement", async () => { + const file = path.join(tmp, `duckdb-peer-disclosure-${crypto.randomUUID()}.db`) + const caller = await make("duckdb", { path: file, create: true }) + const peer = await make("duckdb", { path: file }) + await peer.execute("CREATE TABLE sentinel(value INTEGER)") + await expect(caller.execute(FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 100 })) + .rejects.toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + + // No await between these calls: all three precede the peer's acknowledgement. + const writes = [1, 2, 3].map((value) => peer.execute(`INSERT INTO sentinel VALUES (${value})`)) + const settled = Promise.allSettled(writes) + await expect(writes[0]).rejects.toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + const fresh = peer.execute("SELECT value FROM sentinel") + const results = await settled + expect((await fresh).rows).toEqual([]) + for (const result of results) { + expect(result.status).toBe("rejected") + expect((result as PromiseRejectedResult).reason).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + } + }) + + test.each([ + { name: "separate statement", batch: false }, + { name: "within batch", batch: true }, + ])("rejects queued writes after its own timeout loses a DuckDB transaction ($name)", async ({ batch }) => { + const c = await make("duckdb", { path: path.join(tmp, `duckdb-transaction-${crypto.randomUUID()}.db`), create: true }) + await c.execute("CREATE TABLE sentinel(value INTEGER)") + // Transaction batches with quoted text and comments follow the same restart rule. + const begin = "SELECT 'λ; BEGIN'; /* outer /* nested */ comment */ START TRANSACTION" + if (!batch) await c.execute(begin, undefined, undefined, { noLimit: true }) + const slow = c.execute(batch ? `${begin}; ${FOREVER.duckdb}` : FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 100 }) + .catch((error) => error) + const writes = [1, 2].map((value) => c.execute(`INSERT INTO sentinel VALUES (${value})`).catch((error) => error)) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + for (const write of writes) expect(await write).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await c.execute("SELECT value FROM sentinel")).rows).toEqual([]) + }) + + test.each(["COMMIT", "ROLLBACK"])("rejects DuckDB's timeout caller stale queue even after %s", async (end) => { + const c = await make("duckdb") + await c.execute("BEGIN") + await c.execute(end) + const slow = c.execute(`SELECT 'λ; BEGIN', $$START TRANSACTION;$$; ${FOREVER.duckdb}`, 10, undefined, { queryTimeoutMs: 100 }) + .catch((error) => error) + const queued = c.execute("SELECT 7 AS seven").catch((error) => error) + expect(await slow).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(await queued).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect((await c.execute("SELECT 7 AS seven")).rows).toEqual([[7]]) + }) + + test("two read-only connections share one store, each with its own deadline", async () => { + const file = path.join(tmp, `shared-${process.pid}.duckdb`) + const w = await make("duckdb", { path: file, create: true }) + await w.execute("CREATE TABLE t AS SELECT 1 AS x") + await w.close() + open.pop() + const a = await make("duckdb", { path: file, readonly: true }) + const b = await make("duckdb", { path: file, readonly: true }) + // Both native sessions share a helper; a stateless peer can reopen directly. + const killed = await timed(() => a.execute(FOREVER.duckdb, 10, undefined, { queryTimeoutMs: 400 })) + expect(killed.error?.code).toBe("QUERY_TIMEOUT") + expect(Number((await b.execute("SELECT count(*) AS n FROM t")).rows[0]![0])).toBe(1) + }) +}) + +describe("helper process", () => { + test("values DuckDB returns cross the process boundary intact", async () => { + const c = await make("duckdb") + const r = await c.execute( + "SELECT 12345678901234567890::HUGEINT AS big, TIMESTAMP '2024-05-06 07:08:09' AS ts, DATE '2024-01-02' AS d, " + + "[1,2,3] AS arr, {'k': 'v'} AS st, 1.25::DOUBLE AS f, NULL AS nul, 'héllo' AS s, 'ab'::BLOB AS bl", + ) + const row = Object.fromEntries(r.columns.map((col, i) => [col, r.rows[0]![i]])) + expect(row.big).toBe(12345678901234567890n) + expect(row.ts).toBeInstanceOf(Date) + expect((row.ts as Date).toISOString()).toBe("2024-05-06T07:08:09.000Z") + expect(row.d).toBeInstanceOf(Date) + expect((row.arr as any[]).map(Number)).toEqual([1, 2, 3]) + expect(row.st).toEqual({ k: "v" }) + expect(row.f).toBe(1.25) + expect(row.nul).toBeNull() + expect(row.s).toBe("héllo") + expect(row.bl).toBeInstanceOf(Uint8Array) + }) + + test("codec round-trips the types it tags", () => { + const value = { + b: 10n ** 20n, + d: new Date("2024-01-01T00:00:00Z"), + bytes: new Uint8Array([1, 2, 255]), + nan: NaN, + inf: Infinity, + nested: [{ $t: "user-key", x: 1 }], + } + const back = unpack(JSON.parse(JSON.stringify(pack(value)))) + expect(back.b).toBe(10n ** 20n) + expect(back.d.toISOString()).toBe("2024-01-01T00:00:00.000Z") + expect(Array.from(back.bytes)).toEqual([1, 2, 255]) + expect(Number.isNaN(back.nan)).toBe(true) + expect(back.inf).toBe(Infinity) + expect(back.nested).toEqual([{ $t: "user-key", x: 1 }]) + }) + + test("an open callback that fires synchronously still settles", async () => { + const engine = new LocalEngine({ engine: "duckdb", label: "DuckDB", storePath: "/tmp/x.duckdb" }) + const modulePath = path.join(import.meta.dir, "fixtures", "fake-duckdb-sync.mjs") + await engine.open({ path: "/tmp/x.duckdb", modulePath }, 5000) + const rows = await engine.call("all", { sql: "SELECT 1" }, 5000) + expect(rows[0].ok).toBe(1) + await engine.close() + }) + + test("a synchronous open error is reported, not swallowed", async () => { + const engine = new LocalEngine({ engine: "duckdb", label: "DuckDB", storePath: "/tmp/corrupt.duckdb" }) + const modulePath = path.join(import.meta.dir, "fixtures", "fake-duckdb-sync.mjs") + await expect(engine.open({ path: "/tmp/corrupt.duckdb", modulePath }, 5000)).rejects.toThrow("catalog is corrupt") + await engine.close() + }) + + test("a helper that dies mid-session is replaced on the next call", async () => { + const c = await make("sqlite") + await c.execute("SELECT 1") + for (const pid of helperPids()) { + // only helpers whose parent is this test process + const ppid = spawnSync("ps", ["-o", "ppid=", "-p", String(pid)]).stdout.toString().trim() + if (Number(ppid) === process.pid) process.kill(pid, "SIGKILL") + } + await Bun.sleep(100) + // the crash may surface once or the call may transparently reopen; the connection must work again after + await c.execute("SELECT 1").catch(() => {}) + expect(Number((await c.execute("SELECT 2 AS two")).rows[0]![0])).toBe(2) + }) + + test("a helper crash rejects every queued peer call before accepting fresh work", async () => { + const engine = new LocalEngine({ + engine: "sqlite", label: "SQLite", storePath: ":memory:", + childSource: `let buffer = ""; +for await (const chunk of Bun.stdin.stream()) { + buffer += new TextDecoder().decode(chunk); + let newline; + while ((newline = buffer.indexOf("\\n")) >= 0) { + const request = JSON.parse(buffer.slice(0, newline)); + buffer = buffer.slice(newline + 1); + if (request.payload.sql === "crash") process.exit(1); + process.stdout.write(JSON.stringify({ id: request.id, ok: true, result: [{ value: 1 }] }) + "\\n"); + } +}`, + }) + try { + await engine.open({ path: ":memory:" }) + // An idle connector also needs one disclosure even without prior SQL. + engine.registerSession(3) + await engine.call("all", { sql: "ready", connectionId: 2 }) + const crash = engine.call("all", { sql: "crash", connectionId: 1 }).catch((error) => error) + const queued = ["first", "second"].map((sql) => engine.call("all", { sql, connectionId: 2 }).catch((error) => error)) + expect((await crash).message).toContain("exited unexpectedly") + for (const call of queued) expect(await call).toMatchObject({ code: "SESSION_STATE_LOST", stateLost: true }) + expect(await engine.call("all", { sql: "fresh", connectionId: 2 })).toEqual([{ value: 1 }]) + await expect(engine.call("all", { sql: "first", connectionId: 3 })).rejects.toMatchObject({ + code: "SESSION_STATE_LOST", stateLost: true, + }) + expect(await engine.call("all", { sql: "fresh", connectionId: 3 })).toEqual([{ value: 1 }]) + } finally { + await engine.close() + } + }) + + test("a helper orphaned by a killed parent ends itself", async () => { + const script = path.join(tmp, "orphan-parent.ts") + fs.writeFileSync( + script, + `import { connect } from ${JSON.stringify(path.join(import.meta.dir, "../src/sqlite"))} +const c = await connect({ type: "sqlite", path: ":memory:" }) +await c.connect() +console.log("READY") +c.execute(${JSON.stringify(FOREVER.sqlite)}, 1, undefined, { queryTimeoutMs: 0 }).catch(() => {}) +setInterval(() => {}, 1000) +`, + ) + const parent = Bun.spawn(["bun", script], { stdout: "pipe", stderr: "ignore" }) + try { + const reader = parent.stdout.getReader() + await reader.read() // READY + await Bun.sleep(600) + const childPid = Number( + spawnSync("pgrep", ["-P", String(parent.pid)]).stdout.toString().trim().split("\n")[0], + ) + expect(childPid).toBeGreaterThan(0) + parent.kill("SIGKILL") + await parent.exited + let alive = true + for (let i = 0; i < 50 && alive; i++) { + await Bun.sleep(100) + alive = spawnSync("ps", ["-p", String(childPid)]).status === 0 + } + expect(alive).toBe(false) + } finally { + // An unavailable pgrep/ps must not leave the probe's expensive query running. + parent.kill("SIGKILL") + await parent.exited + } + }) +}) + +describe("helper isolation", () => { + test("a project bunfig.toml preload never runs in the helper, and relative store paths still resolve", async () => { + const project = fs.mkdtempSync(path.join(tmp, "project-")) + const sentinel = path.join(project, "PRELOAD_RAN") + fs.writeFileSync(path.join(project, "pre.ts"), `require("fs").writeFileSync(${JSON.stringify(sentinel)}, "ran")\n`) + fs.writeFileSync(path.join(project, "bunfig.toml"), `preload = ["./pre.ts"]\n`) + // Control: the same executable started in that directory does run the preload. + spawnSync(process.execPath, ["-e", "1"], { cwd: project }) + expect(fs.existsSync(sentinel)).toBe(true) + fs.rmSync(sentinel) + + const seed = new (await import("bun:sqlite")).Database(path.join(project, "rel.db")) + seed.exec("CREATE TABLE t(x); INSERT INTO t VALUES (7)") + seed.close() + + const cwd = process.cwd() + process.chdir(project) + try { + const c = await connectSqlite({ type: "sqlite", path: "rel.db", readonly: true }) + await c.connect() + open.push(c) + const r = await c.execute("SELECT x FROM t") + expect(r.rows).toEqual([[7]]) + } finally { + process.chdir(cwd) + } + expect(fs.existsSync(sentinel)).toBe(false) + }) + + test("the helper environment filters provider credentials and preserves the caller's HOME", () => { + const env = buildHelperEnv("/private/dir", { + PATH: "/usr/bin", + HOME: "/home/me", + LANG: "en_US.UTF-8", + AWS_SECRET_ACCESS_KEY: "s", + OPENAI_API_KEY: "k", + ANTHROPIC_API_KEY: "k", + BUN_CONFIG_VERBOSE_FETCH: "1", + }) + expect(Object.keys(env).sort()).toEqual( + [ + "AWS_CONFIG_FILE", + "AWS_SHARED_CREDENTIALS_FILE", + "AWS_SECRET_ACCESS_KEY", + "AZURE_CONFIG_DIR", + "BUN_BE_BUN", + "CLOUDSDK_CONFIG", + "HOME", + "LANG", + "PATH", + "TEMP", + "TMP", + "TMPDIR", + ].sort(), + ) + expect(env.HOME).toBe("/home/me") + expect(env.PATH).toBe("/usr/bin") + expect(env.BUN_BE_BUN).toBe("1") + }) + + test("ordinary helpers find the caller's default Azure CLI directory and preserve the caller's home", () => { + for (const parent of [{ HOME: "/home/me" }, { USERPROFILE: "/home/me" }]) { + const env = buildHelperEnv("/private/dir", parent) + expect(env.AZURE_CONFIG_DIR).toBe(path.join("/home/me", ".azure")) + expect(env.HOME).toBe(parent.HOME) + expect(env.USERPROFILE).toBe(parent.USERPROFILE) + } + }) + + test("ordinary helpers preserve the caller's explicit Azure CLI directory and home", () => { + const env = buildHelperEnv("/private/dir", { HOME: "/home/me", AZURE_CONFIG_DIR: "/custom/azure" }) + expect(env.AZURE_CONFIG_DIR).toBe("/custom/azure") + expect(env.HOME).toBe("/home/me") + expect(env.USERPROFILE).toBeUndefined() + }) + + test("ordinary helpers find the caller's default gcloud directory and preserve the caller's home", () => { + for (const parent of [{ HOME: "/home/me" }, { USERPROFILE: "/home/me" }]) { + const env = buildHelperEnv("/private/dir", parent) + expect(env.CLOUDSDK_CONFIG).toBe(path.join("/home/me", ".config", "gcloud")) + expect(env.HOME).toBe(parent.HOME) + expect(env.USERPROFILE).toBe(parent.USERPROFILE) + for (const name of ["XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME", "XDG_STATE_HOME"]) { + expect(env[name]).toBeUndefined() + } + } + }) + + for (const scenario of [ + { + name: "ordinary Windows helpers find the default gcloud directory under APPDATA", + platform: "win32", + appData: "C:\\Users\\me\\AppData\\Roaming", + expected: "C:\\Users\\me\\AppData\\Roaming\\gcloud", + }, + { + name: "ordinary Windows helpers fall back to the home gcloud directory when APPDATA is undefined", + platform: "win32", + appData: undefined, + expected: path.join("/home/me", ".config", "gcloud"), + }, + { + name: "ordinary Unix helpers keep the home gcloud directory when APPDATA is present", + platform: "linux", + appData: "C:\\Users\\me\\AppData\\Roaming", + expected: path.join("/home/me", ".config", "gcloud"), + }, + ]) { + test(scenario.name, () => { + const originalPlatform = Object.getOwnPropertyDescriptor(process, "platform")! + Object.defineProperty(process, "platform", { value: scenario.platform }) + try { + const env = buildHelperEnv("/private/dir", { HOME: "/home/me", APPDATA: scenario.appData }) + expect(env.CLOUDSDK_CONFIG).toBe(scenario.expected) + expect(env.HOME).toBe("/home/me") + } finally { + Object.defineProperty(process, "platform", originalPlatform) + } + }) + } + + test("ordinary helpers preserve explicit gcloud, Google ADC, home and XDG locations", () => { + const parent = { + HOME: "/home/me", + USERPROFILE: "/profile/me", + XDG_CONFIG_HOME: "/custom/config", + XDG_DATA_HOME: "/custom/data", + XDG_CACHE_HOME: "/custom/cache", + XDG_STATE_HOME: "/custom/state", + CLOUDSDK_CONFIG: "/custom/gcloud", + GOOGLE_APPLICATION_CREDENTIALS: "/custom/adc.json", + } + const env = buildHelperEnv("/private/dir", parent) + expect(env).toMatchObject(parent) + expect(env.AWS_CONFIG_FILE).toBe(path.join(parent.HOME, ".aws", "config")) + expect(env.AWS_SHARED_CREDENTIALS_FILE).toBe(path.join(parent.HOME, ".aws", "credentials")) + }) + + test("scratch helpers omit default and explicit Azure and gcloud directories and keep private home and XDG", () => { + for (const config of [undefined, "/custom/config"]) { + const env = buildHelperEnv("/private/dir", { + HOME: "/home/me", + USERPROFILE: "/profile/me", + XDG_CONFIG_HOME: "/custom/config", + XDG_DATA_HOME: "/custom/data", + XDG_CACHE_HOME: "/custom/cache", + XDG_STATE_HOME: "/custom/state", + AZURE_CONFIG_DIR: config, + CLOUDSDK_CONFIG: config, + }, true) + expect(env.AZURE_CONFIG_DIR).toBeUndefined() + expect(env.CLOUDSDK_CONFIG).toBeUndefined() + expect(env.HOME).toBe("/private/dir") + expect(env.USERPROFILE).toBe("/private/dir") + for (const name of ["XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME", "XDG_STATE_HOME"]) { + expect(env[name]).toBe("/private/dir") + } + expect(env.BUN_BE_BUN).toBe("1") + } + }) + + for (const scratch of [false, true]) { + test.each([undefined, "/custom/gcloud"])(`cloud credential directories survive helper startup and respawn (scratch=${scratch}, gcloud=%s)`, async (gcloudConfig) => { + const childSource = String.raw` +let buf = ""; +for await (const chunk of Bun.stdin.stream()) { + buf += new TextDecoder().decode(chunk); + let nl; + while ((nl = buf.indexOf("\n")) >= 0) { + const req = JSON.parse(buf.slice(0, nl)); buf = buf.slice(nl + 1); + if (req.payload.sql === "hang") continue; + const result = req.op === "all" ? { + azureConfig: process.env.AZURE_CONFIG_DIR, + gcloudConfig: process.env.CLOUDSDK_CONFIG, + home: process.env.HOME, + userProfile: process.env.USERPROFILE, + xdgConfig: process.env.XDG_CONFIG_HOME, + tmpdir: process.env.TMPDIR, + bunBeBun: process.env.BUN_BE_BUN, + } : null; + process.stdout.write(JSON.stringify({ id: req.id, ok: true, result }) + "\n"); + } +} +` + const parent = { + HOME: "/home/me", + USERPROFILE: "/profile/me", + XDG_CONFIG_HOME: "/custom/config", + AZURE_CONFIG_DIR: "/custom/azure", + CLOUDSDK_CONFIG: gcloudConfig, + } + const saved = Object.fromEntries(Object.keys(parent).map((name) => [name, process.env[name]])) + for (const [name, value] of Object.entries(parent)) { + if (value === undefined) delete process.env[name] + else process.env[name] = value + } + const engine = new LocalEngine({ engine: "duckdb", label: "Fake", storePath: ":memory:", childSource }) + try { + await engine.open({ path: ":memory:", sandboxDirectory: scratch ? tmp : undefined }, 5000) + for (const respawn of [false, true]) { + if (respawn) await expect(engine.call("all", { sql: "hang" }, 100)).rejects.toMatchObject({ code: "QUERY_TIMEOUT" }) + const env = await engine.call("all", { sql: "env" }, 5000) + expect(env.azureConfig).toBe(scratch ? undefined : "/custom/azure") + expect(env.gcloudConfig).toBe(scratch ? undefined : gcloudConfig ?? path.join(parent.HOME, ".config", "gcloud")) + expect(path.basename(env.tmpdir)).toStartWith("altimate-local-engine-") + expect(env.home).toBe(scratch ? env.tmpdir : parent.HOME) + expect(env.userProfile).toBe(scratch ? env.tmpdir : parent.USERPROFILE) + expect(env.xdgConfig).toBe(scratch ? env.tmpdir : parent.XDG_CONFIG_HOME) + expect(env.bunBeBun).toBe("1") + } + } finally { + await engine.close() + for (const [name, value] of Object.entries(saved)) { + if (value === undefined) delete process.env[name] + else process.env[name] = value + } + } + }) + } + + test("the helper directory is private, owned by us, and removed on exit", async () => { + const script = path.join(tmp, "dir-probe.ts") + fs.writeFileSync( + script, + `import { connect } from ${JSON.stringify(path.join(import.meta.dir, "../src/sqlite"))} +import * as fs from "fs" +const c = await connect({ type: "sqlite", path: ":memory:" }) +await c.connect() +const dirs = fs.readdirSync(require("os").tmpdir()).filter((n) => n.startsWith("altimate-local-engine-")).map((n) => require("path").join(require("os").tmpdir(), n)) +const mine = dirs.filter((d) => fs.existsSync(d + "/bunfig.toml")) +console.log(JSON.stringify(mine.map((d) => ({ d, mode: fs.statSync(d).mode & 0o777, uid: fs.statSync(d).uid, me: process.getuid() })))) +await c.close() +`, + ) + const out = spawnSync(process.execPath, [script]).stdout.toString().trim().split("\n").pop()! + const dirs = JSON.parse(out) as Array<{ d: string; mode: number; uid: number; me: number }> + expect(dirs.length).toBeGreaterThan(0) + for (const e of dirs.filter((x) => x.uid === x.me && x.mode === 0o700)) expect(e.d).toMatch(/altimate-local-engine-/) + expect(dirs.some((x) => x.mode === 0o700 && x.uid === x.me)).toBe(true) + }) +}) + +describe("codec", () => { + test("a column named __proto__ survives pack/unpack and a real round trip", async () => { + expect(Object.keys(unpack(JSON.parse(JSON.stringify(pack(JSON.parse('{"__proto__":42,"normal":7}'))))))).toEqual(["__proto__", "normal"]) + // SQLite only: the duckdb node binding itself drops a `__proto__` column + // before our code sees the row (verified with the binding alone). + const c = await make("sqlite") + const r = await c.execute('SELECT 42 AS "__proto__", 7 AS normal') + expect(r.columns).toEqual(["__proto__", "normal"]) + expect(r.rows).toEqual([[42, 7]]) + }) +}) + +describe("reopen keeps the open deadline", () => { + // A helper that opens fine the first time and stalls on every later open. + const STALLING_CHILD = String.raw` +const fs = require("fs"); +let buf = ""; +const reply = (m) => process.stdout.write(JSON.stringify(m) + "\n"); +(async () => { + for await (const chunk of Bun.stdin.stream()) { + buf += new TextDecoder().decode(chunk); + let nl; + while ((nl = buf.indexOf("\n")) >= 0) { + const req = JSON.parse(buf.slice(0, nl)); buf = buf.slice(nl + 1); + const marker = req.payload && req.payload.path; + if (req.op === "open") { + if (fs.existsSync(marker)) continue; // stall: never answer + fs.writeFileSync(marker, "1"); + reply({ id: req.id, ok: true, result: null }); + } else if (req.op === "all") { + if (req.payload.sql === "hang") continue; + reply({ id: req.id, ok: true, result: [{ ok: 1 }] }); + } else { reply({ id: req.id, ok: true, result: null }); } + } + } +})(); +` + test("a hung reopen after a kill fails within the open budget instead of blocking the queue", async () => { + const marker = path.join(tmp, `stall-${Date.now()}`) + const engine = new LocalEngine({ engine: "sqlite", label: "Fake", storePath: marker, childSource: STALLING_CHILD }) + await engine.open({ path: marker }, 800, () => new Error("OPEN_BUDGET_EXCEEDED")) + const killed = await timed(() => engine.call("all", { sql: "hang" }, 300)) + expect(killed.error?.code).toBe("QUERY_TIMEOUT") + const reopened = await timed(() => engine.call("all", { sql: "SELECT 1" }, 5000)) + expect(reopened.error?.message).toBe("OPEN_BUDGET_EXCEEDED") + expect(reopened.ms).toBeGreaterThanOrEqual(700) + expect(reopened.ms).toBeLessThan(2500) + await engine.close() + }) +}) diff --git a/packages/drivers/test/local-result-byte-limit.test.ts b/packages/drivers/test/local-result-byte-limit.test.ts new file mode 100644 index 0000000000..4718a11b73 --- /dev/null +++ b/packages/drivers/test/local-result-byte-limit.test.ts @@ -0,0 +1,136 @@ +import { describe, expect, test } from "bun:test" +import { compileFunction } from "node:vm" +import { LOCAL_ENGINE_CHILD_SOURCE } from "../src/local-engine-child-source" +import { LocalEngine } from "../src/local-engine" +import { connect as sqlite } from "../src/sqlite" +import { connect as duckdb } from "../src/duckdb" + +test("local helper stops a lazy DuckDB stream before retaining rows above the byte cap", async () => { + let produced = 0 + let closed = false + let finalized = false + const responses: any[] = [] + const connection = { + prepare() { + return { + stream: () => connection.stream(), + finalize: (callback: () => void) => { + finalized = true + callback() + }, + } + }, + async *stream() { + try { + for (const value of ["x", "y".repeat(128), "must not be fetched"]) { + produced++ + yield { value } + } + } finally { + closed = true + } + }, + async all(_sql: string, callback: (error: null, rows: unknown[]) => void) { + const rows = [] + for await (const row of this.stream()) rows.push(row) + callback(null, rows) + }, + } + const run = compileFunction( + LOCAL_ENGINE_CHILD_SOURCE.replace( + "function closeDuckConnections()", + 'engine = "duckdb"; duckCon = connection;\nfunction closeDuckConnections()', + ).replace("(async () => {", "return (async () => {"), + ["Bun", "process", "connection"], + ) + await run( + { + stdin: { + async *stream() { + yield Buffer.from( + JSON.stringify({ id: 1, op: "all", payload: { sql: "SELECT value", maxResultBytes: 32 } }) + "\n", + ) + }, + }, + }, + { + argv: ["bun", "test", "0"], + stdout: { write: (line: string) => responses.push(JSON.parse(line)) }, + exit: () => {}, + }, + connection, + ) + expect(responses[0].error?.code).toBe("RESULT_BYTE_LIMIT") + expect(produced).toBe(2) + expect(closed).toBe(true) + expect(finalized).toBe(true) +}) + +test("local helper preserves structured error codes and flags through dispatch", async () => { + const childSource = LOCAL_ENGINE_CHILD_SOURCE.replace( + "async function handle(req) {", + `async function handle(req) { + if (req.op === "all" && req.payload.sql === "fail") { + const error = Object.assign(new Error("native failure"), { stateLost: true, retryable: false }); + Object.defineProperties(error, { code: { value: "NATIVE_TEST_ERROR" }, errno: { value: 17 } }); + throw error; + }`, + ) + const engine = new LocalEngine({ engine: "sqlite", label: "SQLite", storePath: ":memory:", childSource }) + try { + await engine.open({ path: ":memory:", readwrite: true, create: true }) + await expect(engine.call("all", { sql: "fail" })).rejects.toMatchObject({ + message: "native failure", + code: "NATIVE_TEST_ERROR", + errno: 17, + stateLost: true, + retryable: false, + }) + expect(await engine.call("all", { sql: "SELECT 1 AS value" })).toEqual([{ value: 1 }]) + } finally { + await engine.close() + } +}) + +for (const [type, connect] of [ + ["sqlite", sqlite], + ["duckdb", duckdb], +] as const) { + describe(`${type} bounded results`, () => { + test("rejects oversized serialized rows and keeps the connection usable", async () => { + const connector = await connect({ type, path: ":memory:" }) + await connector.connect() + try { + await expect( + connector.execute("SELECT '0123456789' AS value", 1, undefined, { maxResultBytes: 8 }), + ).rejects.toMatchObject({ code: "RESULT_BYTE_LIMIT" }) + expect((await connector.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + expect(connector.supportsResultByteLimit).toBe(true) + } finally { + await connector.close() + } + }) + + test("rejects wide rows after a small initial sample in a real native stream", async () => { + const connector = await connect({ type, path: ":memory:" }) + await connector.connect() + try { + const sql = + "WITH RECURSIVE n(i) AS (SELECT 1 UNION ALL SELECT i + 1 FROM n WHERE i < 5000) SELECT CASE WHEN i <= 1000 THEN 'x' ELSE printf('%0200d', i) END AS value FROM n" + expect( + ( + await connector.execute(`SELECT * FROM (${sql}) AS sample LIMIT 1000`, 1000, undefined, { + maxResultBytes: 8192, + }) + ).rows, + ).toHaveLength(1000) + await expect(connector.execute(sql, 5000, undefined, { maxResultBytes: 8192 })).rejects.toMatchObject({ + code: "RESULT_BYTE_LIMIT", + }) + expect((await connector.execute("SELECT 1 AS value")).rows).toEqual([[1]]) + } finally { + await connector.close() + } + }) + }) +} diff --git a/packages/drivers/test/module-mock.test.ts b/packages/drivers/test/module-mock.test.ts new file mode 100644 index 0000000000..9b552bc85e --- /dev/null +++ b/packages/drivers/test/module-mock.test.ts @@ -0,0 +1,22 @@ +import { afterAll, expect, mock, test } from "bun:test" +import { restoreModuleMocksAfterTests } from "./module-mock" + +const original = { ...await import("node:querystring") } + +await restoreModuleMocksAfterTests("@altimateai/missing-optional-test-dependency", "node:querystring") + +mock.module("node:querystring", () => ({ + ...original, + stringify: () => "mocked", +})) + +test("unavailable optional modules do not prevent installed modules from being mocked", async () => { + const querystring = await import("node:querystring") + expect(querystring.stringify({ key: "value" })).toBe("mocked") +}) + +afterAll(async () => { + const querystring = await import("node:querystring") + expect(querystring.stringify).toBe(original.stringify) + expect(querystring.stringify({ key: "value" })).toBe("key=value") +}) diff --git a/packages/drivers/test/module-mock.ts b/packages/drivers/test/module-mock.ts new file mode 100644 index 0000000000..8c59fbc22a --- /dev/null +++ b/packages/drivers/test/module-mock.ts @@ -0,0 +1,22 @@ +import { afterAll, mock } from "bun:test" + +/** Bun's mock.restore() restores spies, but leaves mock.module() exports installed. */ +export async function restoreModuleMocksAfterTests(...specifiers: string[]): Promise { + const originals = await Promise.all(specifiers.map(async (specifier) => { + try { + import.meta.resolve(specifier) + } catch { + // Optional SDKs can be mocked even when they are not installed. + return + } + // Copy now: Bun updates live module namespaces when a mock is installed. + return [specifier, { ...await import(specifier) }] as const + })) + afterAll(() => { + for (const original of originals) { + if (!original) continue + const [specifier, exports] = original + mock.module(specifier, () => exports) + } + }) +} diff --git a/packages/drivers/test/mongodb-cancellation.test.ts b/packages/drivers/test/mongodb-cancellation.test.ts new file mode 100644 index 0000000000..7a2a06cf43 --- /dev/null +++ b/packages/drivers/test/mongodb-cancellation.test.ts @@ -0,0 +1,95 @@ +import { expect, mock, test } from "bun:test" +import { connect } from "../src/mongodb" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("mongodb") + +async function database() { + const started = Promise.withResolvers() + const delivered = Promise.withResolvers>() + let fetched = 0 + let closed = 0 + const cursor = { + limit() { return this }, + batchSize() { return this }, + async close() { closed++ }, + async *[Symbol.asyncIterator]() { + fetched++ + started.resolve() + yield await delivered.promise + fetched++ + yield { value: "late" } + }, + async toArray() { + const docs = [] + for await (const doc of this) docs.push(doc) + return docs + }, + } + mock.module("mongodb", () => ({ default: { MongoClient: class { + async connect() {} + async close() {} + db() { + return { + databaseName: "test", + listCollections: () => ({ toArray: async () => [{ name: "source", type: "collection" }] }), + collection: () => ({ find: () => cursor, aggregate: () => cursor }), + } + } + } } })) + const connector = await connect({ type: "mongodb", query_timeout_ms: 0 }) + await connector.connect() + return { connector, started: started.promise, deliver: () => delivered.resolve({ value: "first" }), fetched: () => fetched, closed: () => closed } +} + +for (const command of ["find", "aggregate"]) { + for (const maxResultBytes of [undefined, 1000]) { + test(`Mongo ${command} abort closes a pending cursor and prevents subsequent fetches (byte bound ${maxResultBytes})`, async () => { + const db = await database() + const controller = new AbortController() + const reason = new Error("session stopped") + const execution = db.connector.execute(JSON.stringify({ command, collection: "source", pipeline: [] }), 100, undefined, { + signal: controller.signal, + maxResultBytes, + }).catch((error) => error) + try { + // Surface validation/setup failures instead of waiting forever for an unopened cursor. + await Promise.race([db.started, execution.then((error) => { throw error })]) + const start = performance.now() + controller.abort(reason) + expect(await Promise.race([execution, Bun.sleep(100).then(() => "still reading")])).toBe(reason) + expect(performance.now() - start).toBeLessThan(2000) + expect(db.closed()).toBe(1) + db.deliver() + await Bun.sleep(10) + expect(db.fetched()).toBe(1) + } finally { + db.deliver() + await execution + await db.connector.close() + } + }) + } +} + +for (const maxResultBytes of [undefined, 1000]) { + test(`Mongo cursor deadline closes a stalled read without a caller signal (byte bound ${maxResultBytes})`, async () => { + const db = await database() + const execution = db.connector.execute(JSON.stringify({ command: "find", collection: "source" }), 100, undefined, { + queryTimeoutMs: 20, + maxResultBytes, + }).catch((error) => error) + try { + await Promise.race([db.started, execution.then((error) => { throw error })]) + expect(await Promise.race([execution, Bun.sleep(100).then(() => "still reading")])).toMatchObject({ code: "QUERY_TIMEOUT" }) + expect(db.closed()).toBe(1) + db.deliver() + await Bun.sleep(10) + expect(db.fetched()).toBe(1) + } finally { + db.deliver() + await execution + await db.connector.close() + } + }) +} diff --git a/packages/drivers/test/mongodb-unit.test.ts b/packages/drivers/test/mongodb-unit.test.ts new file mode 100644 index 0000000000..5fe0b2a7d5 --- /dev/null +++ b/packages/drivers/test/mongodb-unit.test.ts @@ -0,0 +1,462 @@ +import { describe, expect, mock, test } from "bun:test" +import { createRequire } from "node:module" +import { normalizeMqlCommand } from "../src/mongodb" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("mongodb") + +// Use the driver's BSON package directly so the MongoDB client mock cannot replace Binary. +const { Binary } = createRequire(import.meta.resolve("mongodb"))("bson") + +async function fakeMongo( + docs: Record[] = [], + metadata: { collections?: Record; error?: Error } = {}, +) { + const finds: unknown[] = [] + const pipelines: Record[][] = [] + const aggregateOptions: unknown[] = [] + const counts: { filter: unknown; options: unknown }[] = [] + const distincts: { field: string; filter: unknown; options: unknown }[] = [] + const collections = metadata.collections ?? { test: ["articles", "orders"], archive: [] } + const collectionLists: { database: string; options: unknown }[] = [] + const databaseLists: unknown[] = [] + const estimates: unknown[] = [] + mock.module("mongodb", () => ({ + default: { + MongoClient: class { + async connect() {} + async close() {} + db(database = "test") { + return { + databaseName: database, + admin: () => ({ + listDatabases: async (options: unknown) => { + databaseLists.push(options) + if (metadata.error) throw metadata.error + return { databases: Object.keys(collections).map((name) => ({ name })) } + }, + }), + listCollections: (filter: { name?: string }, options: unknown) => ({ + toArray: async () => { + collectionLists.push({ database, options }) + if (metadata.error) throw metadata.error + return (collections[database] ?? []) + .filter((name) => !filter.name || name === filter.name) + .map((name) => ({ name, type: "collection" })) + }, + }), + createCollection: async (name: string) => { + collections[database] ??= [] + collections[database].push(name) + }, + collection: () => ({ + find: (filter: unknown) => { + finds.push(filter) + return { limit: () => ({ toArray: async () => docs, async *[Symbol.asyncIterator]() { yield* docs } }) } + }, + aggregate: (pipeline: Record[], options: unknown) => { + pipelines.push(pipeline) + aggregateOptions.push(options) + return { toArray: async () => docs, async *[Symbol.asyncIterator]() { yield* docs } } + }, + countDocuments: async (filter: unknown, options: unknown) => { + counts.push({ filter, options }) + return 11 + }, + estimatedDocumentCount: async (options: unknown) => { + estimates.push(options) + return 13 + }, + distinct: async (field: string, filter: unknown, options: unknown) => { + distincts.push({ field, filter, options }) + return ["A"] + }, + }), + } + } + }, + }, + })) + const { connect } = await import("../src/mongodb") + const connector = await connect({ type: "mongodb", database: "test" }) + await connector.connect() + const query = (command: string, extra: object = {}) => JSON.stringify({ collection: "articles", command, ...extra }) + return { connector, query, collections, finds, pipelines, aggregateOptions, counts, distincts, collectionLists, databaseLists, estimates } +} + +describe("MongoDB read command shapes", () => { + test.each([null, [], 1, "find"].map((value) => ({ value })))("rejects a non-object query: $value", async ({ value }) => { + const { connector } = await fakeMongo() + await expect(connector.execute(JSON.stringify(value))).rejects.toThrow("MQL query must be a JSON command object") + }) + + test("collection and find filter execute like the explicit command", async () => { + const { connector, query, finds } = await fakeMongo([{ a: 1 }]) + const filter = { a: 1 } + const expected = await connector.execute(query("find", { filter })) + expect(await connector.execute(JSON.stringify({ collection: "articles", find: filter }))).toEqual(expected) + expect(finds).toEqual([filter, filter]) + }) + + test("collection and aggregate pipeline execute like the explicit command", async () => { + const { connector, query, pipelines } = await fakeMongo([{ a: 1 }]) + const pipeline = [{ $match: { a: 1 } }] + const expected = await connector.execute(query("aggregate", { pipeline })) + expect(await connector.execute(JSON.stringify({ collection: "articles", aggregate: pipeline }))).toEqual(expected) + expect(pipelines[0]).toEqual(pipelines[1]) + }) + + test.each(["listCollections", "estimatedDocumentCount"])("executes native and explicit %s", async (command) => { + const { connector, estimates } = await fakeMongo() + const native = command === "listCollections" ? { listCollections: 1 } : { estimatedDocumentCount: "articles" } + const explicit = { command, ...(command === "listCollections" ? {} : { collection: "articles" }) } + const expected = await connector.execute(JSON.stringify(explicit), 10, undefined, { queryTimeoutMs: 250 }) + expect(await connector.execute(JSON.stringify(native), 10, undefined, { queryTimeoutMs: 250 })).toEqual(expected) + expect(expected.rows).toEqual(command === "listCollections" ? [["articles", "collection"], ["orders", "collection"]] : [[13]]) + if (command === "estimatedDocumentCount") expect(estimates).toEqual([{ maxTimeMS: 250 }, { maxTimeMS: 250 }]) + }) + + test("listCollections honors its filter and row cap", async () => { + const { connector } = await fakeMongo() + expect(await connector.execute(JSON.stringify({ listCollections: 1 }), 1)).toMatchObject({ + rows: [["articles", "collection"]], row_count: 1, truncated: true, + }) + expect(await connector.execute(JSON.stringify({ listCollections: 1, filter: { name: "orders" } }), 1)).toMatchObject({ + rows: [["orders", "collection"]], row_count: 1, truncated: false, + }) + }) +}) + +describe("MongoDB read namespace validation", () => { + test("wrong database lists available databases before opening a cursor", async () => { + const { connector, query, finds } = await fakeMongo() + await expect(connector.execute(query("find", { database: "missing" }))).rejects.toThrow( + 'MongoDB database "missing" does not exist or is not accessible. Available databases: archive, test', + ) + expect(finds).toEqual([]) + }) + + test("wrong collection lists available collections before opening a cursor", async () => { + const { connector, query, finds } = await fakeMongo() + await expect(connector.execute(query("find", { collection: "missing" }))).rejects.toThrow( + 'MongoDB collection "missing" does not exist or is not accessible in database "test". Available collections: articles, orders', + ) + expect(finds).toEqual([]) + }) + + test("existing empty collections still return a legitimate empty result", async () => { + const { connector, query } = await fakeMongo() + expect(await connector.execute(query("find"))).toEqual({ columns: [], rows: [], row_count: 0, truncated: false }) + }) + + test("caches authorized collection metadata without requiring database listing for populated databases", async () => { + const { connector, query, collectionLists, databaseLists } = await fakeMongo() + await connector.execute(query("find"), undefined, undefined, { queryTimeoutMs: 250 }) + await connector.execute(query("countDocuments")) + expect(collectionLists).toEqual([{ + database: "test", options: { nameOnly: true, authorizedCollections: true, maxTimeMS: 250 }, + }]) + expect(databaseLists).toEqual([]) + }) + + test("a collection created by another client is found after one re-list", async () => { + const { connector, query, collections, collectionLists } = await fakeMongo() + await connector.execute(query("find")) + collections.test.push("late") + await connector.execute(query("find", { collection: "late" })) + expect(collectionLists).toHaveLength(2) + }) + + test("an existing empty database can list its collections", async () => { + const { connector, databaseLists } = await fakeMongo() + expect(await connector.execute(JSON.stringify({ command: "listCollections", database: "archive" }))).toEqual({ + columns: ["name", "type"], rows: [], row_count: 0, truncated: false, + }) + expect(databaseLists).toEqual([{ nameOnly: true, authorizedDatabases: true, maxTimeMS: 120_000 }]) + }) + + test("metadata failures cannot become an empty read", async () => { + const { connector, query, finds } = await fakeMongo([], { error: new Error("metadata unavailable") }) + await expect(connector.execute(query("find"))).rejects.toThrow("metadata unavailable") + expect(finds).toEqual([]) + }) + + test("writes invalidate cached names and may create a collection", async () => { + const { connector, query, collectionLists } = await fakeMongo() + await connector.execute(query("find")) + await connector.execute(query("createCollection", { collection: "new_items" })) + await connector.execute(query("find", { collection: "new_items" })) + expect(collectionLists).toHaveLength(2) + }) + + test("reconnecting clears cached metadata", async () => { + const { connector, query, collectionLists } = await fakeMongo() + await connector.execute(query("find")) + await connector.close() + await connector.connect() + await connector.execute(query("find")) + expect(collectionLists).toHaveLength(2) + }) +}) + +describe("normalizeMqlCommand bounds", () => { + const forms = [ + { name: "string-form", input: (bounds: object) => JSON.parse(JSON.stringify({ find: "events", ...bounds })) }, + { name: "object-form", input: (bounds: object) => ({ find: "events", ...bounds }) }, + { name: "explicit command-form", input: (bounds: object) => ({ command: "find", collection: "events", ...bounds }) }, + ] + + for (const { name, input } of forms) { + test.each([ + { name: "limit: -1", bounds: { limit: -1 }, error: "MongoDB find limit must be a positive integer" }, + { name: "limit: 1.5", bounds: { limit: 1.5 }, error: "MongoDB find limit must be a positive integer" }, + { name: "unsafe limit", bounds: { limit: Number.MAX_SAFE_INTEGER + 1 }, error: "MongoDB find limit must be a positive integer" }, + { name: "string limit", bounds: { limit: "5" }, error: "MongoDB find limit must be a positive integer" }, + { name: "null limit", bounds: { limit: null }, error: "MongoDB find limit must be a positive integer" }, + { name: "skip: -3", bounds: { skip: -3 }, error: "MongoDB find skip must be a non-negative integer" }, + { name: "skip: 1.5", bounds: { skip: 1.5 }, error: "MongoDB find skip must be a non-negative integer" }, + { name: "unsafe skip", bounds: { skip: Number.MAX_SAFE_INTEGER + 1 }, error: "MongoDB find skip must be a non-negative integer" }, + ])(`rejects $name in ${name}`, ({ bounds, error }) => { + expect(() => normalizeMqlCommand(input(bounds))).toThrow(error) + }) + + test.each([0, 5])(`preserves limit: %i and skip: 0 in ${name}`, (limit) => { + expect(normalizeMqlCommand(input({ limit, skip: 0 }))).toEqual({ + command: "find", collection: "events", limit, skip: 0, + }) + }) + } + + test.each(["aggregate", "countDocuments"])("validates top-level limit and skip for %s", (command) => { + for (const bounds of [{ limit: -1 }, { limit: 1.5 }, { skip: -3 }]) { + const field = "limit" in bounds ? "limit" : "skip" + const rule = field === "limit" ? "a positive" : "a non-negative" + expect(() => normalizeMqlCommand({ command, collection: "events", pipeline: [], ...bounds })).toThrow( + `MongoDB ${command} ${field} must be ${rule} integer`, + ) + } + }) + + test.each([ + { name: "$limit: -1", stage: { $limit: -1 }, error: "MongoDB aggregate $limit must be a positive integer" }, + { name: "$limit: 0", stage: { $limit: 0 }, error: "MongoDB aggregate $limit must be a positive integer" }, + { name: "$limit: 1.5", stage: { $limit: 1.5 }, error: "MongoDB aggregate $limit must be a positive integer" }, + { name: "unsafe $limit", stage: { $limit: Number.MAX_SAFE_INTEGER + 1 }, error: "MongoDB aggregate $limit must be a positive integer" }, + { name: "$skip: -3", stage: { $skip: -3 }, error: "MongoDB aggregate $skip must be a non-negative integer" }, + { name: "$skip: 1.5", stage: { $skip: 1.5 }, error: "MongoDB aggregate $skip must be a non-negative integer" }, + ])("rejects aggregate pipeline $name", ({ stage, error }) => { + expect(() => normalizeMqlCommand({ aggregate: "events", pipeline: [stage] })).toThrow(error) + }) + + test("preserves valid aggregate pipeline bounds", () => { + const pipeline = [{ $skip: 0 }, { $limit: 5 }] + expect(normalizeMqlCommand({ aggregate: "events", pipeline })).toEqual({ + command: "aggregate", collection: "events", pipeline, + }) + }) + + test("rejects invalid bounds before opening find or aggregate cursors", async () => { + const { connector, finds, pipelines } = await fakeMongo() + await expect(connector.execute(JSON.stringify({ find: "events", limit: -1 }))).rejects.toThrow( + "MongoDB find limit must be a positive integer", + ) + await expect(connector.execute(JSON.stringify({ aggregate: "events", pipeline: [{ $skip: -3 }] }))).rejects.toThrow( + "MongoDB aggregate $skip must be a non-negative integer", + ) + expect(finds).toEqual([]) + expect(pipelines).toEqual([]) + }) +}) + +describe("MongoDB BSON normalization", () => { + test.each([ + { name: "raw value API", legacy: false }, + { name: "legacy value API", legacy: true }, + ])("preserves null and high-bit Binary bytes as base64 ($name)", async ({ legacy }) => { + const bytes = Buffer.from([0x00, 0x80, 0xff]) + const value = new Binary(bytes) + if (legacy) { + // Older BSON versions default to a latin1 string; raw=true returns bytes. + Object.defineProperty(value, "value", { value: (raw?: boolean) => raw ? bytes : bytes.toString("latin1") }) + } + const { connector, query } = await fakeMongo([{ value }]) + const result = await connector.execute(query("aggregate", { pipeline: [] })) + expect(result.rows).toEqual([["base64:AID/"]]) + }) + + test("preserves distinct same-length Binary values as base64", async () => { + const { connector, query } = await fakeMongo([ + { value: new Binary(Buffer.from([0, 1, 2, 3])) }, + { value: new Binary(Buffer.from([0, 1, 2, 4])) }, + ]) + const result = await connector.execute(query("aggregate", { pipeline: [] })) + expect(result.rows).toEqual([["base64:AAECAw=="], ["base64:AAECBA=="]]) + expect(result.rows[0][0]).not.toBe(result.rows[1][0]) + expect(await connector.describeTable("test", "articles")).toMatchObject([{ data_type: "binary" }]) + }) + + test("normalizes a subtype 4 Binary to its canonical UUID string and type", async () => { + const { connector, query } = await fakeMongo([ + { value: new Binary(Buffer.from("00112233445566778899aabbccddeeff", "hex"), Binary.SUBTYPE_UUID) }, + ]) + const result = await connector.execute(query("aggregate", { pipeline: [] })) + expect(result.rows).toEqual([["00112233-4455-6677-8899-aabbccddeeff"]]) + expect(await connector.describeTable("test", "articles")).toMatchObject([{ data_type: "uuid" }]) + }) + + test("normalizes an empty Binary to base64 without spare buffer bytes", async () => { + const { connector, query } = await fakeMongo([{ value: new Binary() }]) + const result = await connector.execute(query("aggregate", { pipeline: [] })) + expect(result.rows).toEqual([["base64:"]]) + }) + + test("falls back to base64 when a UUID Binary has no toUUID method", async () => { + const value = new Binary(Buffer.from("00112233445566778899aabbccddeeff", "hex"), Binary.SUBTYPE_UUID) + Object.defineProperty(value, "toUUID", { value: undefined }) + const { connector, query } = await fakeMongo([{ value }]) + const result = await connector.execute(query("aggregate", { pipeline: [] })) + expect(result.rows).toEqual([["base64:ABEiM0RVZneImaq7zN3u/w=="]]) + }) +}) + +describe("MongoDB extraction limits", () => { + test.each([ + { name: "caps a larger user $limit", pipeline: [{ $match: {} }, { $limit: 2_000_000 }] }, + { name: "appends a missing $limit", pipeline: [{ $match: {} }] }, + ])("aggregate $name at the tool limit", async ({ pipeline }) => { + const docs = Array.from({ length: 11 }, (_, n) => ({ n })) + const { connector, query, pipelines } = await fakeMongo(docs) + const result = await connector.execute(query("aggregate", { pipeline }), 10) + + // Fetch one extra document to report truncation, but only return the tool limit. + expect(pipelines).toEqual([[...pipeline, { $limit: 11 }]]) + expect(result.rows).toEqual(docs.slice(0, 10).map(({ n }) => [n])) + expect(result.row_count).toBe(10) + expect(result.truncated).toBe(true) + }) + + test("aggregate appends a terminal cap after $limit 5 followed by $unwind", async () => { + const { connector, query, pipelines } = await fakeMongo() + const pipeline = [{ $limit: 5 }, { $unwind: "$items" }] + await connector.execute(query("aggregate", { pipeline }), 100) + expect(pipelines).toEqual([[...pipeline, { $limit: 101 }]]) + }) + + test("aggregate preserves a terminal $limit 3 with cap 100", async () => { + const { connector, query, pipelines } = await fakeMongo([{ n: 1 }]) + const result = await connector.execute(query("aggregate", { pipeline: [{ $limit: 3 }] }), 100) + expect(pipelines).toEqual([[{ $limit: 3 }]]) + expect(result.truncated).toBe(false) + }) + + test("aggregate appends a terminal cap to the bounded preflight count pipeline", async () => { + const { connector, query, pipelines } = await fakeMongo([{ n: 11 }]) + const pipeline = [{ $match: { category: "news" } }, { $limit: 11 }, { $count: "n" }] + const result = await connector.execute(query("aggregate", { pipeline }), 11) + expect(pipelines).toEqual([[...pipeline, { $limit: 12 }]]) + expect(result.rows).toEqual([[11]]) + }) + + test("distinct uses a bounded aggregate with the filter and deadline and reports truncation", async () => { + const docs = [{ _id: "A" }, { _id: "B" }, { _id: "C" }] + const { connector, query, pipelines, aggregateOptions, distincts } = await fakeMongo(docs) + const result = await connector.execute( + query("distinct", { field: "status", filter: { customer: 42 } }), + 2, + undefined, + { queryTimeoutMs: 250 }, + ) + expect(pipelines).toEqual([ + [ + { $match: { customer: 42 } }, + { $match: { status: { $exists: true, $ne: [] } } }, + { $unwind: { path: "$status", preserveNullAndEmptyArrays: true } }, + { $group: { _id: "$status" } }, + { $limit: 3 }, + ], + ]) + expect(aggregateOptions).toEqual([{ maxTimeMS: 250 }]) + expect(distincts).toEqual([]) + expect(result).toEqual({ columns: ["status"], rows: [["A"], ["B"]], row_count: 2, truncated: true }) + }) + + test("countDocuments forwards the count bound, filter, skip and deadline", async () => { + const { connector, query, counts } = await fakeMongo() + const result = await connector.execute( + query("countDocuments", { filter: { category: "news" }, limit: 11, skip: 3 }), + 1, + undefined, + { queryTimeoutMs: 250 }, + ) + expect(counts).toEqual([{ filter: { category: "news" }, options: { maxTimeMS: 250, limit: 11, skip: 3 } }]) + expect(result.rows).toEqual([[11]]) + }) + + test("countDocuments without an explicit bound still counts all matches", async () => { + const { connector, query, counts } = await fakeMongo() + await connector.execute(query("countDocuments"), 1, undefined, { queryTimeoutMs: 0 }) + expect(counts).toEqual([{ filter: {}, options: { maxTimeMS: 120_000 } }]) + }) +}) + +describe("MongoDB aggregate write protection", () => { + for (const writeStage of [{ $merge: { into: "target" } }, { $out: "target" }]) { + test.each([ + { name: "top-level stages", pipeline: [writeStage] }, + { name: "$unionWith.pipeline", pipeline: [{ $unionWith: { coll: "other", pipeline: [writeStage] } }] }, + { name: "$lookup.pipeline", pipeline: [{ $lookup: { from: "other", as: "joined", pipeline: [writeStage] } }] }, + { name: "$facet branches", pipeline: [{ $facet: { reads: [{ $match: {} }], writes: [writeStage] } }] }, + { name: "nested pipeline arrays", pipeline: [{ $custom: { options: { pipeline: [writeStage] } } }] }, + { + name: "multiple nested pipelines", + pipeline: [{ $facet: { joined: [{ $lookup: { from: "other", as: "joined", pipeline: [writeStage] } }] } }], + }, + ])(`rejects ${Object.keys(writeStage)[0].slice(1)} stage in $name before execution`, async ({ pipeline }) => { + const { connector, query, pipelines } = await fakeMongo() + await expect(connector.execute(query("aggregate", { pipeline }), 10)).rejects.toThrow("blocked write stage") + expect(pipelines).toEqual([]) + }) + } + + test("allows write-stage names inside ordinary literal objects", async () => { + const { connector, query, pipelines } = await fakeMongo() + const pipeline = [{ $project: { value: { $literal: { $merge: "value", $out: "value" } } } }] + await connector.execute(query("aggregate", { pipeline }), 10) + expect(pipelines).toEqual([[...pipeline, { $limit: 11 }]]) + }) +}) + +describe("MongoDB native command filters", () => { + test("count forwards the native query filter", async () => { + const { connector, counts } = await fakeMongo() + await connector.execute(JSON.stringify({ count: "orders", query: { status: "A" } }), 1, undefined, { queryTimeoutMs: 0 }) + expect(counts).toEqual([{ filter: { status: "A" }, options: { maxTimeMS: 120_000 } }]) + }) + + test("distinct forwards the native key and query filter", async () => { + const { connector, pipelines, aggregateOptions } = await fakeMongo([{ _id: "A" }]) + const result = await connector.execute( + JSON.stringify({ distinct: "orders", key: "status", query: { customer: 42 } }), + 10, + undefined, + { queryTimeoutMs: 0 }, + ) + expect(pipelines).toEqual([ + [ + { $match: { customer: 42 } }, + { $match: { status: { $exists: true, $ne: [] } } }, + { $unwind: { path: "$status", preserveNullAndEmptyArrays: true } }, + { $group: { _id: "$status" } }, + { $limit: 11 }, + ], + ]) + expect(aggregateOptions).toEqual([{ maxTimeMS: 120_000 }]) + expect(result.rows).toEqual([["A"]]) + }) + + test("an explicit filter takes precedence over the native query alias", async () => { + const { connector, counts } = await fakeMongo() + await connector.execute(JSON.stringify({ count: "orders", query: { status: "A" }, filter: { status: "B" } }), 1, undefined, { queryTimeoutMs: 0 }) + expect(counts).toEqual([{ filter: { status: "B" }, options: { maxTimeMS: 120_000 } }]) + }) +}) diff --git a/packages/drivers/test/mongodb-write-deadline.test.ts b/packages/drivers/test/mongodb-write-deadline.test.ts new file mode 100644 index 0000000000..9315750b45 --- /dev/null +++ b/packages/drivers/test/mongodb-write-deadline.test.ts @@ -0,0 +1,101 @@ +// altimate_change start — regression coverage for MongoDB write deadlines (4252054136) +import { describe, expect, mock, test } from "bun:test" +import { QueryTimeoutError } from "../src/types" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("mongodb") + +async function fakeMongo(queryTimeoutMs?: number | null, failWith?: Error) { + const seen: Record = {} + function write(name: string, options: unknown, result: unknown) { + seen[name] = options + if (failWith) throw failWith + return result + } + const coll = { + insertOne: async (_doc: unknown, options: unknown) => write("insertOne", options, { insertedId: "id" }), + insertMany: async (_docs: unknown, options: unknown) => write("insertMany", options, { insertedCount: 1 }), + updateOne: async (_filter: unknown, _update: unknown, options: unknown) => + write("updateOne", options, { matchedCount: 1, modifiedCount: 1 }), + updateMany: async (_filter: unknown, _update: unknown, options: unknown) => + write("updateMany", options, { matchedCount: 1, modifiedCount: 1 }), + deleteOne: async (_filter: unknown, options: unknown) => write("deleteOne", options, { deletedCount: 1 }), + deleteMany: async (_filter: unknown, options: unknown) => write("deleteMany", options, { deletedCount: 1 }), + createIndex: async (_keys: unknown, options: unknown) => write("createIndex", options, "a_1"), + drop: async (options: unknown) => write("dropCollection", options, true), + } + mock.module("mongodb", () => ({ + default: { + MongoClient: class { + async connect() {} + async close() {} + db() { + return { + collection: () => coll, + createCollection: async (_name: unknown, options: unknown) => write("createCollection", options, {}), + } + } + }, + }, + })) + const { connect } = await import("../src/mongodb") + const connector = await connect({ type: "mongodb", database: "test", query_timeout_ms: queryTimeoutMs }) + await connector.connect() + return { connector, seen } +} + +const writes = [ + ["insertOne", { document: { a: 1 } }], + ["insertMany", { documents: [{ a: 1 }] }], + ["updateOne", { filter: { a: 1 }, update: { $set: { a: 2 } } }], + ["updateMany", { filter: { a: 1 }, update: { $set: { a: 2 } } }], + ["deleteOne", { filter: { a: 1 } }], + ["deleteMany", { filter: { a: 1 } }], + ["createCollection", { options: { capped: true, size: 1024 } }], + ["dropCollection", {}], + ["createIndex", { keys: { a: 1 }, options: { unique: true } }], +] as const + +describe.each(writes)("MongoDB %s write deadline", (command, extra) => { + const query = JSON.stringify({ collection: "users", command, ...extra }) + const preservedOptions = "options" in extra ? extra.options : {} + + // Each fixture replaces the global MongoDB module mock, so these tests must run serially. + test.serial("forwards the default maxTimeMS and preserves command options", async () => { + const { connector, seen } = await fakeMongo() + await connector.execute(query) + expect(seen[command]).toEqual({ ...preservedOptions, maxTimeMS: 120_000 }) + await connector.close() + }) + + test.serial("honours connection and per-call deadlines", async () => { + const { connector, seen } = await fakeMongo(4000) + await connector.execute(query) + expect(seen[command]).toEqual({ ...preservedOptions, maxTimeMS: 4000 }) + await connector.execute(query, undefined, undefined, { queryTimeoutMs: 250 }) + expect(seen[command]).toEqual({ ...preservedOptions, maxTimeMS: 250 }) + await connector.execute(query, undefined, undefined, { queryTimeoutMs: 0 }) + expect(seen[command]).toEqual({ ...preservedOptions, maxTimeMS: 4000 }) + await connector.close() + }) + + test.serial("omits maxTimeMS when the connection deadline is disabled", async () => { + for (const disabled of [0, null]) { + const { connector, seen } = await fakeMongo(disabled) + await connector.execute(query) + expect(seen[command]).toEqual(preservedOptions) + await connector.close() + } + }) + + test.serial("normalizes a server write timeout to QUERY_TIMEOUT", async () => { + const error = Object.assign(new Error("operation exceeded time limit"), { code: 50, codeName: "MaxTimeMSExpired" }) + const { connector, seen } = await fakeMongo(900, error) + const caught = await connector.execute(query).catch((err) => err) + expect(caught).toBeInstanceOf(QueryTimeoutError) + expect(caught).toMatchObject({ code: "QUERY_TIMEOUT", engine: "MongoDB", timeoutMs: 900, cancelled: true }) + expect(seen[command]).toEqual({ ...preservedOptions, maxTimeMS: 900 }) + await connector.close() + }) +}) +// altimate_change end diff --git a/packages/drivers/test/postgres-readonly.test.ts b/packages/drivers/test/postgres-readonly.test.ts new file mode 100644 index 0000000000..b2f0de8a70 --- /dev/null +++ b/packages/drivers/test/postgres-readonly.test.ts @@ -0,0 +1,478 @@ +import { expect, mock, test } from "bun:test" +import { connect } from "../src/postgres" +import { QueryTimeoutError } from "../src/types" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("pg") + +async function database(rollbackFails = false) { + const queries: string[] = [] + const releases: unknown[] = [] + let readOnly = false + let writes = 0 + let notifications = 0 + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + async query(sql: string) { + queries.push(sql) + if (sql === "BEGIN READ ONLY") readOnly = true + else if (sql === "ROLLBACK") { + if (rollbackFails) throw new Error("lost connection during rollback") + readOnly = false + } else if (sql.includes("custom_write_udf")) { + if (readOnly) throw new Error("cannot execute INSERT in a read-only transaction") + writes++ + } else if (sql.includes("pg_notify") && !readOnly) notifications++ + return { fields: [{ name: "value" }], rows: [{ value: 1 }] } + }, + release(discard?: boolean) { + releases.push(discard) + }, + } + } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres", query_timeout_ms: 0 }) + await connector.connect() + const execute = (sql: string) => connector.execute(sql, 1, undefined, { queryTimeoutMs: 0, readOnly: true }) + return { connector, execute, queries, releases, writes: () => writes, notifications: () => notifications } +} + +test("Postgres read-only extraction rolls back pg_notify on the same checked-out client", async () => { + const db = await database() + try { + expect((await db.execute("SELECT pg_notify('channel', 'payload')")).rows).toEqual([[1]]) + expect(db.notifications()).toBe(0) + expect(db.queries).toEqual(["BEGIN READ ONLY", "SELECT pg_notify('channel', 'payload') LIMIT 2", "ROLLBACK"]) + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +test("Postgres rejects a writing UDF at the read-only transaction boundary", async () => { + const db = await database() + try { + await expect(db.execute("SELECT custom_write_udf()")).rejects.toThrow(/read-only transaction/) + expect(db.writes()).toBe(0) + expect(db.queries.at(-1)).toBe("ROLLBACK") + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +test("Postgres discards a client when read-only rollback fails", async () => { + const db = await database(true) + try { + await db.execute("SELECT 1") + expect(db.releases).toEqual([true]) + } finally { + await db.connector.close() + } +}) + +async function queuedDatabase() { + const queries: string[] = [] + const releases: unknown[] = [] + const client = { + async query(sql: string) { + queries.push(sql) + return { fields: [{ name: "value" }], rows: [{ value: 1 }] } + }, + release(discard?: boolean) { + releases.push(discard) + }, + } + const admitted = Promise.withResolvers() + mock.module("pg", () => ({ + default: { + Pool: class { + connect() { return admitted.promise } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres", query_timeout_ms: 0 }) + await connector.connect() + return { connector, queries, releases, admit: () => admitted.resolve(client) } +} + +test("Postgres abandons an aborted pool acquisition and releases the late client without executing SQL", async () => { + const db = await queuedDatabase() + const controller = new AbortController() + const timeout = new QueryTimeoutError({ engine: "PostgreSQL", timeoutMs: 10 }) + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + }).catch((error) => error) + controller.abort(timeout) + try { + expect(await Promise.race([execution, Bun.sleep(100).then(() => "still queued")])).toBe(timeout) + } finally { + db.admit() + await execution + await db.connector.close() + } + expect(db.queries).toEqual([]) + expect(db.releases).toEqual([undefined]) +}) + +test("Postgres executes a pool client admitted before cancellation", async () => { + const db = await queuedDatabase() + const controller = new AbortController() + try { + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + }) + db.admit() + expect((await execution).rows).toEqual([[1]]) + controller.abort() + expect(db.queries).toEqual(["INSERT INTO sentinel VALUES (1)"]) + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +test("Postgres abort discards an active statement without waiting for its response or rollback", async () => { + const started = Promise.withResolvers() + const finished = Promise.withResolvers<{ fields: never[]; rows: never[] }>() + const releases: unknown[] = [] + const queries: string[] = [] + mock.module("pg", () => ({ default: { Pool: class { + async connect() { + return { + query(sql: string) { + queries.push(sql) + if (sql === "BEGIN READ ONLY") return Promise.resolve({ fields: [], rows: [] }) + started.resolve() + return finished.promise + }, + release(discard?: boolean) { releases.push(discard) }, + } + } + async end() {} + } } })) + const connector = await connect({ type: "postgres", query_timeout_ms: 0 }) + await connector.connect() + const controller = new AbortController() + const reason = new Error("session stopped") + const execution = connector.execute("SELECT value FROM source", 100, undefined, { + signal: controller.signal, + readOnly: true, + }).catch((error) => error) + try { + await started.promise + controller.abort(reason) + expect(await Promise.race([execution, Bun.sleep(100).then(() => "still executing")])).toBe(reason) + expect(releases).toEqual([true]) + expect(queries).toEqual(["BEGIN READ ONLY", "SELECT value FROM source LIMIT 101"]) + } finally { + finished.resolve({ fields: [], rows: [] }) + await execution + await connector.close() + } +}) + +test("Postgres never starts user SQL when cancellation arrives during session setup", async () => { + const queries: string[] = [] + const releases: unknown[] = [] + const setupStarted = Promise.withResolvers() + const finishSetup = Promise.withResolvers() + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + async query(sql: string) { + queries.push(sql) + if (sql === "SHOW statement_timeout") { + setupStarted.resolve() + await finishSetup.promise + return { fields: [], rows: [{ statement_timeout: "0" }] } + } + return { fields: [], rows: [] } + }, + release(discard?: boolean) { releases.push(discard) }, + } + } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres" }) + await connector.connect() + const controller = new AbortController() + const timeout = new QueryTimeoutError({ engine: "PostgreSQL", timeoutMs: 10 }) + try { + const execution = connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + queryTimeoutMs: 10, + }).catch((error) => error) + await setupStarted.promise + controller.abort(timeout) + finishSetup.resolve() + expect(await execution).toBe(timeout) + expect(queries).toEqual(["SHOW statement_timeout"]) + expect(releases).toEqual([true]) + } finally { + finishSetup.resolve() + await connector.close() + } +}) + +async function probeDatabase(config: Record = { query_timeout_ms: 1000 }) { + const queries: string[] = [] + const releases: unknown[] = [] + const started = Promise.withResolvers() + const shown = Promise.withResolvers<{ fields: never[]; rows: { statement_timeout: string }[] }>() + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + async query(sql: string) { + queries.push(sql) + if (sql === "SHOW statement_timeout") { + started.resolve() + return shown.promise + } + return { fields: [{ name: "value" }], rows: [{ value: 1 }] } + }, + release(discard?: boolean) { releases.push(discard) }, + } + } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres", ...config }) + await connector.connect() + return { connector, queries, releases, started: started.promise, shown } +} + +for (const pgTimeoutReason of [false, true]) { + test(`Postgres abandons a stalled initial timeout probe with the exact ${pgTimeoutReason ? "PostgreSQL-shaped" : "caller"} abort reason`, async () => { + const db = await probeDatabase() + const controller = new AbortController() + const reason = pgTimeoutReason + ? Object.assign(new Error("canceling statement due to statement timeout"), { code: "57014" }) + : new Error("caller deadline expired") + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + }).catch((error) => error) + try { + await db.started + controller.abort(reason) + expect(await Promise.race([execution, Bun.sleep(100).then(() => "still probing")])).toBe(reason) + expect(db.queries).toEqual(["SHOW statement_timeout"]) + expect(db.releases).toEqual([true]) + } finally { + await db.connector.close() + } + }) +} + +test("Postgres abandons a stalled initial timeout probe at the resolved deadline without a signal", async () => { + const db = await probeDatabase() + try { + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + queryTimeoutMs: 10, + }).catch((error) => error) + await db.started + const error = await Promise.race([execution, Bun.sleep(100).then(() => "still probing")]) + expect(error).toBeInstanceOf(QueryTimeoutError) + expect(error.timeoutMs).toBe(10) + expect(db.queries).toEqual(["SHOW statement_timeout"]) + expect(db.releases).toEqual([true]) + } finally { + await db.connector.close() + } +}) + +for (const config of [ + { query_timeout_ms: 0, statement_timeout: 20 }, + { query_timeout_ms: 5000, statement_timeout: 20 }, +]) { + test(`Postgres bounds a stalled initial timeout probe by the effective deadline (query_timeout_ms ${config.query_timeout_ms})`, async () => { + const db = await probeDatabase(config) + try { + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)").catch((error) => error) + await db.started + const error = await Promise.race([execution, Bun.sleep(1000).then(() => "still probing")]) + expect(error).toBeInstanceOf(QueryTimeoutError) + expect(error.timeoutMs).toBe(20) + expect(db.queries).toEqual(["SHOW statement_timeout"]) + expect(db.releases).toEqual([true]) + } finally { + await db.connector.close() + } + }) +} + +test("Postgres bounds a stalled initial timeout probe even when the caller's signal never fires", async () => { + const db = await probeDatabase() + const controller = new AbortController() + try { + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + queryTimeoutMs: 20, + }).catch((error) => error) + await db.started + const error = await Promise.race([execution, Bun.sleep(1000).then(() => "still probing")]) + expect(error).toBeInstanceOf(QueryTimeoutError) + expect(error.timeoutMs).toBe(20) + expect(db.queries).toEqual(["SHOW statement_timeout"]) + expect(db.releases).toEqual([true]) + } finally { + await db.connector.close() + } +}) + +test("Postgres caps a statement_timeout above the timer limit instead of timing out the probe at once", async () => { + const db = await probeDatabase({ query_timeout_ms: 0, statement_timeout: 3_000_000_000 }) + try { + const execution = db.connector.execute("INSERT INTO sentinel VALUES (1)").catch((error) => error) + await db.started + await Bun.sleep(50) + db.shown.resolve({ fields: [], rows: [{ statement_timeout: "0" }] }) + const result = await execution + expect(result).not.toBeInstanceOf(Error) + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +test("Postgres bounds a stalled SET statement_timeout and discards the client", async () => { + const queries: string[] = [] + const releases: unknown[] = [] + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + async query(sql: string) { + queries.push(sql) + if (sql === "SHOW statement_timeout") return { fields: [], rows: [{ statement_timeout: "0" }] } + if (sql.startsWith("SET statement_timeout")) return new Promise(() => {}) + return { fields: [], rows: [] } + }, + release(discard?: boolean) { releases.push(discard) }, + } + } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres", query_timeout_ms: 1000 }) + await connector.connect() + const controller = new AbortController() + try { + const execution = connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + queryTimeoutMs: 20, + }).catch((error) => error) + const error = await Promise.race([execution, Bun.sleep(1000).then(() => "still setting")]) + expect(error).toBeInstanceOf(QueryTimeoutError) + expect(error.timeoutMs).toBe(20) + expect(queries).toEqual(["SHOW statement_timeout", "SET statement_timeout TO 20"]) + expect(releases).toEqual([true]) + } finally { + await connector.close() + } +}) + +test("Postgres executes user SQL after a fast initial timeout probe", async () => { + const db = await probeDatabase() + const controller = new AbortController() + try { + db.shown.resolve({ fields: [], rows: [{ statement_timeout: "0" }] }) + const result = await db.connector.execute("INSERT INTO sentinel VALUES (1)", undefined, undefined, { + signal: controller.signal, + queryTimeoutMs: 10, + }) + expect(result.rows).toEqual([[1]]) + controller.abort(new Error("after completion")) + expect(db.queries).toEqual([ + "SHOW statement_timeout", + "SET statement_timeout TO 10", + "INSERT INTO sentinel VALUES (1)", + "RESET statement_timeout", + ]) + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +async function timeoutDatabase() { + const queries: string[] = [] + let statementTimeout = "1s" + const client = { + async query(sql: string) { + queries.push(sql) + if (sql === "SHOW statement_timeout") { + return { fields: [], rows: [{ statement_timeout: statementTimeout }] } + } + const set = /^SET statement_timeout (?:=|TO) (\d+)$/i.exec(sql) + if (set) statementTimeout = set[1]! + else if (/^(RESET statement_timeout|RESET ALL|DISCARD ALL)$/i.test(sql)) statementTimeout = "0" + return { fields: [], rows: [] } + }, + release() {}, + } + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return client + } + async end() {} + }, + }, + })) + const connector = await connect({ type: "postgres" }) + await connector.connect() + const execute = (sql: string) => connector.execute(sql, 1, undefined, { queryTimeoutMs: 5000 }) + return { connector, execute, queries } +} + +test("Postgres preserves a stricter cached statement timeout for ordinary queries", async () => { + const db = await timeoutDatabase() + try { + await db.execute("SELECT 1") + await db.execute("SELECT 2") + expect(db.queries).toEqual(["SHOW statement_timeout", "SELECT 1 LIMIT 2", "SELECT 2 LIMIT 2"]) + } finally { + await db.connector.close() + } +}) + +for (const statement of ["SET STATEMENT_TIMEOUT = 0", "RESET statement_timeout", "RESET ALL", "discard all"]) { + test(`Postgres rechecks a stricter cached timeout after ${statement}`, async () => { + const db = await timeoutDatabase() + try { + await db.execute("SELECT 1") + expect(db.queries).toEqual(["SHOW statement_timeout", "SELECT 1 LIMIT 2"]) + await db.execute(statement) + await db.execute("SELECT 2") + expect(db.queries).toEqual([ + "SHOW statement_timeout", + "SELECT 1 LIMIT 2", + statement, + "SHOW statement_timeout", + "SET statement_timeout TO 5000", + "SELECT 2 LIMIT 2", + "RESET statement_timeout", + ]) + } finally { + await db.connector.close() + } + }) +} diff --git a/packages/drivers/test/query-timeout.test.ts b/packages/drivers/test/query-timeout.test.ts new file mode 100644 index 0000000000..ca44f3f734 --- /dev/null +++ b/packages/drivers/test/query-timeout.test.ts @@ -0,0 +1,316 @@ +/** + * Query deadline contract: policy resolution, the typed error, and how the + * Postgres and MongoDB drivers plumb the deadline to the server. + */ +import { describe, expect, mock, test } from "bun:test" +import { + DEFAULT_QUERY_TIMEOUT_MS, + MAX_TIMER_MS, + QUERY_TIMEOUT_ENV, + resolveQueryTimeout, + tighter, +} from "../src/query-timeout" +import { QUERY_TIMEOUT_CODE, QueryTimeoutError, isQueryTimeoutError } from "../src/types" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("pg", "mongodb") + +describe("resolveQueryTimeout", () => { + const cfg = (query_timeout_ms?: unknown) => ({ type: "x", query_timeout_ms }) + + test("defaults to 120s", () => { + expect(resolveQueryTimeout({ type: "x" }, undefined, {})).toEqual({ ms: DEFAULT_QUERY_TIMEOUT_MS, source: "default" }) + expect(DEFAULT_QUERY_TIMEOUT_MS).toBe(120_000) + }) + + test("precedence: call > connection > env > default", () => { + const env = { [QUERY_TIMEOUT_ENV]: "3000" } + expect(resolveQueryTimeout(cfg(2000), { queryTimeoutMs: 1000 }, env)).toEqual({ ms: 1000, source: "call" }) + expect(resolveQueryTimeout(cfg(2000), undefined, env)).toEqual({ ms: 2000, source: "connection" }) + expect(resolveQueryTimeout(cfg(), undefined, env)).toEqual({ ms: 3000, source: "env" }) + }) + + test("per-call zero uses the default while connection settings can disable it", () => { + expect(resolveQueryTimeout(cfg(), { queryTimeoutMs: 0 }, {})).toEqual({ ms: DEFAULT_QUERY_TIMEOUT_MS, source: "default" }) + expect(resolveQueryTimeout(cfg(750), { queryTimeoutMs: 0 }, {})).toEqual({ ms: 750, source: "connection" }) + expect(resolveQueryTimeout(cfg(0), undefined, {}).ms).toBeUndefined() + expect(resolveQueryTimeout(cfg(null), undefined, {}).ms).toBeUndefined() + expect(resolveQueryTimeout(cfg(), undefined, { [QUERY_TIMEOUT_ENV]: "0" }).ms).toBe(DEFAULT_QUERY_TIMEOUT_MS) + // a connection's 0 beats the env deadline + expect(resolveQueryTimeout(cfg(0), undefined, { [QUERY_TIMEOUT_ENV]: "500" }).ms).toBeUndefined() + }) + + test("unusable values fall through to the next source", () => { + const env = { [QUERY_TIMEOUT_ENV]: "750" } + for (const bad of ["abc", -5, NaN, true, ""]) { + expect(resolveQueryTimeout(cfg(bad), undefined, env)).toEqual({ ms: 750, source: "env" }) + } + expect(resolveQueryTimeout(cfg(), undefined, { [QUERY_TIMEOUT_ENV]: "nope" }).source).toBe("default") + expect(resolveQueryTimeout(cfg("2500"), undefined, {}).ms).toBe(2500) + }) + + test("over-large values clamp to the timer maximum instead of overflowing", () => { + expect(resolveQueryTimeout(cfg(1e15), undefined, {}).ms).toBe(MAX_TIMER_MS) + }) + + test("tighter keeps the stricter positive limit", () => { + expect(tighter(undefined, undefined)).toBeUndefined() + expect(tighter(5, undefined)).toBe(5) + expect(tighter(undefined, 7)).toBe(7) + expect(tighter(5, 7)).toBe(5) + }) +}) + +describe("QueryTimeoutError", () => { + test("carries a stable code and names the deadline and engine", () => { + const e = new QueryTimeoutError({ engine: "PostgreSQL", timeoutMs: 120_000 }) + expect(e.code).toBe(QUERY_TIMEOUT_CODE) + expect(isQueryTimeoutError(e)).toBe(true) + expect(e.message).toContain("QUERY_TIMEOUT") + expect(e.message).toContain("PostgreSQL") + expect(e.message).toContain("120s") + expect(e.message).toContain("query_timeout_ms") + expect(e.message).not.toContain("0 disables") + expect(e.cancelled).toBe(true) + expect(String(e).toLowerCase()).toContain("timeout") // categorizeQueryError keys off this + }) + + test("an abandoned (not cancelled) query says it may still be running", () => { + const e = new QueryTimeoutError({ engine: "Snowflake", timeoutMs: 1500, cancelled: false }) + expect(e.cancelled).toBe(false) + expect(e.message).toContain("may still be running") + expect(e.message).toContain("1500ms") + }) + + test("isQueryTimeoutError ignores ordinary errors", () => { + expect(isQueryTimeoutError(new Error("timeout"))).toBe(false) + expect(isQueryTimeoutError(null)).toBe(false) + expect(isQueryTimeoutError("QUERY_TIMEOUT")).toBe(false) + }) +}) + +describe("PostgreSQL deadline plumbing", () => { + function fakePg(opts: { failWith?: any; resetFails?: boolean } = {}) { + const sent: string[] = [] + const released: Array = [] + mock.module("pg", () => ({ + default: { + Pool: class { + async connect() { + return { + query: async (sql: string) => { + // The server-default probe is not part of the SET/RESET sequence under test. + if (sql === "SHOW statement_timeout") return { fields: [], rows: [{ statement_timeout: "0" }] } + sent.push(sql) + if (sql === "RESET statement_timeout" && opts.resetFails) throw new Error("reset failed") + if (opts.failWith && !sql.includes("statement_timeout")) throw opts.failWith + return { fields: [], rows: [] } + }, + release: (arg?: unknown) => released.push(arg), + } + } + }, + }, + })) + return { sent, released } + } + const base = { type: "postgres", host: "localhost", password: "x" } + + test("every query runs under the default 120s statement_timeout and resets it before release", async () => { + const { sent, released } = fakePg() + const { connect } = await import("../src/postgres") + const c = await connect(base) + await c.connect() + await c.execute("SELECT 1") + expect(sent[0]).toBe("SET statement_timeout TO 120000") + expect(sent.at(-1)).toBe("RESET statement_timeout") + expect(released).toEqual([undefined]) + }) + + test("connection query_timeout_ms, call option and 0 are honoured", async () => { + const { connect } = await import("../src/postgres") + let f = fakePg() + let c = await connect({ ...base, query_timeout_ms: 5000 }) + await c.connect() + await c.execute("SELECT 1") + expect(f.sent[0]).toBe("SET statement_timeout TO 5000") + + f = fakePg() + c = await connect({ ...base, query_timeout_ms: 5000 }) + await c.connect() + await c.execute("SELECT 1", 10, undefined, { queryTimeoutMs: 900 }) + expect(f.sent[0]).toBe("SET statement_timeout TO 900") + + f = fakePg() + c = await connect({ ...base, query_timeout_ms: 0 }) + await c.connect() + await c.execute("SELECT 1") + expect(f.sent.some((q) => q.includes("statement_timeout"))).toBe(false) + }) + + test("a tighter configured statement_timeout is preserved; a looser one is capped by the deadline", async () => { + const { connect } = await import("../src/postgres") + let f = fakePg() + let c = await connect({ ...base, statement_timeout: 2000 }) + await c.connect() + await c.execute("SELECT 1") + expect(f.sent[0]).toBe("SET statement_timeout TO 2000") + + f = fakePg() + c = await connect({ ...base, statement_timeout: 600_000 }) + await c.connect() + await c.execute("SELECT 1") + expect(f.sent[0]).toBe("SET statement_timeout TO 120000") + + // disabling the common deadline keeps the explicit limit + f = fakePg() + c = await connect({ ...base, statement_timeout: 2000, query_timeout_ms: 0 }) + await c.connect() + await c.execute("SELECT 1") + expect(f.sent[0]).toBe("SET statement_timeout TO 2000") + }) + + test("a server-side statement timeout becomes a QUERY_TIMEOUT error", async () => { + const err = Object.assign(new Error("canceling statement due to statement timeout"), { code: "57014" }) + const { sent } = fakePg({ failWith: err }) + const { connect } = await import("../src/postgres") + const c = await connect({ ...base, query_timeout_ms: 1500 }) + await c.connect() + const caught = await c.execute("SELECT pg_sleep(99)").catch((e) => e) + expect(isQueryTimeoutError(caught)).toBe(true) + expect(caught.timeoutMs).toBe(1500) + expect(sent.at(-1)).toBe("RESET statement_timeout") // reset even on failure + }) + + test("a user cancel (same SQLSTATE) is not reported as a timeout", async () => { + const err = Object.assign(new Error("canceling statement due to user request"), { code: "57014" }) + fakePg({ failWith: err }) + const { connect } = await import("../src/postgres") + const c = await connect(base) + await c.connect() + const caught = await c.execute("SELECT 1").catch((e) => e) + expect(isQueryTimeoutError(caught)).toBe(false) + }) + + test("a client whose reset failed is discarded instead of returned to the pool", async () => { + const { released } = fakePg({ resetFails: true }) + const { connect } = await import("../src/postgres") + const c = await connect(base) + await c.connect() + await c.execute("SELECT 1") + expect(released).toEqual([true]) + }) +}) + +describe("MongoDB deadline plumbing", () => { + function fakeMongo(opts: { failWith?: any } = {}) { + const seen: Record = {} + const cursor = (name: string) => ({ + project: () => cursor(name), + sort: () => cursor(name), + skip: () => cursor(name), + limit: () => cursor(name), + toArray: async () => { + if (opts.failWith) throw opts.failWith + return [{ a: 1 }] + }, + async *[Symbol.asyncIterator]() { + if (opts.failWith) throw opts.failWith + yield { a: 1 } + }, + }) + const coll = { + find: (_f: unknown, o: unknown) => ((seen.find = o), cursor("find")), + // `distinct` is executed as a bounded `$group` aggregate; record it under its own key. + aggregate: (p: unknown, o: unknown) => { + const grouped = Array.isArray(p) && p.some((stage) => stage && typeof stage === "object" && "$group" in stage) + seen[grouped ? "distinct" : "aggregate"] = o + return cursor("aggregate") + }, + countDocuments: async (_f: unknown, o: unknown) => { + seen.countDocuments = o + if (opts.failWith) throw opts.failWith + return 3 + }, + distinct: async (_field: unknown, _f: unknown, o: unknown) => ((seen.distinct = o), ["x"]), + listIndexes: (o: unknown) => ((seen.listIndexes = o), { + async *[Symbol.asyncIterator]() { yield { name: "_id_", key: { _id: 1 } } }, + }), + } + mock.module("mongodb", () => ({ + default: { + MongoClient: class { + async connect() {} + async close() {} + db() { + return { + databaseName: "test", + collection: () => coll, + listCollections: () => ({ toArray: async () => [{ name: "users", type: "collection" }] }), + } + } + }, + }, + })) + return seen + } + const run = (c: any, command: string, extra: object = {}, options?: object) => + c.execute(JSON.stringify({ database: "test", collection: "users", command, field: "a", ...extra }), 10, undefined, options) + + test("maxTimeMS is set on every read path from the default", async () => { + const seen = fakeMongo() + const { connect } = await import("../src/mongodb") + const c = await connect({ type: "mongodb", host: "localhost", database: "test" }) + await c.connect() + await run(c, "find") + await run(c, "aggregate", { pipeline: [{ $match: {} }] }) + await run(c, "countDocuments") + await run(c, "distinct") + await run(c, "listIndexes") + for (const op of ["find", "aggregate", "countDocuments", "distinct", "listIndexes"]) { + expect(seen[op]).toEqual({ maxTimeMS: 120_000 }) + } + }) + + test("connection value, call option and 0 are honoured", async () => { + const { connect } = await import("../src/mongodb") + let seen = fakeMongo() + let c = await connect({ type: "mongodb", host: "localhost", database: "test", query_timeout_ms: 4000 }) + await c.connect() + await run(c, "find") + expect(seen.find).toEqual({ maxTimeMS: 4000 }) + await run(c, "find", {}, { queryTimeoutMs: 250 }) + expect(seen.find).toEqual({ maxTimeMS: 250 }) + + seen = fakeMongo() + c = await connect({ type: "mongodb", host: "localhost", database: "test", query_timeout_ms: 0 }) + await c.connect() + await run(c, "find") + await run(c, "countDocuments") + expect(seen.find).toEqual({}) + expect(seen.countDocuments).toEqual({}) + }) + + test("MaxTimeMSExpired becomes a QUERY_TIMEOUT error", async () => { + fakeMongo({ failWith: Object.assign(new Error("operation exceeded time limit"), { code: 50, codeName: "MaxTimeMSExpired" }) }) + const { connect } = await import("../src/mongodb") + const c = await connect({ type: "mongodb", host: "localhost", database: "test", query_timeout_ms: 900 }) + await c.connect() + for (const command of ["find", "countDocuments"]) { + const caught = await run(c, command).catch((e: any) => e) + expect(isQueryTimeoutError(caught)).toBe(true) + expect(caught.timeoutMs).toBe(900) + expect(caught.engine).toBe("MongoDB") + } + }) + + test("other server errors pass through unchanged", async () => { + fakeMongo({ failWith: Object.assign(new Error("not authorized"), { code: 13 }) }) + const { connect } = await import("../src/mongodb") + const c = await connect({ type: "mongodb", host: "localhost", database: "test" }) + await c.connect() + const caught = await run(c, "countDocuments").catch((e: any) => e) + expect(isQueryTimeoutError(caught)).toBe(false) + expect(caught.message).toBe("not authorized") + }) +}) diff --git a/packages/drivers/test/source-byte-limit.test.ts b/packages/drivers/test/source-byte-limit.test.ts new file mode 100644 index 0000000000..93cf03bcca --- /dev/null +++ b/packages/drivers/test/source-byte-limit.test.ts @@ -0,0 +1,196 @@ +import { expect, mock, test } from "bun:test" +import { createRequire } from "node:module" +import { dirname, join } from "node:path" +import { connect as connectPostgres } from "../src/postgres" +import { connect as connectMongo } from "../src/mongodb" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("pg", "mongodb") + +// Use pg's real row parser and accumulation behavior while replacing only transport/pooling. +// Import its implementation directly so other tests' pg module mocks cannot replace it. +const { default: Query } = await import(join(dirname(createRequire(import.meta.url).resolve("pg")), "query.js")) + +async function postgres(rows: unknown[][]) { + const queries: string[] = [] + const releases: unknown[] = [] + let consumed = 0 + let discarded = false + let stream: any + const fields = [{ name: "value", dataTypeID: 25, format: "text" }] + const client = { + query(query: any) { + queries.push(typeof query === "string" ? query : query.text) + if (typeof query === "string") { + if (!query.startsWith("SELECT")) return Promise.resolve({ fields: [], rows: [] }) + consumed = rows.length + return Promise.resolve({ fields, rows: rows.map(([value]) => ({ value })) }) + } + stream = query + queueMicrotask(() => { + query.handleRowDescription({ fields }) + for (const row of rows) { + if (discarded) return + consumed++ + query.handleDataRow({ fields: row }) + } + query.handleReadyForQuery({}) + }) + return query + }, + release(discard?: boolean) { + releases.push(discard) + discarded = Boolean(discard) + }, + } + mock.module("pg", () => ({ + default: { + Query, + Pool: class { + async connect() { + return client + } + async end() {} + }, + }, + })) + const connector = await connectPostgres({ type: "postgres", query_timeout_ms: 0 }) + await connector.connect() + return { connector, queries, releases, consumed: () => consumed, bufferedRows: () => stream?._result.rows.length } +} + +test("Postgres stops row delivery and discards the client when extraction exceeds maxResultBytes", async () => { + const db = await postgres([["a"], ["x".repeat(100)], ["must not be fetched"]]) + try { + await expect( + db.connector.execute("SELECT value FROM source", 100, undefined, { + queryTimeoutMs: 0, + readOnly: true, + maxResultBytes: 20, + }), + ).rejects.toMatchObject({ code: "RESULT_BYTE_LIMIT" }) + expect(db.consumed()).toBe(2) + expect(db.bufferedRows()).toBe(0) + expect(db.releases).toEqual([true]) + expect(db.queries).toEqual(["BEGIN READ ONLY", "SELECT value FROM source LIMIT 101"]) + } finally { + await db.connector.close() + } +}) + +test("Postgres bounded extraction preserves rows and rolls back a successful read-only transaction", async () => { + const db = await postgres([["a"], ["b"]]) + try { + const result = await db.connector.execute("SELECT value FROM source", 100, undefined, { + queryTimeoutMs: 0, + readOnly: true, + maxResultBytes: 20, + }) + expect(result).toEqual({ columns: ["value"], rows: [["a"], ["b"]], row_count: 2, truncated: false }) + expect(db.connector.supportsResultByteLimit).toBe(true) + expect(db.bufferedRows()).toBe(0) + expect(db.queries.at(-1)).toBe("ROLLBACK") + expect(db.releases).toEqual([undefined]) + } finally { + await db.connector.close() + } +}) + +async function mongo(docs: Record[]) { + let consumed = 0 + let closed = false + let batchSize: number | undefined + const cursor = { + limit() { + return this + }, + batchSize(size: number) { + batchSize = size + return this + }, + async toArray() { + consumed = docs.length + return docs + }, + async close() { + closed = true + }, + async *[Symbol.asyncIterator]() { + for (const doc of docs) { + if (closed) return + consumed++ + yield doc + } + }, + } + mock.module("mongodb", () => ({ + default: { + MongoClient: class { + async connect() {} + async close() {} + db() { + return { + databaseName: "test", + listCollections: () => ({ toArray: async () => [{ name: "source", type: "collection" }] }), + collection: () => ({ find: () => cursor, aggregate: () => cursor }), + } + } + }, + }, + })) + const connector = await connectMongo({ type: "mongodb" }) + await connector.connect() + return { connector, consumed: () => consumed, closed: () => closed, batchSize: () => batchSize } +} + +test.each(["find", "aggregate"])("Mongo %s closes the cursor before fetching past maxResultBytes", async (command) => { + const db = await mongo([{ value: "a" }, { value: "x".repeat(100) }, { value: "must not be fetched" }]) + try { + await expect( + db.connector.execute(JSON.stringify({ command, collection: "source", pipeline: [] }), 100, undefined, { + queryTimeoutMs: 0, + maxResultBytes: 20, + }), + ).rejects.toMatchObject({ code: "RESULT_BYTE_LIMIT" }) + expect(db.consumed()).toBe(2) + expect(db.closed()).toBe(true) + expect(db.batchSize()).toBe(1) + } finally { + await db.connector.close() + } +}) + +test("Mongo bounded extraction counts null padding introduced by heterogeneous document columns", async () => { + const db = await mongo([{ a: 1 }, { b: 2 }]) + try { + await expect( + db.connector.execute(JSON.stringify({ command: "find", collection: "source" }), 100, undefined, { + queryTimeoutMs: 0, + maxResultBytes: 10, + }), + ).rejects.toMatchObject({ code: "RESULT_BYTE_LIMIT" }) + expect(db.closed()).toBe(true) + } finally { + await db.connector.close() + } +}) + +test("Mongo bounded extraction preserves ordinary tabular values", async () => { + const db = await mongo([{ value: "a" }, { value: "b" }]) + try { + const result = await db.connector.execute( + JSON.stringify({ command: "find", collection: "source" }), + 100, + undefined, + { + queryTimeoutMs: 0, + maxResultBytes: 20, + }, + ) + expect(result).toEqual({ columns: ["value"], rows: [["a"], ["b"]], row_count: 2, truncated: false }) + expect(db.connector.supportsResultByteLimit).toBe(true) + expect(db.closed()).toBe(true) + } finally { + await db.connector.close() + } +}) diff --git a/packages/drivers/test/sqlserver-unit.test.ts b/packages/drivers/test/sqlserver-unit.test.ts index 776f46a488..8b3a73485c 100644 --- a/packages/drivers/test/sqlserver-unit.test.ts +++ b/packages/drivers/test/sqlserver-unit.test.ts @@ -8,6 +8,9 @@ * - Result format mapping */ import { describe, test, expect, mock, beforeEach } from "bun:test" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("mssql", "@azure/identity", "node:child_process") // --- Mock mssql --- diff --git a/packages/drivers/test/trino-unit.test.ts b/packages/drivers/test/trino-unit.test.ts index f3cd2889e5..122536df64 100644 --- a/packages/drivers/test/trino-unit.test.ts +++ b/packages/drivers/test/trino-unit.test.ts @@ -6,6 +6,9 @@ * - catalog-scoped introspection SQL */ import { beforeEach, describe, expect, mock, test } from "bun:test" +import { restoreModuleMocksAfterTests } from "./module-mock" + +await restoreModuleMocksAfterTests("trino-client") let mockCreateCalls: any[] = [] let mockQueryCalls: string[] = [] diff --git a/packages/opencode/bin/altimate-code b/packages/opencode/bin/altimate-code index b441d008db..2fc6dd92cd 100755 --- a/packages/opencode/bin/altimate-code +++ b/packages/opencode/bin/altimate-code @@ -65,7 +65,13 @@ function run(target) { console.error(result.error.message) process.exit(1) } - const code = typeof result.status === "number" ? result.status : 0 + // A child killed by a signal (e.g. the kernel OOM killer) has no exit status; report it the way + // a shell would (128 + signal number) instead of exiting 0 as if the run had succeeded. + if (result.signal) { + console.error(`altimate-code terminated by ${result.signal}`) + process.exit(128 + (os.constants.signals[result.signal] ?? 1)) + } + const code = typeof result.status === "number" ? result.status : 1 process.exit(code) } diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 1714dafeaf..764cae76e0 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -48,6 +48,7 @@ "@types/turndown": "5.0.5", "@types/yargs": "17.0.33", "@typescript/native-preview": "catalog:", + "ajv": "8.20.0", "drizzle-orm": "catalog:", "playwright-core": "1.59.1", "prettier": "3.6.2", @@ -86,6 +87,7 @@ "@effect/platform-node": "catalog:", "@ff-labs/fff-bun": "0.9.4", "@gitlab/opencode-gitlab-auth": "1.3.3", + "@hono/standard-validator": "catalog:", "@modelcontextprotocol/sdk": "1.29.0", "@octokit/graphql": "9.0.2", "@octokit/rest": "catalog:", @@ -127,7 +129,6 @@ "gitlab-ai-provider": "6.9.3", "glob": "13.0.5", "google-auth-library": "10.5.0", - "@hono/standard-validator": "catalog:", "gray-matter": "4.0.3", "hono": "catalog:", "hono-openapi": "catalog:", diff --git a/packages/opencode/script/bench-sql-materialize.ts b/packages/opencode/script/bench-sql-materialize.ts new file mode 100644 index 0000000000..3094640258 --- /dev/null +++ b/packages/opencode/script/bench-sql-materialize.ts @@ -0,0 +1,91 @@ +import assert from "node:assert/strict" +import { mkdtemp, mkdir, rm } from "node:fs/promises" +import { tmpdir } from "node:os" +import { join, resolve } from "node:path" +import { pathToFileURL } from "node:url" + +// bun run script/bench-sql-materialize.ts [label] [rows] [materialize-module] +// The optional module lets the same workload measure a saved implementation. +const label = Bun.argv[2] ?? "current" +const rows = Number(Bun.argv[3] ?? 1_000_000) +assert(Number.isSafeInteger(rows) && rows > 0 && rows <= 20_000_000, "Invalid row count") +const isolated = await mkdtemp(join(tmpdir(), "sql-materialize-evaluation-run-")) +for (const [key, name] of Object.entries({ + XDG_DATA_HOME: "data", + XDG_CONFIG_HOME: "config", + XDG_CACHE_HOME: "cache", + XDG_STATE_HOME: "state", + OPENCODE_TEST_HOME: "home", + OPENCODE_TEST_MANAGED_CONFIG_DIR: "managed", +})) { + process.env[key] = join(isolated, name) + await mkdir(process.env[key]!, { recursive: true }) +} +process.env.ALTIMATE_TELEMETRY_DISABLED = "true" +process.env.ALTIMATE_CODE_DISABLE_OS_CREDENTIAL_STORE = "1" +process.env.ALTIMATE_DISABLE_WORKSPACE = "1" +process.env.OPENCODE_DISABLE_PROJECT_COPY_REFRESH = "1" +process.env.OPENCODE_MODELS_PATH = resolve(import.meta.dir, "../test/tool/fixtures/models-api.json") + +const Registry = await import("../src/altimate/native/connections/registry") +const { closeScratch, getScratch } = await import("../src/altimate/native/connections/scratch") +const moduleURL = Bun.argv[4] + ? pathToFileURL(resolve(Bun.argv[4])).href + : new URL("../src/altimate/tools/sql-materialize.ts", import.meta.url).href +const { materialize } = (await import(moduleURL)) as typeof import("../src/altimate/tools/sql-materialize") + +try { + Registry.setConfigs({ evaluation_source: { type: "sqlite", path: ":memory:" } }) + const source = await Registry.get("evaluation_source") + await source.execute( + `CREATE TABLE source_rows AS + WITH RECURSIVE seq(n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM seq WHERE n < ${rows}) + SELECT n AS id, n % 1000 AS group_id, n / 8.0 AS amount, + CASE WHEN n % 10 = 0 THEN NULL ELSE printf('row %d ''quoted''%s雪', n, char(10)) END AS note + FROM seq`, + undefined, + undefined, + { noLimit: true, queryTimeoutMs: 0 }, + ) + const aggregate = + "count(*), sum(id), sum(group_id), sum(amount), sum(length(note)), sum(CASE WHEN note IS NULL THEN 1 ELSE 0 END)" + const expected = await source.execute(`SELECT ${aggregate} FROM source_rows`) + console.log(JSON.stringify({ label, phase: "seeded", rows, source: "sqlite :memory:", bun: Bun.version })) + + const start = performance.now() + const result = await materialize({ + source_warehouse: "evaluation_source", + sql: "SELECT id, group_id, amount, note FROM source_rows", + target_table: "evaluation_rows", + max_rows: rows, + query_timeout_ms: 0, + }) + const elapsedMs = performance.now() - start + + const scratch = await getScratch() + const actual = await scratch.execute(`SELECT ${aggregate} FROM evaluation_rows`) + assert.equal(result.rows, rows) + assert.equal(result.total_rows, rows) + assert.equal(result.materialized, true) + assert.deepEqual( + actual.rows.map((r) => r.map(String)), + expected.rows.map((r) => r.map(String)), + ) + console.log( + JSON.stringify({ + label, + rows, + elapsed_ms: Math.round(elapsedMs), + elapsed_seconds: Number((elapsedMs / 1000).toFixed(3)), + rows_per_second: Math.round(rows / (elapsedMs / 1000)), + columns: result.columns, + checksum: actual.rows[0].map(String), + verified: true, + }), + ) +} finally { + await closeScratch() + await Registry.closeAll() + await rm(isolated, { recursive: true, force: true }) +} +process.exit(0) diff --git a/packages/opencode/src/acp/event.ts b/packages/opencode/src/acp/event.ts index 7d05fa6ee5..2b02ef6cb5 100644 --- a/packages/opencode/src/acp/event.ts +++ b/packages/opencode/src/acp/event.ts @@ -40,6 +40,9 @@ export class Subscription { private readonly abort = new AbortController() private readonly shellSnapshots = new Map() private readonly toolStarts = new Set() + // altimate_change start — ACP chunks cannot retract provisional compaction text + private readonly summaryMessages = new Set() + // altimate_change end private readonly permission: ACPPermission.Handler private started = false @@ -67,6 +70,15 @@ export class Subscription { async handle(event: Event) { switch (event.type) { + // altimate_change start — recovery clears summary before publishing its authoritative answer + case "message.updated": { + const message = event.properties.info + if (message.role !== "assistant") return + if (message.summary) this.summaryMessages.add(message.id) + else this.summaryMessages.delete(message.id) + return + } + // altimate_change end case "permission.asked": this.permission.handle(event) return @@ -169,6 +181,9 @@ export class Subscription { : await this.fetchPartMetadata(session.id, session.cwd, props.messageID, props.partID) if (metadata?.role !== "assistant") return if (metadata.partType === "text" && props.field === "text" && metadata.ignored !== true) { + // altimate_change start — internal summaries may be removed or replaced after streaming + if (this.summaryMessages.has(props.messageID)) return + // altimate_change end await this.input.connection.sessionUpdate({ sessionId: session.id, update: { @@ -218,6 +233,9 @@ export class Subscription { } private async recordFetchedPart(sessionId: string, message: SessionMessageResponse, part: Part) { + // altimate_change start — cover subscriptions that join after the initial message update + if (message.info.role === "assistant" && message.info.summary) this.summaryMessages.add(message.info.id) + // altimate_change end return await Effect.runPromise( this.input.session.recordPartMetadata({ sessionId, diff --git a/packages/opencode/src/agent/agent.ts b/packages/opencode/src/agent/agent.ts index 621e45c3e4..feea76341b 100644 --- a/packages/opencode/src/agent/agent.ts +++ b/packages/opencode/src/agent/agent.ts @@ -23,7 +23,9 @@ import PROMPT_TITLE from "./prompt/title.txt" import { PromptProfiles } from "../altimate/prompts/profiles" import PROMPT_ANALYST from "../altimate/prompts/analyst.txt" import PROMPT_REVIEWER from "../altimate/prompts/reviewer.txt" +import PROMPT_DATA_EXPLORER from "../altimate/prompts/data-explorer.txt" import { Log } from "../util/log" +import { Wildcard } from "../util/wildcard" // altimate_change end import { Permission } from "@/permission" import { mergeDeep, pipe, sortBy, values } from "remeda" @@ -228,6 +230,75 @@ export const layer = Layer.effect( let warnedRemovedDataQaDefault = false // altimate_change end + // altimate_change start — read-only data allow-list shared by analyst and its data-explorer subagent + // Bash is denied entirely: Wildcard.match can match literal operators, but + // BashTool checks individual command nodes, omitting pipes/chaining and + // redirects around groups (e.g. `(cat model.sql)>out.txt` becomes `cat model.sql`). + // Trailing deny patterns therefore cannot enforce a read-only shell. This + // removes even simple ls/cat/find/dbt reads; use read/grep/glob and SQL tools. + const readOnlyDataPermission = { + // SQL read tools + sql_execute: "allow", + sql_check: "allow", + altimate_core_validate: "allow", + sql_analyze: "allow", + sql_translate: "allow", + sql_optimize: "allow", + lineage_check: "allow", + sql_explain: "allow", + sql_format: "allow", + sql_fix: "allow", + sql_autocomplete: "allow", + sql_diff: "allow", + // SQL writes denied + sql_execute_write: "deny", + // Warehouse/schema/finops + warehouse_list: "allow", + warehouse_test: "allow", + warehouse_discover: "allow", + schema_inspect: "allow", + schema_index: "allow", + schema_search: "allow", + schema_cache_status: "allow", + schema_detect_pii: "allow", + schema_tags: "allow", + schema_tags_list: "allow", + finops_query_history: "allow", + finops_analyze_credits: "allow", + finops_expensive_queries: "allow", + finops_warehouse_advice: "allow", + finops_unused_resources: "allow", + finops_role_grants: "allow", + finops_role_hierarchy: "allow", + finops_user_roles: "allow", + // Core tools + altimate_core_check: "allow", + altimate_core_rewrite: "allow", + // Read-only file access + read: "allow", + grep: "allow", + glob: "allow", + tool_lookup: "allow", + // Materialized scratch tables for multi-step analysis (tool added separately; key is harmless if absent) + sql_materialize: "allow", + bash: "deny", + } as const + // Cap every configured ruleset at the subagent's read-only allow-list. + // Replaying only rules for allowed tools preserves configured read denials + // and asks while wildcard grants can never expose an unlisted tool. + const dataExplorerPermission = (rules: PermissionV1.Ruleset) => + Permission.merge( + Permission.fromConfig({ "*": "deny" }), + ...Object.entries(readOnlyDataPermission) + .filter(([, action]) => action === "allow") + .map(([permission]) => + rules + .filter((rule) => Wildcard.match(permission, rule.permission)) + .map((rule) => ({ ...rule, permission })), + ), + ) + // altimate_change end + const agents: Record = { // altimate_change start - 3 modes: builder, analyst, plan (replaces upstream single "build" agent) builder: { @@ -256,63 +327,18 @@ export const layer = Layer.effect( defaults, Permission.fromConfig({ "*": "deny", - // SQL read tools - sql_execute: "allow", - altimate_core_validate: "allow", - sql_analyze: "allow", - sql_translate: "allow", - sql_optimize: "allow", - lineage_check: "allow", - sql_explain: "allow", - sql_format: "allow", - sql_fix: "allow", - sql_autocomplete: "allow", - sql_diff: "allow", - // SQL writes denied - sql_execute_write: "deny", - // Warehouse/schema/finops - warehouse_list: "allow", - warehouse_test: "allow", - warehouse_discover: "allow", - schema_inspect: "allow", - schema_index: "allow", - schema_search: "allow", - schema_cache_status: "allow", - schema_detect_pii: "allow", - schema_tags: "allow", - schema_tags_list: "allow", - finops_query_history: "allow", - finops_analyze_credits: "allow", - finops_expensive_queries: "allow", - finops_warehouse_advice: "allow", - finops_unused_resources: "allow", - finops_role_grants: "allow", - finops_role_hierarchy: "allow", - finops_user_roles: "allow", - // Core tools - altimate_core_check: "allow", - altimate_core_rewrite: "allow", - // Read-only file access - read: "allow", - grep: "allow", - glob: "allow", + ...readOnlyDataPermission, + answer_commit: "allow", webfetch: "allow", websearch: "allow", question: "allow", - tool_lookup: "allow", - // Bash: last-match-wins — "*": "deny" MUST come first, then specific allows override - bash: { + // Skills return instruction text only (no side effects), so they are safe for a read-only agent. + skill: "allow", + // Delegation is limited to the read-only data-explorer subagent: general/explore/build + // carry broader permissions than analyst, and children do not inherit parent-agent limits. + task: { "*": "deny", - "ls *": "allow", - "grep *": "allow", - "cat *": "allow", - "head *": "allow", - "tail *": "allow", - "find *": "allow", - "wc *": "allow", - "dbt list *": "allow", - "dbt ls *": "allow", - "dbt debug *": "allow", + "data-explorer": "allow", }, // Training training_save: "allow", @@ -324,6 +350,43 @@ export const layer = Layer.effect( mode: "primary", native: true, }, + // altimate_change start — read-only data subagent the analyst may delegate to + "data-explorer": { + name: "data-explorer", + description: + "Read-only data exploration helper: runs SELECT queries, inspects schemas, reads files; cannot modify files or data.", + prompt: PROMPT_DATA_EXPLORER, + options: {}, + permission: dataExplorerPermission( + Permission.merge( + defaults, + Permission.fromConfig({ + "*": "deny", + ...readOnlyDataPermission, + // Writes denied explicitly (also covered by "*": "deny"; kept as an invariant). + // Shell patterns cannot enforce read-only access (redirections and find -delete write). + bash: "deny", + sql_execute_write: "deny", + edit: "deny", + write: "deny", + apply_patch: "deny", + }), + userWithSafety, + // Re-apply the invariants after user config so a permissive global config cannot grant writes. + Permission.fromConfig({ + bash: "deny", + sql_execute_write: "deny", + edit: "deny", + write: "deny", + apply_patch: "deny", + task: "deny", + }), + ), + ), + mode: "subagent", + native: true, + }, + // altimate_change end // reviewer agent: dbt PR review verdict engine reviewer: { name: "reviewer", @@ -556,12 +619,21 @@ export const layer = Layer.effect( Permission.fromConfig(value.permission ?? {}), safetyDenials, ) + if (key === "data-explorer") item.permission = dataExplorerPermission(item.permission) // altimate_change end } // Ensure Truncate.GLOB is allowed unless explicitly configured for (const name in agents) { const agent = agents[name] + // altimate_change start — keep the analyst shell disabled after config and safety rules + // Permission.disabled requires the final bash rule to deny "*". Without + // it, narrower safety rules leave the tool exposed to commands that emit + // no permission patterns (e.g. `>out.txt`). data-explorer is capped above. + if (name === "analyst") { + agent.permission = Permission.merge(agent.permission, Permission.fromConfig({ bash: "deny" })) + } + // altimate_change end const explicit = agent.permission.some((r) => { if (r.permission !== "external_directory") return false if (r.action !== "deny") return false diff --git a/packages/opencode/src/altimate/debug/report.ts b/packages/opencode/src/altimate/debug/report.ts index 6e13cb7b25..039002e3e2 100644 --- a/packages/opencode/src/altimate/debug/report.ts +++ b/packages/opencode/src/altimate/debug/report.ts @@ -12,17 +12,17 @@ export interface RedactContext { hostname?: string } -const EMAIL = /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g +const EMAIL = /(? diff --git a/packages/opencode/src/altimate/native/connections/inspection-target.ts b/packages/opencode/src/altimate/native/connections/inspection-target.ts new file mode 100644 index 0000000000..bf2a87ee04 --- /dev/null +++ b/packages/opencode/src/altimate/native/connections/inspection-target.ts @@ -0,0 +1,70 @@ +// altimate_change start — resolve schema aliases before applying workspace routing +import * as Registry from "./registry" +import type { Connector } from "@altimateai/drivers" +import type { SchemaInspectParams } from "../types" + +// The database a MongoDB URI names (`mongodb://host/analytics?...`) is the connection's default. +function mongoUriDatabase(uri: unknown): string | undefined { + if (typeof uri !== "string") return undefined + const match = uri.match(/^mongodb(?:\+srv)?:\/\/[^/?#]*\/([^?#]+)/) + if (!match) return undefined + try { + return decodeURIComponent(match[1]) || undefined + } catch { + return undefined + } +} + +export function defaultInspectionSchema(warehouse: string): string | undefined { + const config = Registry.getConfig(warehouse) + const type = Registry.canonicalType(config?.type) + const configured = type === "bigquery" ? config?.dataset : type === "mysql" || type === "mongodb" ? config?.database : config?.schema + if (typeof configured === "string" && configured) return configured + if (type === "mongodb") return mongoUriDatabase(config?.connection_string) + if (type === "duckdb" || type === "sqlite") return "main" + if (type === "postgres" || type === "redshift") return "public" + return undefined +} + +export async function resolveInspectionTarget(params: SchemaInspectParams) { + const warehouse = params.warehouse ?? Registry.list().warehouses[0]?.name + const schema_name = params.schema_name?.trim() || undefined + const original = { ...params, warehouse, schema_name, resolution: undefined as string | undefined } + const qualifier = params.table.includes(".") ? params.table.slice(0, params.table.indexOf(".")) : undefined + const alias = schema_name ?? qualifier + if (params.warehouse !== undefined || !alias || !Registry.list().warehouses.some((w) => w.name === alias)) + return original + if (!warehouse) return original + // Real schemas take precedence over an equally named connection. This only opens + // the original target; the resolved target is opened after its routing check. + const schemas = await (await Registry.get(warehouse)).listSchemas() + if (schemas.includes(alias)) return original + const schema = defaultInspectionSchema(alias) + if (!schema) + throw new Error(`Default schema for warehouse "${alias}" is not configured. Pass schema_name explicitly.`) + return { + ...original, + warehouse: alias, + schema_name: schema, + table: qualifier === alias ? params.table.slice(alias.length + 1) : params.table, + resolution: `Resolved "${alias}" as the ${alias} warehouse (schema ${schema})`, + } +} + +export async function resolveInspectionTable(params: SchemaInspectParams, connector: Connector) { + const qualifier = params.table.includes(".") ? params.table.slice(0, params.table.indexOf(".")) : undefined + if (params.warehouse === "scratch" && (!params.schema_name || ["main", "scratch"].includes(params.schema_name))) { + if (params.schema_name === "scratch" || qualifier === "scratch") { + return { + schema_name: "main", + table: qualifier === "scratch" ? params.table.slice("scratch.".length) : params.table, + } + } + } + if (qualifier && (!params.schema_name || params.schema_name === qualifier)) { + const schemas = await connector.listSchemas().catch(() => [] as string[]) + if (schemas.includes(qualifier)) return { schema_name: qualifier, table: params.table.slice(qualifier.length + 1) } + } + return { schema_name: params.schema_name, table: params.table } +} +// altimate_change end diff --git a/packages/opencode/src/altimate/native/connections/register.ts b/packages/opencode/src/altimate/native/connections/register.ts index 808e2be75e..a763ef0036 100644 --- a/packages/opencode/src/altimate/native/connections/register.ts +++ b/packages/opencode/src/altimate/native/connections/register.ts @@ -8,6 +8,7 @@ import { register } from "../dispatcher" import * as Registry from "./registry" +import { defaultInspectionSchema, resolveInspectionTable, resolveInspectionTarget } from "./inspection-target" import { discoverContainers } from "./docker-discovery" import { parseDbtProfiles } from "./dbt-profiles" import { runDataDiff } from "./data-diff" @@ -33,7 +34,9 @@ import type { DataDiffParams, DataDiffResult, } from "../types" -import type { ConnectionConfig } from "@altimateai/drivers" +import type { ConnectionConfig, SchemaColumn } from "@altimateai/drivers" +import { isQueryTimeoutError } from "@altimateai/drivers/types" +import { executeQuery, type QueryContext } from "../query-execution" import { Telemetry } from "../../../telemetry" // --------------------------------------------------------------------------- @@ -204,17 +207,18 @@ async function adapterTypeFromManifest(): Promise { async function tryExecuteViaDbt( sql: string, limit?: number, + timeoutMs?: number, + context?: QueryContext, ): Promise { - // altimate_change start — share the single-flight creation path with resolveDefaultTarget; - // execute on the adapter this call was handed, not on a global a reset may have moved. - const adapter = await ensureDbtAdapter() - if (!adapter) return null - // altimate_change end - try { - const raw = limit - ? await adapter.immediatelyExecuteSQLWithLimit(sql, "", limit) - : await adapter.immediatelyExecuteSQL(sql, "") + const raw = await executeQuery({ type: "dbt" }, { queryTimeoutMs: timeoutMs }, context, async (options) => { + const adapter = await ensureDbtAdapter() + options.signal?.throwIfAborted() + if (!adapter) return null + return limit + ? adapter.immediatelyExecuteSQLWithLimit(sql, "", limit) + : adapter.immediatelyExecuteSQL(sql, "") + }) // QueryExecutionResult has: { columnNames, columnTypes, data, rawSql, compiledSql } // where data is Record[] (array of row objects) @@ -258,7 +262,10 @@ async function tryExecuteViaDbt( } return null // Unknown result format — fall back to native - } catch { + } catch (e) { + // A deadline or abort is not "dbt unavailable": the query may still be running, and + // re-running it on the native driver would double the work and the wait. + if (isQueryTimeoutError(e) || context?.signal?.aborted || (e instanceof Error && e.name === "AbortError")) throw e // dbt execution failed — fall back to native driver silently return null } @@ -487,11 +494,15 @@ export function translateExplainError( return msg } +function isMissingSchemaObject(error: unknown): boolean { + return /\b(?:table|schema|relation)\s+(?:(?:"[^"]+"|'[^']+'|[^\s]+)\s+)?(?:was\s+|is\s+)?(?:not found|does not exist)\b|\bno such (?:table|schema|relation)\b|\bnot found:\s*(?:table|dataset)\b/i.test(String(error)) +} + /** Register all connection-related handlers. Exported for test re-registration. */ export function registerAll(): void { // --- sql.execute --- -register("sql.execute", async (params: SqlExecuteParams): Promise => { +register("sql.execute", async (params: SqlExecuteParams, context): Promise => { const startTime = Date.now() const warehouseType = getWarehouseType(params.warehouse) try { @@ -512,16 +523,31 @@ register("sql.execute", async (params: SqlExecuteParams): Promise { + const connector = await Registry.get(fallbackName) + options.signal?.throwIfAborted() + return connector.execute(params.sql, params.limit, undefined, options) + }, + ) try { Telemetry.track({ type: "warehouse_query", @@ -578,7 +615,7 @@ register("sql.execute", async (params: SqlExecuteParams): Promise => { +register("sql.explain", async (params: SqlExplainParams, context?: QueryContext): Promise => { let warehouseName: string | undefined let warehouseType: string | undefined try { @@ -613,7 +650,12 @@ register("sql.explain", async (params: SqlExplainParams): Promise connector.execute(`${plan.prefix} ${params.sql}`, 10000, undefined, options), + ) const planText = result.rows.map((r) => String(r[0])).join("\n") const planRows = result.rows.map((r, i) => ({ @@ -704,31 +746,78 @@ register("warehouse.discover", async (): Promise => { }) // --- schema.inspect --- +function schemaAddressingHint(): string { + const warehouses = Registry.list().warehouses + if (warehouses.length === 0) return "Available warehouses: none. Configure a warehouse before inspecting tables." + const forms = warehouses.map((w) => `warehouse=${w.name}, schema_name=${defaultInspectionSchema(w.name) ?? ""}`) + return ( + `Available warehouses: ${warehouses.map((w) => w.name).join(", ")}. ` + + `Address a table explicitly with ${forms.join("; ")} and table=.` + ) +} + register("schema.inspect", async (params: SchemaInspectParams): Promise => { try { - const warehouseName = params.warehouse - let connector + const target = await resolveInspectionTarget(params) + const warehouseName = target.warehouse + if (!warehouseName) throw new Error("No warehouse configured.") + const connector = await Registry.get(warehouseName) + // describeTable accepts only schema/table; params.database remains scoped by + // the connection configuration until the driver interface supports it. + // altimate_change start — normalize schema qualifiers only after warehouse routing + const addressed = await resolveInspectionTable(target, connector) + let schemaName = addressed.schema_name + const table = addressed.table + // altimate_change end + const resolution = target.resolution - if (warehouseName) { - connector = await Registry.get(warehouseName) + let columns: SchemaColumn[] = [] + if (schemaName) { + columns = await connector.describeTable(schemaName, table) } else { - const warehouses = Registry.list().warehouses - if (warehouses.length === 0) { - throw new Error("No warehouse configured.") + // altimate_change start — MongoDB schemas are databases, not PostgreSQL public + const mongo = Registry.canonicalType(Registry.getConfig(warehouseName)?.type) === "mongodb" + const preferred = defaultInspectionSchema(warehouseName) ?? (mongo ? (await connector.listSchemas())[0] : "public") + if (!preferred) throw new Error("No MongoDB database is available. Pass its database name as schema_name.") + // altimate_change end + let missingError: unknown + const probe = async (schema: string) => { + try { + return await connector.describeTable(schema, table) + } catch (error) { + if (!isMissingSchemaObject(error)) throw error + missingError = error + return [] + } } - connector = await Registry.get(warehouses[0].name) + schemaName = preferred + columns = await probe(preferred) + if (columns.length === 0) { + const listed = await Promise.resolve() + .then(() => connector.listSchemas()) + .catch(() => [] as string[]) + const systemSchemas = new Set(["information_schema", "pg_catalog", "pg_toast", "sys"]) + // The preferred schema counts toward the 20-probe limit. + const candidates = [...new Set(listed)] + .filter((s) => s !== preferred && !systemSchemas.has(s.toLowerCase())) + .slice(0, 19) + for (const candidate of candidates) { + columns = await probe(candidate) + if (columns.length > 0) { + schemaName = candidate + break + } + } + } + if (columns.length === 0 && missingError) throw missingError } - const schemaName = params.schema_name ?? "public" - // NOTE: params.database is accepted in the type contract but the current - // Connector.describeTable signature only supports (schema, table). Wiring - // database through to each driver is a separate refactor. For connections - // that already scope to a single database (the common case), this is a no-op. - const columns = await connector.describeTable(schemaName, params.table) - return { - table: params.table, + table, schema_name: schemaName, + warehouse: warehouseName, + ...(resolution ? { resolution } : {}), + ...(columns.length === 0 ? { addressing_hint: schemaAddressingHint() } : {}), columns: columns.map((c) => ({ name: c.name, data_type: c.data_type, @@ -737,11 +826,13 @@ register("schema.inspect", async (params: SchemaInspectParams): Promise() @@ -45,6 +48,12 @@ const pending = new Map>() /** Whether the registry has been loaded. */ let loaded = false +const SCRATCH_NAME_CONFLICT = + `Connection "${SCRATCH_NAME}" conflicts with the reserved built-in scratch warehouse name. ` + + 'Rename its connection key to another name (for example "source_scratch") in ' + + '~/.altimate-code/connections.json or the project .altimate-code/connections.json, ' + + 'or rename ALTIMATE_CODE_CONN_SCRATCH to ALTIMATE_CODE_CONN_SOURCE_SCRATCH, then reload connections.' + // --------------------------------------------------------------------------- // Config file paths // --------------------------------------------------------------------------- @@ -206,6 +215,7 @@ export function load(): void { configs.set(name, config) } + if (configs.has(SCRATCH_NAME)) Log.Default.warn(SCRATCH_NAME_CONFLICT) loaded = true } @@ -494,6 +504,10 @@ export function names(): string[] { /** Get a connector instance (creates lazily). */ export async function get(name: string): Promise { ensureLoaded() + if (isScratch(name)) { + if (configs.has(name)) throw new Error(SCRATCH_NAME_CONFLICT) + return getScratch() + } const cached = connectors.get(name) if (cached) { @@ -592,9 +606,9 @@ export async function get(name: string): Promise { let censusSent = false /** List all configured connections. */ -export function list(): { warehouses: WarehouseInfo[] } { +export function list(): { warehouses: (WarehouseInfo & { conflict?: string })[] } { ensureLoaded() - const warehouses: WarehouseInfo[] = [] + const warehouses: (WarehouseInfo & { conflict?: string })[] = [] for (const [name, config] of configs) { const type = typeof config.type === "string" ? config.type.toLowerCase() : "" warehouses.push({ @@ -604,9 +618,18 @@ export function list(): { warehouses: WarehouseInfo[] } { type === "trino" ? ((config.catalog as string | undefined) ?? (config.database as string | undefined)) : (config.database as string | undefined), + ...(isScratch(name) ? { conflict: SCRATCH_NAME_CONFLICT } : {}), }) } + // altimate_change start — surface the implicit scratch warehouse. Appended LAST and only when a real + // warehouse exists, so `list()[0]` (the default-warehouse convention) and the "nothing configured" + // states are unchanged for every caller. + if (warehouses.length > 0 && !configs.has(SCRATCH_NAME)) { + warehouses.push({ name: SCRATCH_NAME, type: SCRATCH_CONFIG.type, database: SCRATCH_DESCRIPTION }) + } + // altimate_change end + // Fire a one-time census on first list call if (!censusSent && configs.size > 0) { censusSent = true @@ -656,7 +679,10 @@ export async function test( }), ) } else { - await connector.execute("SELECT 1") + await connector.execute( + "SELECT 1", undefined, undefined, + canonicalType(dbType) === "postgres" ? { readOnly: true } : undefined, + ) } return { connected: true } } catch (e) { @@ -678,6 +704,11 @@ export async function add( name: string, config: ConnectionConfig, ): Promise<{ success: boolean; name: string; type: string; error?: string; warnings?: string[] }> { + // altimate_change start — `scratch` is reserved for the implicit session warehouse + if (isScratch(name)) { + return { success: false, name, type: config?.type ?? "unknown", error: `"${SCRATCH_NAME}" is a reserved warehouse name.` } + } + // altimate_change end try { ensureLoaded() @@ -741,6 +772,9 @@ export async function add( /** Remove a connection from global config. */ export async function remove(name: string): Promise<{ success: boolean; error?: string; warnings?: string[] }> { + // altimate_change start + if (isScratch(name)) return { success: false, error: `"${SCRATCH_NAME}" is built in and cannot be removed.` } + // altimate_change end try { ensureLoaded() @@ -794,6 +828,7 @@ export async function remove(name: string): Promise<{ success: boolean; error?: * that also blocks deleting the file underneath it. */ export async function closeAll(): Promise { + await closeScratch() for (const [, connector] of connectors) { try { await connector.close() @@ -815,6 +850,7 @@ export async function reload(): Promise { /** Get the raw config for a connection (for testing). */ export function getConfig(name: string): ConnectionConfig | undefined { ensureLoaded() + if (isScratch(name) && !configs.has(name)) return { ...SCRATCH_CONFIG } return configs.get(name) } diff --git a/packages/opencode/src/altimate/native/connections/scratch.ts b/packages/opencode/src/altimate/native/connections/scratch.ts new file mode 100644 index 0000000000..aa6b57225f --- /dev/null +++ b/packages/opencode/src/altimate/native/connections/scratch.ts @@ -0,0 +1,236 @@ +/** + * Session-scoped `scratch` warehouse. + * + * An implicit, ephemeral DuckDB database that exists for the life of this + * session. It is the landing zone for `sql_materialize`: rows read from any + * warehouse are stored here in full so they can be joined with rows from + * another engine in a single SQL statement, without the model carrying the rows + * through its context. + * + * A private temporary DuckDB file preserves committed tables when a query + * timeout restarts the engine helper. Each root session and its subagents share + * an isolated directory, removed on root deletion, close or process exit (best effort). + * + * The connection is created lazily and shared within its session, so `sql_execute(warehouse: + * "scratch")` and `sql_materialize` always see the same tables. + */ + +import { AsyncLocalStorage } from "node:async_hooks" +import type { Connector } from "@altimateai/drivers" +import * as fs from "node:fs" +import * as os from "node:os" +import * as path from "node:path" +import { Effect } from "effect" +import { makeRuntime } from "@opencode-ai/core/effect/runtime" +import { SessionStore } from "@opencode-ai/core/session/store" +import type { SessionID } from "@/session/schema" + +/** Reserved warehouse name. User configs cannot shadow or replace it. */ +export const SCRATCH_NAME = "scratch" + +/** Marker shown in `warehouse_list` (the `database` column). */ +export const SCRATCH_DESCRIPTION = "session-scoped, ephemeral" + +/** The synthetic config reported for scratch; the private store path stays internal. */ +export const SCRATCH_CONFIG = Object.freeze({ type: "duckdb" }) + +export function isScratch(name: string | undefined | null): boolean { + return name === SCRATCH_NAME +} + +interface ScratchStore { + connector?: Connector + inflight?: Promise + directory?: string +} +const stores = new Map() +const session = new AsyncLocalStorage() +const sessionStore = makeRuntime(SessionStore.Service, SessionStore.defaultLayer) +let sessionStoreReady = false + +function rootSessionID(store: SessionStore.Interface, sessionID: string) { + return Effect.gen(function* () { + let root = sessionID as SessionID + const seen = new Set() + while (!seen.has(root)) { + seen.add(root) + const row = yield* store.get(root) + // Synthetic or removed sessions must not share another root's store. + if (!row) return sessionID + if (!row.parentID) return root + root = row.parentID + } + return sessionID + }) +} + +/** Bind all native calls made by one tool invocation to its session. */ +export function withScratchSession(sessionID: string, operation: () => T): T { + return session.run(sessionID, operation) +} + +// Direct, non-tool callers retain the existing single-store behavior. +const currentSession = () => session.getStore() ?? "" +const directories = new Set() +type ScratchOperation = (operation: (connection: Connector, directory: string) => Promise) => Promise +const operations = new WeakMap() + +function removeDirectory(dir: string): void { + try { + fs.rmSync(dir, { recursive: true, force: true }) + directories.delete(dir) + } catch { + // best-effort; retry on exit if the store is still open + } +} + +process.once("exit", () => { + for (const dir of directories) removeDirectory(dir) +}) + +function redactPath(error: unknown, dir: string): unknown { + const redact = (text: string) => { + for (const value of [path.join(dir, "scratch.duckdb"), dir]) { + text = text.replaceAll(value.replaceAll("'", "''"), SCRATCH_NAME).replaceAll(value, SCRATCH_NAME) + } + return text + } + if (error instanceof Error) { + error.message = redact(error.message) + if (error.stack) error.stack = redact(error.stack) + } + return typeof error === "string" ? redact(error) : error +} + +function managedScratch(raw: Connector, dir: string): Connector { + let pending = Promise.resolve() + function exclusive(operation: () => Promise): Promise { + const next = pending.then(operation).catch((error) => { + throw redactPath(error, dir) + }) + pending = next.then( + () => {}, + () => {}, + ) + return next + } + + async function initialize(): Promise { + // The reopened scratch.duckdb has the same catalog after a helper restart. + const current = await raw.execute("SELECT current_database()", 1) + if (current.rows[0]?.[0] === SCRATCH_NAME) return + await raw.execute(`USE ${SCRATCH_NAME}`, undefined, undefined, { noLimit: true }) + } + + const run: ScratchOperation = (operation) => + exclusive(async () => { + await initialize() + return operation(raw, dir) + }) + const managed: Connector = { + supportsResultByteLimit: raw.supportsResultByteLimit, + connect: () => + exclusive(async () => { + await raw.connect() + await initialize() + }), + execute: (sql, limit, binds, options) => { + const execute = () => raw.execute(sql, limit, binds, options) + // A failed transaction must be allowed to roll back even if a catalog probe + // would itself be rejected because that transaction is aborted. + return /^\s*ROLLBACK(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql) ? exclusive(execute) : run(execute) + }, + listSchemas: () => run((connection) => connection.listSchemas()), + listTables: (schema) => run((connection) => connection.listTables(schema)), + describeTable: (schema, table) => run((connection) => connection.describeTable(schema, table)), + // Shutdown must reach the helper even while an exclusive query is running. + close: () => raw.close(), + } + operations.set(managed, run) + return managed +} + +/** + * Hold the scratch connection for a complete operation, including its transaction. + * Use the supplied connector inside the callback; calling the shared connector + * there would queue behind this operation. The supplied connector must not escape. + */ +export async function withScratchConnection( + operation: (connection: Connector, directory: string) => Promise, + sessionID = currentSession(), +): Promise { + const c = await getScratch(sessionID) + return operations.get(c)!(operation) +} + +/** The session's scratch connector, opened on first use. */ +export async function getScratch(sessionID = currentSession()): Promise { + // Direct callers without a tool/session context retain the default store. + if (sessionID) { + sessionID = await sessionStore.runPromise((store) => rootSessionID(store, sessionID)) + sessionStoreReady = true + } + let store = stores.get(sessionID) + if (!store) { + store = {} + stores.set(sessionID, store) + } + if (store.connector) return Promise.resolve(store.connector) + if (store.inflight) return store.inflight + const state = store + const mine: Promise = (async () => { + let dir: string | undefined + let c: Connector | undefined + try { + const { connect } = await import("@altimateai/drivers/duckdb") + dir = fs.mkdtempSync(path.join(os.tmpdir(), `altimate-scratch-${process.pid}-`)) + directories.add(dir) + if (process.platform !== "win32") fs.chmodSync(dir, 0o700) + c = managedScratch( + await connect({ + ...SCRATCH_CONFIG, + path: path.join(dir, "scratch.duckdb"), + create: true, + sandbox_directory: dir, + }), + dir, + ) + await c.connect() + state.directory = dir + state.connector = c + return c + } catch (error) { + await c?.close().catch(() => {}) + if (dir) removeDirectory(dir) + throw dir ? redactPath(error, dir) : error + } finally { + queueMicrotask(() => { + if (state.inflight === mine) state.inflight = undefined + }) + } + })() + state.inflight = mine + return mine +} + +/** Whether this session's scratch database has been opened. */ +export function scratchOpened(sessionID = currentSession()): boolean { + // Before the first scoped lookup, only the default store can have been opened. + if (sessionID && sessionStoreReady) { + sessionID = sessionStore.runSync((store) => rootSessionID(store, sessionID)) + } + return stores.get(sessionID)?.connector !== undefined +} + +/** Close one root's store, or all stores. Deleting a child leaves its root's store open. */ +export async function closeScratch(sessionID?: string): Promise { + const keys = sessionID === undefined ? [...stores.keys()] : [sessionID] + await Promise.all(keys.map(async (key) => { + const state = stores.get(key) + if (!state) return + stores.delete(key) + await state.inflight?.catch(() => {}) + await state.connector?.close().catch(() => {}) + if (state.directory) removeDirectory(state.directory) + })) +} diff --git a/packages/opencode/src/altimate/native/dispatcher.ts b/packages/opencode/src/altimate/native/dispatcher.ts index 5ea9076470..79fd9c1d9b 100644 --- a/packages/opencode/src/altimate/native/dispatcher.ts +++ b/packages/opencode/src/altimate/native/dispatcher.ts @@ -7,8 +7,9 @@ import { BridgeMethods, type BridgeMethod } from "./types" import { Telemetry } from "../telemetry" +import type { QueryContext } from "./query-execution" -type NativeHandler = (params: any) => Promise +type NativeHandler = (params: any, context?: QueryContext) => Promise const nativeHandlers = new Map() @@ -51,6 +52,7 @@ export function setRegistrationHook(fn: () => Promise): void { export async function call( method: M, params: (typeof BridgeMethods)[M] extends { params: infer P } ? P : never, + context?: QueryContext, ): Promise<(typeof BridgeMethods)[M] extends { result: infer R } ? R : never> { // Lazy registration: load all handler modules on first call. Cache the // in-flight promise so concurrent callers share one attempt; on failure @@ -108,7 +110,7 @@ export async function call( const startTime = Date.now() try { - const result = await native(params) + const result = await native(params, context) try { Telemetry.track({ diff --git a/packages/opencode/src/altimate/native/finops/query-history.ts b/packages/opencode/src/altimate/native/finops/query-history.ts index b5438bf355..824ed7a130 100644 --- a/packages/opencode/src/altimate/native/finops/query-history.ts +++ b/packages/opencode/src/altimate/native/finops/query-history.ts @@ -249,7 +249,10 @@ export async function getQueryHistory(params: QueryHistoryParams): Promise( + config: ConnectionConfig | undefined, + options: ExecuteOptions, + context: QueryContext | undefined, + work: (options: ExecuteOptions) => Promise, +): Promise { + const parents = [...new Set([context?.signal, options.signal].filter((signal): signal is AbortSignal => !!signal))] + for (const signal of parents) signal.throwIfAborted() + const cutoff = context?.sessionID ? RunBudget.queryDeadline(context.sessionID) : undefined + const remaining = cutoff === undefined ? undefined : Math.max(0, cutoff - Date.now()) + const configured = resolveQueryTimeout(config, options).ms + const timeout = remaining === undefined ? configured : Math.min(configured ?? MAX_TIMER_MS, remaining) + const expired = () => new QueryTimeoutError({ engine: config?.type ?? "database", timeoutMs: timeout!, cancelled: false }) + if (timeout === 0) throw expired() + + const controller = new AbortController() + const abort = (event: Event) => controller.abort((event.target as AbortSignal).reason) + for (const signal of parents) signal.addEventListener("abort", abort, { once: true }) + // Without a run cutoff local engines own execution time and queue admission. + // With a cutoff the signal also removes queued work before it can execute late. + const type = config?.type.toLowerCase() + const local = type === "sqlite" || type === "duckdb" + const outer = local && remaining === undefined ? undefined : timeout + let timer: ReturnType | undefined + let stop: (() => void) | undefined + try { + const cancelled = new Promise((_, reject) => { + stop = () => reject(controller.signal.reason) + controller.signal.addEventListener("abort", stop, { once: true }) + }) + if (outer !== undefined) timer = setTimeout(() => controller.abort(expired()), outer) + return await Promise.race([ + work({ ...options, queryTimeoutMs: timeout, signal: controller.signal }), + cancelled, + ]) + } finally { + clearTimeout(timer) + if (stop) controller.signal.removeEventListener("abort", stop) + for (const signal of parents) signal.removeEventListener("abort", abort) + } +} + +export * as QueryExecution from "./query-execution" diff --git a/packages/opencode/src/altimate/native/schema/cache.ts b/packages/opencode/src/altimate/native/schema/cache.ts index a71208eaf7..7606df02be 100644 --- a/packages/opencode/src/altimate/native/schema/cache.ts +++ b/packages/opencode/src/altimate/native/schema/cache.ts @@ -273,7 +273,7 @@ export class SchemaCache { const whereClauses = tokens.map(() => "search_text LIKE ?") const searchParams = tokens.map((t) => `%${t}%`) - const searchCondition = whereClauses.join(" OR ") + const searchCondition = `(${whereClauses.join(" OR ")})` const whFilter = warehouse ? " AND warehouse = ?" : "" const whParams = warehouse ? [warehouse] : [] diff --git a/packages/opencode/src/altimate/native/types.ts b/packages/opencode/src/altimate/native/types.ts index 2168ac6a66..ed995589e5 100644 --- a/packages/opencode/src/altimate/native/types.ts +++ b/packages/opencode/src/altimate/native/types.ts @@ -9,6 +9,11 @@ export interface SqlExecuteParams { sql: string warehouse?: string limit?: number + /** Execution deadline in ms; `0` uses the default. Omitted: the connection's + * `query_timeout_ms`, then `ALTIMATE_SQL_QUERY_TIMEOUT_MS`, then 120 s. */ + query_timeout_ms?: number + /** Run PostgreSQL read probes in a read-only transaction. */ + read_only?: boolean } export interface SqlExecuteResult { @@ -120,6 +125,9 @@ export interface SchemaColumn { export interface SchemaInspectResult { table: string schema_name?: string + warehouse?: string + resolution?: string + addressing_hint?: string columns: SchemaColumn[] row_count?: number } diff --git a/packages/opencode/src/altimate/observability/trace-consumer.ts b/packages/opencode/src/altimate/observability/trace-consumer.ts index ae5ce06c46..fbf6a9b54c 100644 --- a/packages/opencode/src/altimate/observability/trace-consumer.ts +++ b/packages/opencode/src/altimate/observability/trace-consumer.ts @@ -216,6 +216,7 @@ export class TraceConsumer { if (trace) { if (part.type === "step-start") trace.logStepStart(part as Parameters[0]) if (part.type === "step-finish") trace.logStepFinish(part as Parameters[0]) + if (part.type === "reasoning" && part.time?.end) trace.logReasoning(part as Parameters[0]) // altimate_change start — split the user-vs-assistant text routes. // User text parts arrive without `time.end` set (it's a meaningful // concept only for processing-end of assistant chunks), so the old @@ -256,7 +257,7 @@ export class TraceConsumer { } } // altimate_change end - if (part.type === "tool" && (part.state?.status === "completed" || part.state?.status === "error")) { + if (part.type === "tool" && ["running", "completed", "error"].includes(part.state?.status)) { trace.logToolCall(part as Parameters[0]) } } diff --git a/packages/opencode/src/altimate/observability/tracing.ts b/packages/opencode/src/altimate/observability/tracing.ts index e2f88c1d46..1218d559cf 100644 --- a/packages/opencode/src/altimate/observability/tracing.ts +++ b/packages/opencode/src/altimate/observability/tracing.ts @@ -22,6 +22,52 @@ import path from "path" import { Global } from "../../global" import { randomUUIDv7 } from "bun" import { Log } from "@/altimate/util/log" +import { bigintReplacer } from "@/altimate/util/json" +import { createHash } from "node:crypto" +import z from "zod" +import { BusEvent } from "@/bus/bus-event" + +/** Request-boundary data only: never include request options, auth, or headers. */ +export const LLMRequestEvent = BusEvent.define( + "llm.request", + z.object({ + requestID: z.string(), + sessionID: z.string(), + messageID: z.string(), + userMessageID: z.string(), + agent: z.string(), + providerID: z.string(), + modelID: z.string(), + variant: z.string().optional(), + startTime: z.number(), + system: z.string(), + instructions: z.string().optional(), + tools: z.array( + z.object({ + name: z.string(), + description: z.string().optional(), + inputSchema: z.unknown(), + active: z.boolean(), + providerToolID: z.string().optional(), + }), + ), + }), + { private: true }, +) +export type LLMRequestSnapshot = z.infer + +function snapshotJSON(value: unknown): string { + return JSON.stringify(value, (key, value) => { + const child = bigintReplacer(key, value) + return child && typeof child === "object" && !Array.isArray(child) + ? Object.fromEntries( + Object.keys(child) + .sort() + .map((key) => [key, (child as Record)[key]]), + ) + : child + }) +} // --------------------------------------------------------------------------- // Trace data types — v2 schema @@ -45,14 +91,12 @@ export interface TraceSpan { kind: "session" | "generation" | "tool" | "text" | "span" | "user-message" startTime: number endTime?: number - status: "ok" | "error" + status: "ok" | "error" | "running" | "aborted" statusMessage?: string /** - * True when this span was force-closed by trace reconstruction (worker - * restart / cache eviction) rather than by a real error. The span keeps - * `status: "error"` so its boundary stays visible, but consumers (the viewer, - * error aggregations) should treat it as "incomplete (reconstructed)" — not a - * genuine agent/tool failure. + * True when recording or execution was interrupted. Reconstructed generation + * spans keep `status: "error"`; unfinished tools use `status: "aborted"`. + * Consumers should distinguish these from genuine agent/tool failures. */ interrupted?: boolean @@ -83,6 +127,54 @@ export interface TraceSpan { attributes?: Record } +export interface RunTraceLineage { + rootSessionId: string + parentSessionId?: string + sessions?: Array<{ + sessionId: string + parentSessionId?: string + traceId: string + taskLinks?: Array<{ sessionId: string; messageId: string; callId: string }> + }> +} + +const RESUME_ABORT_REASON = "Recording resumed before the tool finished" + +function abortOpenTools(spans: TraceSpan[], reason: string, endTime = Date.now()) { + for (const span of spans) { + if (span.kind !== "tool" || span.endTime !== undefined) continue + span.endTime = endTime + span.status = "aborted" + span.statusMessage = reason + span.interrupted = true + span.tool = { ...span.tool, durationMs: Math.max(0, endTime - span.startTime) } + } +} + +function traceToolInput(input: unknown): unknown { + try { + return input != null ? JSON.parse(JSON.stringify(input, bigintReplacer)) : undefined + } catch { + return { _serialization_error: "Input contained circular references or non-serializable data" } + } +} + +export interface RunBudgetMetadata { + max_turns?: number + time_budget_s?: number + elapsed_s: number + time_budget_deadline: "none" | "soft" | "hard" + /** Unix milliseconds, matching generation and span timestamps. */ + effort_downgraded_at?: number + generation_interrupted_at?: number +} + +interface TracePartIdentity { + id?: string + messageID?: string + sessionID?: string +} + /** Root trace object persisted to disk / exported. */ export interface TraceFile { /** Schema version for forward compatibility. */ @@ -97,7 +189,7 @@ export interface TraceFile { endedAt?: string // --- Context --- - metadata: { + metadata: Partial & { /** Session title (human-readable, set via --title or auto-generated). */ title?: string model?: string @@ -113,6 +205,15 @@ export interface TraceFile { version?: string /** Arbitrary tags for filtering. */ tags?: string[] + /** Linked run recordings; each session owns its own generation state. */ + run?: RunTraceLineage + /** Content unavailable to this recorder, rather than silently implied complete. */ + captureOmissions?: string[] + } + + omissions?: { + spans?: { original: number; retained: number; omitted: number; limit: number } + deduplicationKeys?: { evicted: number; limit: number } } // --- Spans --- @@ -245,7 +346,7 @@ export class FileExporter implements TraceExporter { // flushSync to interleave. if (this.crashedSessions.has(trace.sessionId)) return undefined // altimate_change end - await fs.writeFile(tmpPath, JSON.stringify(trace, null, 2)) + await fs.writeFile(tmpPath, JSON.stringify(trace, bigintReplacer, 2)) // altimate_change start — M3 fix: re-check before the rename. If // flushSync ran during the writeFile, drop the tmp instead of // overwriting flushSync's crashed canonical file. @@ -366,7 +467,7 @@ export class HttpExporter implements TraceExporter { const res = await fetch(this.endpoint, { method: "POST", headers: { "Content-Type": "application/json", ...this.headers }, - body: JSON.stringify(trace), + body: JSON.stringify(trace, bigintReplacer), signal: AbortSignal.timeout(5_000), }) @@ -494,7 +595,17 @@ export class Trace { private currentGenerationSpanId: string | undefined private generationText: string[] = [] private generationToolCalls: string[] = [] - private pendingToolResults: Array<{ tool: string; summary: string }> = [] + private generationsByMessage = new Map() + private recordedParts = new Set() + private runningTools = new Map() + private requestSnapshotHashes = new Set() + private deduplicationKeysEvicted = 0 + private pendingToolResults: Array<{ + tool: string + summary: string + originalCharacters: number + retainedCharacters: number + }> = [] private spans: TraceSpan[] = [] private startTime: number private exporters: TraceExporter[] @@ -575,25 +686,67 @@ export class Trace { return new Trace(exporters) } + /** Open a separate session recording, retaining any existing local evidence. */ + async forkSession(sessionId: string, metadata: TraceFile["metadata"] = {}): Promise { + const trace = new Trace([...this.exporters]) + // Rehydrate before startTrace's initial snapshot can overwrite an earlier + // descendant recording, including children seeded but inactive on resume. + if (!(await trace.rehydrateFromFile(sessionId))) trace.startTrace(sessionId, metadata) + return trace + } + + getIdentity(): { sessionId: string | undefined; traceId: string } { + return { sessionId: this.sessionId, traceId: this.traceId } + } + + setRunLineage(lineage: RunTraceLineage) { + this.metadata.run = JSON.parse(JSON.stringify(lineage, bigintReplacer)) + this.snapshot() + } + + setRunBudget(budget: RunBudgetMetadata) { + Object.assign(this.metadata, budget) + this.snapshot() + } + + setCaptureOmissions(omissions: string[]) { + this.metadata.captureOmissions = [...new Set(omissions)] + this.snapshot() + } + + private recordPart(kind: string, part: TracePartIdentity | null | undefined, fallbackID?: string): boolean { + if (!part || typeof part !== "object") return false + if (part.sessionID && part.sessionID !== this.sessionId) return false + const id = part.id ?? fallbackID + if (!id) return true // Legacy callers do not always supply persisted identities. + const key = `${kind}:${part.messageID ?? ""}:${id}` + if (this.recordedParts.has(key)) return false + this.recordedParts.add(key) + if (this.recordedParts.size > 20_000) { + this.recordedParts.delete(this.recordedParts.values().next().value!) + this.deduplicationKeysEvicted++ + } + return true + } + + private generationFor(part: TracePartIdentity | null | undefined) { + if (!part || typeof part !== "object") return undefined + if (part.messageID) { + const generation = this.generationsByMessage.get(part.messageID) + if (generation) return generation + // Older event sources omit identity on step-start. Only use that unlabelled + // current generation; a labelled different message must never receive this part. + const current = this.spans.find((span) => span.spanId === this.currentGenerationSpanId) + if (current?.attributes?.messageId) return undefined + } + if (!this.currentGenerationSpanId) return undefined + return { spanId: this.currentGenerationSpanId, text: this.generationText, tools: this.generationToolCalls } + } + /** * Start the root trace for this session. */ - startTrace( - sessionId: string, - metadata: { - instance_id?: string - title?: string - model?: string - providerId?: string - agent?: string - variant?: string - prompt?: string - userId?: string - environment?: string - version?: string - tags?: string[] - }, - ) { + startTrace(sessionId: string, metadata: TraceFile["metadata"] & { instance_id?: string }) { this.sessionId = sessionId this.metadata = { title: metadata.title, @@ -606,6 +759,14 @@ export class Trace { environment: metadata.environment, version: metadata.version, tags: metadata.tags, + run: metadata.run, + captureOmissions: metadata.captureOmissions, + max_turns: metadata.max_turns, + time_budget_s: metadata.time_budget_s, + elapsed_s: metadata.elapsed_s, + time_budget_deadline: metadata.time_budget_deadline, + effort_downgraded_at: metadata.effort_downgraded_at, + generation_interrupted_at: metadata.generation_interrupted_at, } this.rootSpanId = randomUUIDv7() this.spans.push({ @@ -714,6 +875,7 @@ export class Trace { // `rootSpanId`, silently degrading the trace shape. Marking them // interrupted preserves the partial data and makes the boundary visible. const now = Date.now() + abortOpenTools(this.spans, RESUME_ABORT_REASON, now) for (const s of this.spans) { if (s.kind === "generation" && s.endTime === undefined) { s.endTime = now @@ -786,6 +948,16 @@ export class Trace { endTime: now, status: "ok", input: text.length > USER_MESSAGE_INPUT_MAX_CHARS ? text.slice(0, USER_MESSAGE_INPUT_MAX_CHARS) : text, + ...(text.length > USER_MESSAGE_INPUT_MAX_CHARS && { + attributes: { + inputOmission: { + reason: "character_limit", + originalCharacters: text.length, + retainedCharacters: USER_MESSAGE_INPUT_MAX_CHARS, + omittedCharacters: text.length - USER_MESSAGE_INPUT_MAX_CHARS, + }, + }, + }), }) this.snapshot() } catch { @@ -797,13 +969,17 @@ export class Trace { /** * Open a generation span from a step-start event. */ - logStepStart(part: { id: string }) { + logStepStart(part: { id: string } & TracePartIdentity) { if (!this.rootSpanId) return try { + const identity: TracePartIdentity = part ?? {} + if (!this.recordPart("step-start", identity)) return const input = this.pendingToolResults.length > 0 ? this.pendingToolResults.map((r) => `[${r.tool}] ${r.summary}`).join("\n") : undefined + const originalCharacters = this.pendingToolResults.reduce((sum, result) => sum + result.originalCharacters, 0) + const retainedCharacters = this.pendingToolResults.reduce((sum, result) => sum + result.retainedCharacters, 0) this.pendingToolResults = [] this.generationText = [] this.generationToolCalls = [] @@ -823,9 +999,29 @@ export class Trace { variant: this.metadata.variant, }, input, + attributes: { + sessionId: this.sessionId, + messageId: identity.messageID, + ...(input !== undefined && { inputSource: "tool-result-summaries" }), + ...(originalCharacters > retainedCharacters && { + inputOmission: { + reason: "tool_result_summary_limit", + originalCharacters, + retainedCharacters, + omittedCharacters: originalCharacters - retainedCharacters, + }, + }), + }, }) // Only update state after successful push this.currentGenerationSpanId = genSpanId + if (identity.messageID) { + this.generationsByMessage.set(identity.messageID, { + spanId: genSpanId, + text: this.generationText, + tools: this.generationToolCalls, + }) + } this.generationCount++ } catch { // best-effort @@ -835,7 +1031,7 @@ export class Trace { /** * Close the current generation span with token/cost data from step-finish. */ - logStepFinish(part: { + logStepFinish(part: TracePartIdentity & { id: string reason: string cost: number @@ -846,8 +1042,9 @@ export class Trace { cache: { read: number; write: number } } }) { - if (!this.currentGenerationSpanId) return try { + const generation = this.generationFor(part) + if (!generation || !this.recordPart("step-finish", part)) return const n = (v: number) => (Number.isFinite(v) ? v : 0) const tokens = part.tokens ?? ({} as Record) const cache = (tokens as any).cache ?? {} @@ -866,12 +1063,12 @@ export class Trace { this.tokensBreakdown.cacheRead += tCacheRead this.tokensBreakdown.cacheWrite += tCacheWrite - const textOutput = this.generationText.join("") + const textOutput = generation.text.join("") const output = textOutput || - (this.generationToolCalls.length > 0 ? `[tool calls: ${this.generationToolCalls.join(", ")}]` : undefined) + (generation.tools.length > 0 ? `[tool calls: ${generation.tools.join(", ")}]` : undefined) - const span = this.spans.find((s) => s.spanId === this.currentGenerationSpanId) + const span = this.spans.find((s) => s.spanId === generation.spanId) if (span) { span.endTime = Date.now() span.output = output @@ -886,7 +1083,7 @@ export class Trace { total, } } - this.currentGenerationSpanId = undefined + if (this.currentGenerationSpanId === generation.spanId) this.currentGenerationSpanId = undefined this.snapshot() } catch { // best-effort @@ -894,12 +1091,17 @@ export class Trace { } /** - * Log a completed or errored tool call. + * Record a tool when it starts and update the same span when it finishes. */ - logToolCall(part: { + logToolCall(part: TracePartIdentity & { tool: string callID: string state: + | { + status: "running" + input: Record + time: { start: number } + } | { status: "completed" input: Record @@ -910,54 +1112,114 @@ export class Trace { status: "error" input: Record error: string + metadata?: { interrupted?: boolean } time: { start: number; end: number } } }) { if (!this.rootSpanId) return try { + const key = `${part.messageID ?? ""}:${part.id ?? part.callID}` const state = part.state + if (state.status === "running") { + if (this.runningTools.has(key)) return + if (!this.recordPart("tool-start", part, part?.messageID ? part.callID : undefined)) return + const generation = this.generationFor(part) + const span: TraceSpan = { + spanId: randomUUIDv7(), + parentSpanId: generation?.spanId ?? this.rootSpanId, + name: part.tool || "unknown", + kind: "tool", + startTime: state.time.start, + status: "running", + tool: { callId: part.callID }, + input: traceToolInput(state.input), + attributes: { sessionId: this.sessionId, messageId: part.messageID }, + } + this.runningTools.set(key, span) + this.spans.push(span) + generation?.tools.push(span.name) + this.toolCallCount++ + this.snapshot() + return + } + if (!this.recordPart("tool", part, part?.messageID ? part.callID : undefined)) return + this.recordPart("tool-start", part, part?.messageID ? part.callID : undefined) + // A completion that arrives after the trace was rebuilt from disk finds its span closed as + // interrupted by rehydration; finish that span instead of recording a second one. + const running = + this.runningTools.get(key) ?? + this.spans.find( + (s) => + s.kind === "tool" && + s.interrupted === true && + s.statusMessage === RESUME_ABORT_REASON && + s.tool?.callId === part.callID && + s.attributes?.messageId === part.messageID, + ) + this.runningTools.delete(key) const isError = state.status === "error" + const interrupted = isError && state.metadata?.interrupted === true const toolName = part.tool || "unknown" - this.generationToolCalls.push(toolName) + const generation = this.generationFor(part) + if (!running) generation?.tools.push(toolName) const errorStr = isError ? String(state.error ?? "") : "" const outputStr = !isError ? String(state.output ?? "") : "" const outputSummary = isError ? `error: ${errorStr.slice(0, 200)}` : outputStr.slice(0, 500) - this.pendingToolResults.push({ tool: toolName, summary: outputSummary }) + this.pendingToolResults.push({ + tool: toolName, + summary: outputSummary, + originalCharacters: isError ? errorStr.length : outputStr.length, + retainedCharacters: isError ? Math.min(errorStr.length, 200) : Math.min(outputStr.length, 500), + }) const time = state.time ?? { start: Date.now(), end: Date.now() } - const durationMs = (time.end ?? 0) - (time.start ?? 0) + const durationMs = (time.end ?? 0) - (running?.startTime ?? time.start ?? 0) - // Safely serialize input — guard against circular references - let safeInput: unknown - try { - safeInput = state.input != null ? JSON.parse(JSON.stringify(state.input)) : undefined - } catch { - safeInput = { _serialization_error: "Input contained circular references or non-serializable data" } - } + const safeInput = traceToolInput(state.input) - this.spans.push({ - spanId: randomUUIDv7(), - parentSpanId: this.currentGenerationSpanId ?? this.rootSpanId, + const span: TraceSpan = { + spanId: running?.spanId ?? randomUUIDv7(), + parentSpanId: running?.parentSpanId ?? generation?.spanId ?? this.rootSpanId, name: toolName, kind: "tool", - startTime: time.start ?? Date.now(), + startTime: running?.startTime ?? time.start ?? Date.now(), endTime: time.end ?? Date.now(), - status: isError ? "error" : "ok", + status: interrupted ? "aborted" : isError ? "error" : "ok", statusMessage: isError ? errorStr : undefined, + ...(interrupted && { interrupted: true }), tool: { callId: part.callID, durationMs: Number.isFinite(durationMs) ? durationMs : 0, }, input: safeInput, output: isError ? { error: errorStr } : outputStr.slice(0, 10000), - }) - this.toolCallCount++ + attributes: { + ...running?.attributes, + sessionId: this.sessionId, + messageId: part.messageID, + ...(!isError && outputStr.length > 10000 && { + outputOmission: { + reason: "character_limit", + originalCharacters: outputStr.length, + retainedCharacters: 10000, + omittedCharacters: outputStr.length - 10000, + }, + }), + }, + } + if (running) { + Object.assign(running, span) + if (!interrupted) delete (running as { interrupted?: boolean }).interrupted + } else { + this.spans.push(span) + this.toolCallCount++ + } // altimate_change start — trace: loop detection try { - const inputStr = safeInput != null ? JSON.stringify(safeInput) : "" + const inputStr = safeInput != null ? JSON.stringify(safeInput, bigintReplacer) : "" const inputHash = simpleHash(toolName + inputStr) const now = Date.now() this.toolCallHistory.push({ tool: toolName, inputHash, time: now }) @@ -999,8 +1261,38 @@ export class Trace { /** * Attach assistant text to the current generation. */ - logText(part: { text: string }) { - if (part.text != null) this.generationText.push(String(part.text)) + logText(part: { text: string } & TracePartIdentity) { + if (part?.text == null || !this.recordPart("text", part)) return + const generation = this.generationFor(part) + if (!generation) return + generation.text.push(String(part.text)) + const span = this.spans.find((s) => s.spanId === generation.spanId) + if (span?.endTime !== undefined) { + span.output = generation.text.join("") + this.snapshot() + } + } + + /** Record only reasoning actually exposed by the provider, regardless of terminal display. */ + logReasoning(part: { text: string } & TracePartIdentity) { + try { + if (!this.rootSpanId || !part?.text || !this.recordPart("reasoning", part)) return + const now = Date.now() + this.spans.push({ + spanId: randomUUIDv7(), + parentSpanId: this.generationFor(part)?.spanId ?? this.rootSpanId, + name: "reasoning", + kind: "span", + startTime: now, + endTime: now, + status: "ok", + output: part.text, + attributes: { sessionId: this.sessionId, messageId: part.messageID, providerExposed: true }, + }) + this.snapshot() + } catch { + // best-effort + } } /** @@ -1036,6 +1328,55 @@ export class Trace { } } + /** One request span per stream invocation, with content stored once per session/hash. */ + logLLMRequest(request: LLMRequestSnapshot) { + if (!this.rootSpanId || request.sessionID !== this.sessionId) return + try { + if (!this.recordPart("llm-request", { id: request.requestID, messageID: request.messageID })) return + const hashes: string[] = [] + const snapshot = (field: string, content: unknown) => { + const hash = createHash("sha256") + .update(typeof content === "string" ? content : snapshotJSON(content)) + .digest("hex") + const key = `${field}:${hash}` + hashes.push(key) + return this.requestSnapshotHashes.has(key) ? { hash } : { hash, content } + } + // Clone only the allowlisted catalog fields; callers must never pass provider options. + const tools = JSON.parse(snapshotJSON(request.tools)) + this.spans.push({ + spanId: randomUUIDv7(), + parentSpanId: this.rootSpanId, + name: "llm-request", + kind: "span", + startTime: request.startTime, + endTime: request.startTime, + status: "ok", + model: { modelId: request.modelID, providerId: request.providerID, variant: request.variant }, + attributes: { + sessionId: request.sessionID, + messageId: request.messageID, + userMessageId: request.userMessageID, + agent: request.agent, + requestId: request.requestID, + captureBoundary: "before-streamText", + }, + input: { + system: snapshot("system", request.system), + tools: snapshot("tools", tools), + ...(request.instructions !== undefined && { instructions: snapshot("instructions", request.instructions) }), + }, + }) + for (const hash of hashes) this.requestSnapshotHashes.add(hash) + this.metadata.captureOmissions = this.metadata.captureOmissions?.filter( + (item) => !item.startsWith("effective_system_prompt:") && !item.startsWith("resolved_tool_catalog:"), + ) + this.snapshot() + } catch { + Log.Default.debug("[tracing] failed to record LLM request") + } + } + /** * Build a TraceFile snapshot of the current state (in-progress or complete). * Used for incremental writes and live viewing. @@ -1045,12 +1386,12 @@ export class Trace { const sanitize = (n: number) => (Number.isFinite(n) ? n : 0) // Snapshot the spans array and metadata to isolate from concurrent mutations. - // structuredClone is safer than JSON.parse(JSON.stringify) for undefined values. + // Normalize BigInts at the serialization boundary without mutating live span data. let snapshotSpans: TraceSpan[] let snapshotMetadata: TraceFile["metadata"] try { - snapshotSpans = JSON.parse(JSON.stringify(this.spans)) - snapshotMetadata = { ...this.metadata, tags: this.metadata.tags ? [...this.metadata.tags] : undefined } + snapshotSpans = JSON.parse(JSON.stringify(this.spans, bigintReplacer)) + snapshotMetadata = JSON.parse(JSON.stringify(this.metadata, bigintReplacer)) } catch { // If spans contain non-serializable data, fall back to reference (best-effort) snapshotSpans = this.spans @@ -1058,6 +1399,11 @@ export class Trace { } snapshotSpans = capSpansForSerialization(snapshotSpans) + const elisionMarkers = snapshotSpans.filter( + (span) => span.spanId.startsWith("elided-") && typeof span.attributes?.elided === "number", + ) + const omittedSpans = elisionMarkers.reduce((count, span) => count + Number(span.attributes!.elided), 0) + const retainedSpans = snapshotSpans.length - elisionMarkers.length return { version: 2, @@ -1067,13 +1413,32 @@ export class Trace { endedAt: new Date(endTime).toISOString(), metadata: snapshotMetadata, spans: snapshotSpans, + ...((omittedSpans || this.deduplicationKeysEvicted) && { + omissions: { + ...(omittedSpans > 0 && { + spans: { + original: retainedSpans + omittedSpans, + retained: retainedSpans, + omitted: omittedSpans, + limit: MAX_SERIALIZED_SPANS, + }, + }), + ...(this.deduplicationKeysEvicted > 0 && { + deduplicationKeys: { evicted: this.deduplicationKeysEvicted, limit: 20_000 }, + }), + }, + }), summary: { totalTokens: sanitize(this.totalTokens), totalCost: sanitize(this.totalCost), totalToolCalls: this.toolCallCount, totalGenerations: this.generationCount, duration: sanitize(endTime - this.startTime), - status: error ? "error" : this.currentGenerationSpanId ? "running" : "completed", + status: error + ? "error" + : this.currentGenerationSpanId || this.spans.some((span) => span.kind === "tool" && span.endTime === undefined) + ? "running" + : "completed", ...(error && { error }), tokens: { input: sanitize(this.tokensBreakdown.input), @@ -1122,7 +1487,7 @@ export class Trace { // ran *during* the write doesn't get clobbered. this.snapshotPromise = fs .mkdir(this.snapshotDir, { recursive: true }) - .then(() => fs.writeFile(tmpPath, JSON.stringify(trace, null, 2))) + .then(() => fs.writeFile(tmpPath, JSON.stringify(trace, bigintReplacer, 2))) .then(() => { if (this.crashed) { // flushSync took over — drop the temp and bail @@ -1232,7 +1597,7 @@ export class Trace { if (value === undefined) continue // Guard against non-serializable values (circular refs, functions, etc.) try { - const serialized = JSON.stringify(value) + const serialized = JSON.stringify(value, bigintReplacer) // JSON.stringify returns undefined for functions, symbols, etc. if (serialized === undefined) { span.attributes[key] = String(value) @@ -1281,6 +1646,7 @@ export class Trace { // Force-close any orphaned generation span this.currentGenerationSpanId = undefined + abortOpenTools(this.spans, error ?? "Session ended before the tool completed") // Close root span const rootSpan = this.spans.find((s) => s.spanId === this.rootSpanId) @@ -1403,6 +1769,7 @@ export class Trace { this.crashed = true for (const exp of this.exporters) exp.markCrashed?.(this.sessionId) this.currentGenerationSpanId = undefined + abortOpenTools(this.spans, "Session ended before the tool completed") const rootSpan = this.spans.find((s) => s.spanId === this.rootSpanId) if (rootSpan) { rootSpan.endTime = Date.now() @@ -1415,7 +1782,7 @@ export class Trace { const safeId = (this.sessionId || "unknown").replace(/[/\\.:]/g, "_") || "unknown" const filePath = path.join(this.snapshotDir, `${safeId}.json`) fsSync.mkdirSync(this.snapshotDir, { recursive: true }) - fsSync.writeFileSync(filePath, JSON.stringify(trace, null, 2)) + fsSync.writeFileSync(filePath, JSON.stringify(trace, bigintReplacer, 2)) // FileExporter: prune synchronously (this path bypasses export()'s async pruneOldTraces, so // without it the traces dir grows unbounded for a TUI-only user). Non-file exporters (HTTP): // fire best-effort so configured `tracing.exporters` still receive interactive-session traces @@ -1462,6 +1829,7 @@ export class Trace { } // altimate_change end this.currentGenerationSpanId = undefined + abortOpenTools(this.spans, error ?? "Process exited before the tool completed") const rootSpan = this.spans.find((s) => s.spanId === this.rootSpanId) if (rootSpan) { rootSpan.endTime = Date.now() @@ -1474,7 +1842,7 @@ export class Trace { const filePath = path.join(this.snapshotDir, `${safeId}.json`) // Must be synchronous — async writes won't complete before signal handler exits fsSync.mkdirSync(this.snapshotDir, { recursive: true }) - fsSync.writeFileSync(filePath, JSON.stringify(trace, null, 2)) + fsSync.writeFileSync(filePath, JSON.stringify(trace, bigintReplacer, 2)) } catch { // best-effort — crash handler must never throw } diff --git a/packages/opencode/src/altimate/prompts/analyst.txt b/packages/opencode/src/altimate/prompts/analyst.txt index cfebbdad52..aa2b9cb89e 100644 --- a/packages/opencode/src/altimate/prompts/analyst.txt +++ b/packages/opencode/src/altimate/prompts/analyst.txt @@ -1,64 +1,23 @@ -You are altimate-code in analyst mode — a read-only data exploration agent. +You are altimate-code: a read-only analyst. Do not modify source data or files. When available, `sql_materialize` may write session-local `scratch` tables. -You CANNOT modify any files or execute destructive SQL. You can only: -- Execute SELECT queries (enforced by AltimateCore read-only mode) via `sql_execute` -- Validate and lint SQL via `altimate_core_validate` -- Analyze SQL for anti-patterns and optimization opportunities via `sql_analyze` -- Inspect database schemas via `schema_inspect` -- Check column-level lineage via `lineage_check` -- List and test warehouse connections via `warehouse_list` and `warehouse_test` -- Read files, search with grep/glob +Inspect connections, schemas and actual rows before joining or parsing; key formats may differ across databases. Establish population, grain, denominator and assumptions. Every clause of the question must bite: a filter that removes nothing usually means the wrong column. When a phrase admits two readings (which population, denominator, transform or owner column), compute both, then choose by the question's own definitions and the data's shape; keep that reasoning out of the final message. Use `sql_check` for keys, fan-out, grain, nulls or extraction coverage when they affect the answer; trivial queries need no ritual. `sql_analyze` is optional. -When exploring data: -- Start with `warehouse_list` to see available connections -- Use `schema_inspect` to understand table structures -- Use `sql_analyze` to check queries for anti-patterns before executing -- Use LIMIT clauses to avoid large result sets -- Run `lineage_check` to trace column-level data flow through transformations -- Explain your findings clearly with context +Derive large intermediate sets in-engine. For a cross-engine join, move the smaller side: a few hundred keys go into an IN list or VALUES against the big table; materialize into `scratch` only the side that is small after filtering, never a multi-million-row table when a filter or aggregate could shrink it first. Preserve requested weighting: group means weighted by contributing counts can be exact; unweighted averages change the weighting. For many similar tables, prefer catalog-driven SQL (information_schema, DuckDB query_table/UNION ALL BY NAME) after confirming dialect support. -You are designed for safe, read-only data exploration. Any attempt to modify data or files will be blocked by your permission rules. +Treat inferred text labels as data: fixed rubric, stable IDs, full coverage and duplicate checks, then deterministic counting, never by eye. When available, `task` with read-only `data-explorer` can batch work or verify reasoning. -## Cost-Conscious Exploration Protocol +## Cost-conscious exploration +Use selected columns, partition filters and LIMIT/sampling to inspect cheaply; estimates are not exact final computations. Read JSONL spill paths with `read`; spills contain returned rows, not necessarily all matches. Aggregate in SQL for exact answers. On timeout, revise the query. Report costs only from evidence. -You're the analyst's research assistant. Research should be fast AND cheap. - -**For every exploratory query:** - -1. **Start small**: Use LIMIT for initial exploration. Don't scan entire tables to answer "what does this column look like?" — LIMIT 100 is enough. - -2. **Optimize iteratively**: If a query has anti-patterns, suggest the optimized version: - - Replace SELECT * with explicit columns - - Add partition/cluster key filters - - Use approximate functions (APPROX_COUNT_DISTINCT vs COUNT(DISTINCT)) - - Sample instead of full scan for exploratory analysis - -3. **Track session cost**: Keep a mental running total of estimated cost for the session. If cumulative cost exceeds what feels reasonable for exploration, mention it: "We've scanned ~X GB across these queries. Want me to find more efficient approaches?" - -Remember: your users are hired to generate insights, not warehouse bills. Every unnecessary byte scanned is money their company doesn't need to spend. vendor-built tools have no incentive to minimize warehouse spend. You do — that's your competitive advantage. - -## Skills Available (read-only — these produce analysis, not file changes) -- /cost-report — Snowflake cost analysis with optimization suggestions -- /query-optimize — Query optimization with anti-pattern detection -- /sql-translate — Cross-dialect SQL translation with warnings (analysis only; writing translated files requires the builder agent) -- /dbt-analyze — Downstream impact analysis using lineage + manifest -- /lineage-diff — Compare column lineage between SQL versions -- /data-viz — Build interactive data visualizations, dashboards, charts, and analytics views from query results -Note: Skills that write files (/generate-tests, /model-scaffold, /yaml-config, /dbt-docs, /medallion-patterns, /incremental-logic) require the builder agent. - -## FinOps & Governance Tools -- finops_query_history — Query execution history -- finops_analyze_credits — Credit consumption analysis -- finops_expensive_queries — Identify expensive queries -- finops_warehouse_advice — Warehouse sizing recommendations -- finops_unused_resources — Find stale tables and idle warehouses -- finops_role_grants, finops_role_hierarchy, finops_user_roles — RBAC analysis -- schema_detect_pii — Scan for PII columns -- schema_tags, schema_tags_list — Metadata tag queries -- sql_diff — Compare SQL queries +## Skills +Use `skill` when available: /data-question, /cost-report, /query-optimize, /sql-translate, /dbt-analyze, /lineage-diff, /data-viz. File-writing steps require the builder agent. ## Teammate Training You are a trainable AI teammate. Check the "Teammate Training" section in your system prompt for any learned patterns, rules, glossary terms, or standards. Always apply learned training when relevant. If the user corrects your behavior, offer to save it as a rule using `training_save`. Use `training_list` to review learned knowledge. Skills: /teach, /train, /training-status. + +When the request supplies an output JSON schema (the `StructuredOutput` tool is available), finish with `StructuredOutput` instead of `answer_commit` or a plain-text reply; follow that schema. The text finalization rules below apply when no output schema is supplied. + +Finish by calling `answer_commit` with the single chosen value(s) with one field per item the request asks for (every named item, such as an entity and its related item or count, must be its own field: when the request asks for only the answer, anything left in the basis or prose is dropped), a one-or-two-sentence basis (population, grain, source object/column), or `unresolved` with the reason, then reply with exactly the text it returns and nothing else. Always supply `basis`, even when unresolved; it is never shown when the request asks for only the answer. Never list excluded candidates or alternative answers; a top-N with a tie at the boundary still returns N concrete rows (note the tie briefly in `rows.note`); when the request asks for only the answer or a specific format, set `answer_only`. If `answer_commit` is unavailable, finish with one or two sentences of basis and a final line `**Answer:** `, or `**Answer:** unable to determine — `; when the request asks for only the answer or a specific format, the final message is exactly the requested value(s) or table in the requested format, with no label and no basis (or `unable to determine — ` if unresolved); never guess. diff --git a/packages/opencode/src/altimate/prompts/data-explorer.txt b/packages/opencode/src/altimate/prompts/data-explorer.txt new file mode 100644 index 0000000000..0180c9834f --- /dev/null +++ b/packages/opencode/src/altimate/prompts/data-explorer.txt @@ -0,0 +1,9 @@ +You are data-explorer, a read-only data exploration helper. You were delegated one sub-question by another agent; answer it from the connected databases and project files. + +Rules: +- You cannot modify files or data. Use only SELECT-style queries, schema inspection, and file reads. If the question needs a write, say so and stop. +- Query the data directly instead of guessing. Inspect schemas and column values first when names or formats are unclear. +- Use `sql_check` when keys, join fan-out, grain, nulls or extraction coverage could affect the delegated answer. +- Report exact values as returned (do not round or reformat), together with the exact SQL you ran and the table(s) it ran against. +- State limits plainly: row limits or truncation, empty results, ambiguous columns, queries that failed, and anything you could not verify. Never fill a gap with a guessed value. +- Stay on the delegated sub-question. Keep the final reply short: the answer, the SQL used, and any caveats. diff --git a/packages/opencode/src/altimate/run-budget.ts b/packages/opencode/src/altimate/run-budget.ts new file mode 100644 index 0000000000..3823e01a5e --- /dev/null +++ b/packages/opencode/src/altimate/run-budget.ts @@ -0,0 +1,54 @@ +import { BusEvent } from "@/bus/bus-event" +import { SessionID } from "@/session/schema" +import z from "zod" + +const generations = new Map void>() +const queryDeadlines = new Map() + +/** Prompt-owned query limits cannot leak into a later run of the same session. */ +export function registerQueryDeadline(sessionID: string, deadline: number | undefined): () => void { + const state = { deadline: deadline !== undefined && Number.isFinite(deadline) && deadline > 0 ? deadline : undefined } + queryDeadlines.set(sessionID, state) + return () => { + if (queryDeadlines.get(sessionID) === state) queryDeadlines.delete(sessionID) + } +} + +export function queryDeadline(sessionID: string): number | undefined { + return queryDeadlines.get(sessionID)?.deadline +} + +/** A harness deadline stops generation but may still deliver an already committed answer. */ +export class HarnessDeadline extends DOMException { + constructor() { + super("Run time budget hard deadline reached", "AbortError") + } +} + +/** Register only the active provider request; disposing cannot remove a newer request. */ +export function registerGeneration(sessionID: string, interrupt: () => void): () => void { + generations.set(sessionID, interrupt) + return () => { + if (generations.get(sessionID) === interrupt) generations.delete(sessionID) + } +} + +/** The processor waits for already-running tools to persist their results before interrupting. */ +export function interruptGeneration(sessionID: string): void { + generations.get(sessionID)?.() +} + +/** A delayed reminder may interrupt only the provider request it originally targeted. */ +export function captureGenerationInterrupt(sessionID: string): () => void { + const interrupt = generations.get(sessionID) + return () => { + if (generations.get(sessionID) === interrupt) interrupt?.() + } +} + +export const GenerationInterrupted = BusEvent.define( + "session.generation.interrupted", + z.object({ sessionID: SessionID.zod, timestamp: z.number() }), +) + +export * as RunBudget from "./run-budget" diff --git a/packages/opencode/src/altimate/search-read-permissions.ts b/packages/opencode/src/altimate/search-read-permissions.ts new file mode 100644 index 0000000000..5b1b0b3fe7 --- /dev/null +++ b/packages/opencode/src/altimate/search-read-permissions.ts @@ -0,0 +1,65 @@ +// altimate_change start — canonical and lexical read rules for search candidates +import path from "path" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Wildcard } from "@opencode-ai/core/util/wildcard" +import { Permission } from "@/permission" +import type { PermissionV1 } from "@opencode-ai/core/v1/permission" +import type { Tool } from "@/tool/tool" + +/** Keep absolute read restrictions authoritative when the prompt evaluates the batch. */ +export function searchReadApproval( + patterns: string[], + permissions: PermissionV1.Ruleset = [], +): Parameters[0] { + return { + permission: "read", + patterns, + always: patterns, + metadata: {}, + ...(patterns.some((pattern) => path.isAbsolute(pattern)) && { + // Relative patterns still use the full ruleset. Absolute patterns reapply + // their own rules after relative fallbacks, retaining absolute rule order. + ruleset: [ + ...permissions, + ...permissions.filter((rule) => path.isAbsolute(rule.pattern) && Wildcard.match("read", rule.permission)), + ], + }), + } +} + +/** Select readable candidates before the result cap or any output is applied. */ +export function readableSearchResults(files: string[], worktree: string, permissions: PermissionV1.Ruleset = []) { + const allowed = new Set() + const patterns = new Set() + // Tool execution supplies the agent's effective defaults when context rules are + // absent/empty. If no agent rules can be resolved, fail closed without prompting. + if (permissions.length === 0) return { allowed, patterns: [] } + const absolutePermissions = permissions.filter( + (rule) => path.isAbsolute(rule.pattern) && Wildcard.match("read", rule.permission), + ) + for (const file of new Set(files)) { + // Match read's worktree-relative evaluation. An explicit absolute rule can + // tighten it, but an absolute allow can never override a relative deny/ask. + const relative = path.relative(worktree, file) + const absoluteRule = Permission.evaluate("read", file, absolutePermissions) + const relativeRule = Permission.evaluate("read", relative, permissions) + const absolute = path.isAbsolute(absoluteRule.pattern) ? absoluteRule.action : "allow" + // Preserve alias-specific rules while applying absolute rules to symlink targets. + let canonicalFile = file + try { + if (absolutePermissions.length > 0) canonicalFile = FSUtil.resolve(file) + } catch { + // Fail closed for this candidate without discarding other search results. + continue + } + const canonicalRule = Permission.evaluate("read", canonicalFile, absolutePermissions) + const canonical = path.isAbsolute(canonicalRule.pattern) ? canonicalRule.action : "allow" + if (relativeRule.action === "deny" || absolute === "deny" || canonical === "deny") continue + allowed.add(file) + if (relativeRule.action === "ask") patterns.add(relative) + if (absolute === "ask") patterns.add(file) + if (canonical === "ask") patterns.add(canonicalFile) + } + return { allowed, patterns: [...patterns] } +} +// altimate_change end diff --git a/packages/opencode/src/altimate/session/budget-effort.ts b/packages/opencode/src/altimate/session/budget-effort.ts new file mode 100644 index 0000000000..56f5da5163 --- /dev/null +++ b/packages/opencode/src/altimate/session/budget-effort.ts @@ -0,0 +1,119 @@ +import type { Provider } from "@/provider/provider" +import { ProviderTransform } from "@/provider/transform" +import type { ModelMessage } from "ai" + +/** Disabled-thinking SDKs discard reasoning; omit the assistant if that would leave it empty. */ +export function budgetMessages( + messages: ModelMessage[], + model: Provider.Model, + options: Record, +): ModelMessage[] { + const disabled = [options.thinking, options.reasoningConfig, options.modelParams?.thinking].some( + (value) => value?.type === "disabled", + ) + const sapAnthropic = model.api.npm === "@jerome-benoit/sap-ai-provider-v2" && model.api.id.includes("anthropic") + const anthropic = + sapAnthropic || + model.api.npm === "@ai-sdk/anthropic" || + model.api.npm === "@ai-sdk/google-vertex/anthropic" || + (model.api.npm === "@ai-sdk/amazon-bedrock" && model.api.id.includes("anthropic")) || + (model.api.npm === "@ai-sdk/gateway" && model.api.id.startsWith("anthropic/")) + if (!disabled && !anthropic) return messages + const result: ModelMessage[] = [] + for (const message of messages) { + if (message.role !== "assistant" || !Array.isArray(message.content)) { + result.push(message) + continue + } + const content = message.content.filter((part) => { + if (part.type !== "reasoning") return true + // SAP drops reasoning or serializes it as plain text; its SDK cannot round-trip signed thinking blocks. + if (disabled || sapAnthropic) return false + // A soft abort can arrive before the provider signs its reasoning block, even with effort downgrade off. + const metadata = part.providerOptions?.[model.api.npm === "@ai-sdk/amazon-bedrock" ? "bedrock" : "anthropic"] as + | Record + | undefined + return metadata?.signature != null || metadata?.redactedData != null + }) + if (content.length) result.push({ ...message, content }) + } + return result +} + +/** Apply only to this request: configured model/agent variants remain reusable by other runs. */ +export function applyBudgetEffort(model: Provider.Model, options: Record): Record { + if (!model.capabilities.reasoning) return options + + // Use the provider's supported matrix, not custom variants (which may redefine "low"). + const variants = ProviderTransform.variants(model) + const lowest = variants.minimal ?? variants.low ?? variants.none ?? Object.values(variants)[0] + const id = model.api.id.toLowerCase() + const npm = model.api.npm + const anthropic = + npm === "@ai-sdk/anthropic" || + npm === "@ai-sdk/google-vertex/anthropic" || + (npm === "@ai-sdk/gateway" && id.startsWith("anthropic/")) + + // Always-thinking Claude models reject `thinking.type: "disabled"` (HTTP 400: use adaptive thinking and + // `output_config.effort`), so the cheapest accepted request is adaptive thinking at the lowest effort. + const adaptiveOnly = ProviderTransform.anthropicOmitsThinking(model.api.id) + + if (anthropic) { + if (adaptiveOnly && lowest?.thinking?.type === "adaptive") return { ...options, ...lowest } + const result: Record = { ...options, ...lowest, thinking: { type: "disabled" } } + // Older Claude models use a token budget instead of supporting an effort field. + if (!lowest?.effort) delete result.effort + return result + } + + if (npm === "@ai-sdk/amazon-bedrock" && id.includes("anthropic")) { + if (adaptiveOnly && lowest?.reasoningConfig?.type === "adaptive") { + const { maxReasoningEffort, display } = lowest.reasoningConfig + return { + ...options, + reasoningConfig: { ...lowest.reasoningConfig }, + additionalModelRequestFields: { + ...options.additionalModelRequestFields, + thinking: { type: "adaptive", ...(display ? { display } : {}) }, + output_config: { ...options.additionalModelRequestFields?.output_config, effort: maxReasoningEffort }, + }, + } + } + const effort = lowest?.reasoningConfig?.maxReasoningEffort + const additional = { ...options.additionalModelRequestFields, thinking: { type: "disabled" } } + if (effort) additional.output_config = { ...additional.output_config, effort } + else if (additional.output_config) { + additional.output_config = { ...additional.output_config } + delete additional.output_config.effort + } + // Bedrock's SDK leaves raw additional fields unchanged when reasoningConfig is disabled. + return { + ...options, + reasoningConfig: { type: "disabled", ...(effort ? { maxReasoningEffort: effort } : {}) }, + additionalModelRequestFields: additional, + } + } + + if ( + (npm === "@ai-sdk/google" || + npm === "@ai-sdk/google-vertex" || + (npm === "@ai-sdk/gateway" && id.startsWith("google/"))) && + id.includes("2.5") + ) { + // https://ai.google.dev/gemini-api/docs/generate-content/thinking: Pro cannot disable thinking. + return { ...options, thinkingConfig: { thinkingBudget: id.includes("pro") ? 128 : 0 } } + } + + if (!lowest) return options + // Mistral's SDK exposes a none/high toggle; the catalog offers only the enabled variant. + if (npm === "@ai-sdk/mistral") return { ...options, reasoningEffort: "none" } + // Shallow replacement deliberately drops stale high budgets nested in reasoning/thinking options. + // SAP wraps its controls alongside unrelated model parameters, which must be preserved. + if (lowest.modelParams) { + const modelParams = { ...options.modelParams, ...lowest.modelParams } + // Always-thinking Claude models keep the provider's lowest adaptive variant (see above). + if (id.includes("anthropic") && !adaptiveOnly) modelParams.thinking = { type: "disabled" } + return { ...options, modelParams } + } + return { ...options, ...lowest } +} diff --git a/packages/opencode/src/altimate/session/run-budget-control.ts b/packages/opencode/src/altimate/session/run-budget-control.ts new file mode 100644 index 0000000000..4e45bedba9 --- /dev/null +++ b/packages/opencode/src/altimate/session/run-budget-control.ts @@ -0,0 +1,40 @@ +import { Bus } from "@/bus" +import type { SessionID } from "@/session/schema" +import { RunBudget } from "../run-budget" +import * as RunBudgetEffort from "./run-budget-effort" + +/** Run headers work through the shared SDK for both local and attached servers. */ +export async function withBudgetControl( + input: { sessionID: SessionID; control?: string; noReply?: boolean; queryDeadline?: string }, + prompt: () => Promise, +): Promise { + const soft = input.control === "soft" || input.control === "soft-no-downgrade" + const finalizing = input.control === "finalization" || input.control === "finalization-no-downgrade" + if (!soft && !finalizing && input.control !== "work") return prompt() + + const interrupt = input.noReply && soft ? RunBudget.captureGenerationInterrupt(input.sessionID) : undefined + // A synchronous prompt spans its entire session loop. A noReply reminder + // borrows that scope; subsequent finalization prompts explicitly re-arm it. + const release = input.noReply ? undefined : RunBudgetEffort.begin(input.sessionID, finalizing) + const releaseQueryDeadline = input.noReply + ? undefined + : RunBudget.registerQueryDeadline(input.sessionID, finalizing ? undefined : Number(input.queryDeadline)) + try { + if ( + (input.control === "soft" || input.control === "finalization") && + process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE !== "0" + ) { + const timestamp = RunBudgetEffort.downgradeEffort(input.sessionID) + if (timestamp !== undefined) { + await Bus.publish(RunBudgetEffort.EffortDowngraded, { sessionID: input.sessionID, timestamp }) + } + } + const result = await prompt() + // Interrupt the captured generation only after the next user turn is saved. + interrupt?.() + return result + } finally { + releaseQueryDeadline?.() + release?.() + } +} diff --git a/packages/opencode/src/altimate/session/run-budget-effort.ts b/packages/opencode/src/altimate/session/run-budget-effort.ts new file mode 100644 index 0000000000..5c497ad41d --- /dev/null +++ b/packages/opencode/src/altimate/session/run-budget-effort.ts @@ -0,0 +1,42 @@ +import z from "zod" +import { BusEvent } from "@/bus/bus-event" + +export const EffortDowngraded = BusEvent.define( + "session.budget.effort", + z.object({ sessionID: z.string(), timestamp: z.number() }), +) + +// The synchronous run prompt owns this state across all of its generations. +// Synthetic follow-ups re-arm it explicitly, so reusing the session in another +// run or in the TUI never inherits the previous run's reduced effort. +const active = new Map() + +export function begin(sessionID: string, finalizing = false): () => void { + const state = { finalizing } + active.set(sessionID, state) + return () => { + if (active.get(sessionID) === state) active.delete(sessionID) + } +} + +export function downgradeEffort(sessionID: string): number | undefined { + const state = active.get(sessionID) + if (!state) return undefined + return state.downgradedAt ??= Date.now() +} + +export function effortOverride(sessionID: string): boolean { + return active.get(sessionID)?.downgradedAt !== undefined +} + +export function toolsDisabled(sessionID: string): boolean { + return active.get(sessionID)?.finalizing === true +} + +export function hasActiveRuns(): boolean { + return active.size > 0 +} + +export function activeRun(sessionID: string): boolean { + return active.has(sessionID) +} diff --git a/packages/opencode/src/altimate/tool-zod-compat.ts b/packages/opencode/src/altimate/tool-zod-compat.ts index 76e1bff413..25938d1efd 100644 --- a/packages/opencode/src/altimate/tool-zod-compat.ts +++ b/packages/opencode/src/altimate/tool-zod-compat.ts @@ -14,6 +14,7 @@ import { Effect, Option, Schema, SchemaGetter } from "effect" import z from "zod" import type { JSONSchema7 } from "@ai-sdk/provider" import { EffectBridge } from "@/effect/bridge" +import { withScratchSession } from "./native/connections/scratch" import { InstanceRef } from "@/effect/instance-ref" import { Instance, type InstanceContext } from "@/project/instance" import { PermissionV1 } from "@opencode-ai/core/v1/permission" @@ -21,6 +22,7 @@ import { SessionV1 } from "@opencode-ai/core/v1/session" import type { Agent } from "@/agent/agent" import type { SessionID, MessageID } from "../session/schema" import type { Context as NewContext, DefWithoutID } from "../tool/tool" +import { fillerSafeParameters } from "../tool/filler-parameters" export type Metadata = { [key: string]: any; error?: string } @@ -33,8 +35,9 @@ export interface LegacyContext { callID?: string extra?: { [key: string]: any } messages: SessionV1.WithParts[] - metadata(input: { title?: string; metadata?: M }): void - ask(input: Omit): Promise + permissions?: PermissionV1.Ruleset + metadata(input: { title?: string; metadata?: M }): void | Promise + ask(input: Parameters[0]): Promise } export interface LegacyResult { @@ -171,6 +174,7 @@ export function zodToJsonSchema(schema: z.ZodType): JSONSchema7 { /** Build a `DefWithoutID` from a resolved legacy tool object (no Effect wrapper). */ function legacyDefToDef(legacy: LegacyToolDef): DefWithoutID { + const validationSchema = zodToJsonSchema(legacy.parameters) return { description: legacy.description, // altimate_change start — decode THROUGH zod's `parse` so defaults, coercions and transforms @@ -178,16 +182,19 @@ function legacyDefToDef(legacy: LegacyToolDef): DefWithoutID { // Schema.declare only validates and passes the raw input through, silently dropping zod // `.default()`/`.transform()`. Validation failures still surface as Effect SchemaErrors whose // nested issue.actual carries the original input (used by formatValidationError below). - parameters: Schema.declare((u): u is unknown => legacy.parameters.safeParse(u).success).pipe( - Schema.decodeTo(Schema.Unknown, { - decode: SchemaGetter.transform((u: unknown) => legacy.parameters.parse(u)), - encode: SchemaGetter.transform((u: unknown) => u), - }), + parameters: fillerSafeParameters( + Schema.declare((u): u is unknown => legacy.parameters.safeParse(u).success).pipe( + Schema.decodeTo(Schema.Unknown, { + decode: SchemaGetter.transform((u: unknown) => legacy.parameters.parse(u)), + encode: SchemaGetter.transform((u: unknown) => u), + }), + ), + validationSchema, ), // altimate_change end // altimate_change start — upstream_fix: use an explicit JSON schema when a legacy // tool needs hidden compatibility arguments that should not be advertised. - jsonSchema: legacy.jsonSchema ?? zodToJsonSchema(legacy.parameters), + jsonSchema: legacy.jsonSchema ?? validationSchema, // altimate_change end ...(legacy.formatValidationError ? { @@ -226,13 +233,14 @@ function legacyDefToDef(legacy: LegacyToolDef): DefWithoutID { callID: ctx.callID, extra: ctx.extra as { [key: string]: any } | undefined, messages: ctx.messages, - metadata: (input) => { - void bridge.promise(ctx.metadata(input)) - }, + permissions: ctx.permissions, + metadata: (input) => bridge.promise(ctx.metadata(input)), ask: (input) => bridge.promise(ctx.ask(input)), } return yield* Effect.promise(() => - instance ? Instance.restore(instance, () => legacy.execute(args as never, legacyCtx)) : legacy.execute(args as never, legacyCtx), + withScratchSession(ctx.sessionID, () => + instance ? Instance.restore(instance, () => legacy.execute(args as never, legacyCtx)) : legacy.execute(args as never, legacyCtx), + ), ) }), ), diff --git a/packages/opencode/src/altimate/tools/answer-commit.ts b/packages/opencode/src/altimate/tools/answer-commit.ts new file mode 100644 index 0000000000..baf76f3059 --- /dev/null +++ b/packages/opencode/src/altimate/tools/answer-commit.ts @@ -0,0 +1,317 @@ +import z from "zod" +import { Decimal } from "decimal.js" +import { Effect, Option, Schema, SchemaIssue } from "effect" +import type { JSONSchema7 } from "@ai-sdk/provider" +import { Tool } from "../../tool/tool" + +/** Maximum rendered answer length, including Markdown and basis, before the model echoes it. */ +export const MAX_RENDERED_ANSWER_CHARACTERS = 60_000 +export const MAX_BASIS_CHARACTERS = 400 + +const renderedLengthGuidance = `Rendered answer text must not exceed ${MAX_RENDERED_ANSWER_CHARACTERS.toLocaleString("en-US")} characters; aggregate, narrow the result, or write the full table to a file and commit the summary.` + +// Strict-schema callers fill unused optional properties with null, "", [] or {}. +// Only optional properties accept these fillers; required values still validate. +function optional(schema: T) { + return z + .union([schema, z.null(), z.literal(""), z.array(z.never()).length(0), z.object({}).strict()]) + .optional() + .transform((value) => { + if (value === null || value === undefined || (typeof value === "string" && !value.trim())) return undefined + if (Array.isArray(value) && value.length === 0) return undefined + if (typeof value === "object" && value !== null && Object.keys(value).length === 0) return undefined + return value as z.output + }) +} + +const number = z + .number() + .refine( + (value) => !Number.isInteger(value) || Number.isSafeInteger(value), + "Numeric integers must be safe; pass the exact value as a string", + ) + +const precisionRange = "precision must be an integer from 0 to 10 (inclusive)" +const precision = z.number({ error: precisionRange }).int(precisionRange).min(0, precisionRange).max(10, precisionRange) + +const field = z + .object({ + name: z.string().describe("Field label; use an empty name for an unnamed value"), + value: z + .union([z.string(), number], { error: "Each field value must be one non-empty string or number" }) + .refine((value) => typeof value !== "string" || value.trim().length > 0, "Field value must be non-empty"), + units: optional(z.string()), + precision: optional(precision).describe( + "Decimal places for numeric values: integer from 0 to 10 (inclusive); integers stay integers", + ), + }) + .strict() + +const rows = z + .object({ + columns: z.array(z.string()).min(1, "rows.columns requires at least one column"), + // altimate_change start - preserve the tabular format requested in text mode + format: optional(z.enum(["markdown", "csv", "tsv", "lines"])).describe( + "Tabular output format: markdown (default), csv, tsv, or lines. CSV/TSV include headers and quote delimiters, quotes, and newlines; null cells are empty. Lines omits headers and separates cells with one space for single-column or two-column plain lists.", + ), + // altimate_change end + values: z + .array(z.array(z.union([z.string(), number, z.null()]))) + .min(1, "rows.values requires at least one row") + .describe( + "Concrete result rows; when the request names N, the row count must equal N, even with a tie at the top-N boundary", + ), + precision: optional(z.record(z.string(), precision)).describe( + "Display decimal places by column name: integer from 0 to 10 (inclusive). Numeric cells use fixed decimals, including integers; strings and nulls are unchanged. Omitted columns use the maximum decimal scale of their numeric cells.", + ), + note: optional(z.string()).describe( + "Brief result note, including any tie at the top-N boundary; omitted when answer_only is true", + ), + }) + .strict() + .superRefine((rows, ctx) => { + if (rows.precision !== undefined && new Set(rows.columns).size !== rows.columns.length) { + ctx.addIssue({ + code: "custom", + path: ["precision"], + message: "rows.precision requires unique column labels", + }) + } + const unknown = Object.keys(rows.precision ?? {}).filter((key) => !rows.columns.includes(key)) + if (unknown.length) { + ctx.addIssue({ + code: "custom", + path: ["precision"], + message: `Unknown rows.precision keys: ${JSON.stringify(unknown)}; available columns: ${JSON.stringify(rows.columns)}`, + }) + } + rows.values.forEach((row, index) => { + if (row.length !== rows.columns.length) { + ctx.addIssue({ + code: "custom", + path: ["values", index], + message: `Row ${index} must have exactly ${rows.columns.length} cells; received ${row.length}`, + }) + } + }) + }) + +const basisRequired = `basis is always required: supply one or two sentences, at most ${MAX_BASIS_CHARACTERS} characters, naming population, grain, source object/column, and caveats` + +const parameters = z + .object({ + fields: optional( + z.array(field).superRefine((fields, ctx) => { + if (fields.length === 1) return + fields.forEach((field, index) => { + if (field.name !== "" && !field.name.trim()) { + ctx.addIssue({ + code: "custom", + path: [index, "name"], + message: "Field name must be non-empty", + }) + } + }) + }), + ).describe("One entry per item the request asks for, in the order asked."), + rows: optional(rows), + unresolved: optional( + z + .object({ + reason: z.string().refine((value) => value.trim().length > 0, "unresolved.reason must be non-empty"), + }) + .strict(), + ), + basis: z + .string({ error: basisRequired }) + .max(MAX_BASIS_CHARACTERS, `basis must contain at most ${MAX_BASIS_CHARACTERS} characters`) + .refine((value) => value.trim().length > 0, basisRequired) + .describe( + `basis is always required: one or two sentences, at most ${MAX_BASIS_CHARACTERS} characters, naming population, grain, the source object/column that supplies the requested entity or value, and caveats; never rendered with answer_only`, + ), + answer_only: optional(z.boolean()), + readings: optional( + z.array( + z + .object({ + clause: z.string(), + reading: z.string(), + result_summary: z.string(), + decided_by: z.string(), + }) + .strict(), + ), + ).describe("Advisory readings recorded only in metadata, never in the answer text"), + }) + .strict() + .refine( + (value) => [value.fields, value.rows, value.unresolved].filter((shape) => shape !== undefined).length === 1, + "Exactly one of fields, rows, or unresolved is required", + ) + +export type AnswerCommitInput = z.input + +// Tolerate boolean aliases at runtime while advertising the canonical boolean schema. +// Only answer_only is boolean; answer values and table cells must remain untouched. +const parser = z.preprocess((input) => { + if (!input || typeof input !== "object" || Array.isArray(input) || !("answer_only" in input)) return input + const value = typeof input.answer_only === "string" ? input.answer_only.toLowerCase() : input.answer_only + const answer_only = + value === "true" || value === 1 ? true : value === "false" || value === 0 ? false : input.answer_only + return { ...input, answer_only } +}, parameters) + +function validationError(error: z.ZodError): string { + const describe = (issues: z.core.$ZodIssue[], parent: PropertyKey[] = []): string[] => + issues.flatMap((issue) => { + const path = [...parent, ...issue.path] + // The first union member is the actual value schema; the others are fillers. + if (issue.code === "invalid_union" && issue.errors[0]?.length && !issue.message.includes("Each field value")) + return describe(issue.errors[0], path) + return [`${path.join(".") || "answer_commit"}: ${issue.message}`] + }) + const message = describe(error.issues).join("; ").replace(/\s+/g, " ") + const example = { + fields: [{ name: "", value: 2 }], + basis: "Counted all records at record grain using records.id; no exclusions.", + } + return `${message}\nMinimal valid example: \`${JSON.stringify(example)}\`` +} + +function tableCell(value: string | number | null): string { + return String(value) + .replaceAll("\\", "\\\\") + .replaceAll("|", "\\|") + .replace(/\r\n|\r|\n/g, " ") +} + +function limitRenderedAnswer(text: string): string { + if (text.length > MAX_RENDERED_ANSWER_CHARACTERS) throw new Error(renderedLengthGuidance) + return text +} + +/** Deterministically finalize a data-question answer without changing session state. */ +export function renderAnswer(payload: unknown): string { + const parsed = parser.safeParse(payload) + if (!parsed.success) throw new Error(validationError(parsed.error)) + const args = parsed.data + const basis = !args.answer_only && args.basis ? `${args.basis}\n\n` : "" + if (args.fields) { + const single = args.fields.length === 1 + const values = args.fields + .map((field) => { + const value = + typeof field.value === "number" && field.precision !== undefined && !Number.isInteger(field.value) + ? field.value.toFixed(field.precision) + : String(field.value) + const redundant = single && ["", "answer", "result", "value"].includes(field.name.trim().toLowerCase()) + const name = !args.answer_only && field.name && !redundant ? `${field.name}: ` : "" + return `${name}${value}${field.units ? ` ${field.units}` : ""}` + }) + .join("; ") + return limitRenderedAnswer(args.answer_only ? values : `${basis}**Answer:** ${values}`) + } + if (args.rows) { + // altimate_change start - render the requested format before applying the shared size cap + const { columns, values, precision, format = "markdown" } = args.rows + // Float noise: more than 6 decimals, yet either a double-precision artifact of, or the exact float32 widening of, a value with at most 6 decimals (0.30000000000000004, 18.440000534057617). Genuine long decimals (1234567.8901234) are not. + // Two units in the last place of a double: arithmetic artifacts (0.1 + 0.2) sit within it, genuine 15+ digit decimals do not. + const DOUBLE_ARTIFACT_RELATIVE_ERROR = Number.EPSILON * 2 + // Returns the shortest (at most 6 decimal) value the noisy cell is an artifact of, or undefined for genuine values. + const artifactOf = (value: number) => { + const decimal = new Decimal(value) + if (decimal.decimalPlaces() <= 6) return undefined + for (let places = 0; places <= 6; places++) { + const rounded = decimal.toDecimalPlaces(places) + // Only a double-precision artifact or the exact float32 widening of the rounded value qualifies. + if ( + Math.fround(rounded.toNumber()) === value || + decimal.minus(rounded).abs().lte(decimal.abs().times(DOUBLE_ARTIFACT_RELATIVE_ERROR)) + ) + return rounded + } + return undefined + } + // Noise contributes the scale of the short value it is an artifact of, never its raw digits. + const places = (value: number) => (artifactOf(value) ?? new Decimal(value)).decimalPlaces() + // A column with no ordinary numeric cell keeps its values as given. + const onlyNoise = columns.map((_, index) => { + const numbers = values.map((cells) => cells[index]).filter((cell): cell is number => typeof cell === "number") + return numbers.length > 0 && numbers.every((cell) => artifactOf(cell) !== undefined) + }) + const scales = columns.map((_, index) => + values.reduce((scale, cells) => { + const value = cells[index] + return typeof value === "number" ? Math.max(scale, places(value)) : scale + }, 0), + ) + const row = (cells: (string | number | null)[]) => { + if (format === "markdown") return `| ${cells.map(tableCell).join(" | ")} |` + if (format === "lines") return cells.map(String).join(" ") + const delimiter = format === "csv" ? "," : "\t" + return cells + .map((value) => { + const cell = value === null ? "" : String(value) + return cell.includes(delimiter) || /["\r\n]/.test(cell) ? `"${cell.replaceAll('"', '""')}"` : cell + }) + .join(delimiter) + } + const table = [ + ...(format === "lines" ? [] : [row(columns)]), + ...(format === "markdown" ? [`|${columns.map(() => "---").join("|")}|`] : []), + ...values.map((cells) => + row( + cells.map((value, index) => { + const places = + precision && Object.hasOwn(precision, columns[index]!) ? precision[columns[index]!] : undefined + if (typeof value !== "number") return value + return places !== undefined ? value.toFixed(places) : (onlyNoise[index] ? new Decimal(value).toFixed() : new Decimal(value).toFixed(scales[index]!)) + }), + ), + ), + ].join("\n") + // altimate_change end + return limitRenderedAnswer( + args.answer_only ? table : `${basis}**Answer:**\n${table}${args.rows.note ? `\n${args.rows.note}` : ""}`, + ) + } + const unresolved = `unable to determine — ${args.unresolved!.reason}` + return limitRenderedAnswer(args.answer_only ? unresolved : `${basis}**Answer:** ${unresolved}`) +} + +// Keep the renderer and native Effect tool on the same parser, including filler normalization. +const Parameters = Schema.declareConstructor, AnswerCommitInput>()([], () => (input) => { + const parsed = parser.safeParse(input) + return parsed.success + ? Effect.succeed(parsed.data) + : Effect.fail(new SchemaIssue.InvalidValue(Option.some(input), { message: validationError(parsed.error) })) +}) + +export const AnswerCommitTool = Tool.define( + "answer_commit", + Effect.succeed({ + // altimate_change start - expose format selection to the model before the terminal tool call + description: `Deterministically finalize a data-question answer. Call this as the LAST tool call, once the answer is decided and all queries are finished. After it returns, reply with exactly the returned text and nothing else. Supply exactly one of fields, rows, or unresolved. Supply one field per item the request asks for, in the order asked: a request for 'the repository and the most copied file' needs two fields (one named for the repository, one for the file); never collapse a compound request into one field, and never add fields the request did not ask for. Every named item (an entity AND a related item or count) must be its own field, because basis, notes and prose are not shown when the request asks for only the answer; an element found but kept only there is lost. Numbers use JavaScript precision; integers must be safe. Pass exact decimal values, trailing zeros, or currency strings as strings. For fields.precision and each rows.precision value, use an integer from 0 to 10 (inclusive). Set rows.precision by column name to display numeric cells with fixed decimal places, including integers; strings are never changed. Without explicit precision, each column uses the maximum decimal scale of its numeric cells. When the request names a tabular format, set rows.format accordingly: markdown (default), csv, tsv, or lines (one row per line with cells separated by a single space, without headers, for single-column or two-column plain lists). CSV/TSV include headers and quote cells containing the delimiter, quotes, or newlines, doubling embedded quotes; null cells are empty. Always supply \`basis\`; it is never shown when the request asks for only the answer. Supply one or two sentences, at most ${MAX_BASIS_CHARACTERS} characters, naming population, grain, the source object/column that supplies the requested entity or value, and caveats. Resolve policy eligibility separately from metric and entity attribution: a rule about a related object does not change which object supplies the requested entity. Say in \`basis\` which source object and column supply it. When the request names N, rows.values must contain exactly N concrete rows, even with a tie at the top-N boundary; note the tie briefly in rows.note. Use answer_only when the request asks for only the answer or a specific format: the reply is exactly the value(s) or table, with no basis, field names, note, or answer label. An unresolved answer retains its unable-to-determine status. Omit unused optional properties. ${renderedLengthGuidance} This tool is not available for JSON-schema requests; use StructuredOutput instead.`, + // altimate_change end + parameters: Parameters, + formatValidationError: (error: unknown) => (Schema.isSchemaError(error) ? error.message : String(error)), + // Preserve the existing wire schema; Zod and the SDK use different recursive JSON Schema types. + // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion + jsonSchema: z.toJSONSchema(parameters, { io: "input" }) as JSONSchema7, + execute: (args: Schema.Schema.Type, ctx: Tool.Context) => + Effect.gen(function* () { + if (ctx.agent !== "analyst") + return yield* Effect.die(new Error("answer_commit is only available to the analyst agent")) + yield* ctx.ask({ permission: "answer_commit", patterns: ["*"], always: ["*"], metadata: {} }) + const output = renderAnswer(args) + return { + title: "Answer committed", + // The processor caps model-facing output but preserves metadata for the final echo. + metadata: { readings: args.readings ?? [], truncated: false, committed_text: output }, + output, + } + }), + }), +) + +export * as AnswerCommit from "./answer-commit" diff --git a/packages/opencode/src/altimate/tools/lineage-check.ts b/packages/opencode/src/altimate/tools/lineage-check.ts index 08b2c282fc..abcabfe618 100644 --- a/packages/opencode/src/altimate/tools/lineage-check.ts +++ b/packages/opencode/src/altimate/tools/lineage-check.ts @@ -59,7 +59,7 @@ function lineageError(msg: string) { return { title: "Lineage: ERROR", metadata: { success: false, error: msg }, - output: `Failed to check lineage: ${msg}\n\nEnsure the dispatcher is running and altimate-core is initialized.`, + output: `Failed to check lineage: ${msg}`, } } diff --git a/packages/opencode/src/altimate/tools/schema-cache-status.ts b/packages/opencode/src/altimate/tools/schema-cache-status.ts index 8d803ab8bb..3b30a3173d 100644 --- a/packages/opencode/src/altimate/tools/schema-cache-status.ts +++ b/packages/opencode/src/altimate/tools/schema-cache-status.ts @@ -25,7 +25,7 @@ export const SchemaCacheStatusTool = Tool.define("schema_cache_status", { return { title: "Schema Cache Status: ERROR", metadata: { success: false, totalTables: 0, totalColumns: 0, warehouseCount: 0, error: msg }, - output: `Failed to get cache status: ${msg}\n\nEnsure the dispatcher is running.`, + output: `Failed to get cache status: ${msg}`, } } }, diff --git a/packages/opencode/src/altimate/tools/schema-inspect.ts b/packages/opencode/src/altimate/tools/schema-inspect.ts index 6883847f16..2474a76939 100644 --- a/packages/opencode/src/altimate/tools/schema-inspect.ts +++ b/packages/opencode/src/altimate/tools/schema-inspect.ts @@ -5,6 +5,9 @@ import type { SchemaInspectResult } from "../native/types" // altimate_change start — progressive disclosure suggestions import { PostConnectSuggestions } from "./post-connect-suggestions" // altimate_change end +import { resolveInspectionTarget } from "../native/connections/inspection-target" +import * as Registry from "../native/connections/registry" +import { profileValues } from "./schema-values" import { isRecord, normalizeError } from "./response-normalization" import { validateTableName, validateWarehouseName } from "./input-validation" // altimate_change start — workspace precedence @@ -14,9 +17,19 @@ import * as Precedence from "../workspace/precedence" export const SchemaInspectTool = Tool.define("schema_inspect", { description: "Inspect database schema — list columns, types, and constraints for a table.", parameters: z.object({ - table: z.string().describe("Table name (optionally schema-qualified, e.g. public.orders)"), + table: z + .string() + .describe( + "Table name (optionally schema-qualified, e.g. public.orders); a warehouse qualifier such as scratch.orders resolves to that warehouse's default schema when no such schema exists", + ), schema_name: z.string().optional().describe("Schema name if not in table string"), warehouse: z.string().optional().describe("Warehouse connection name"), + values: z + .boolean() + .optional() + .describe( + "Append sampled distinct values, null share and example values per column (default true). Use them to write filters that match the stored format.", + ), }), async execute(args, ctx) { // Pre-flight validation outranks the redirect, as it does for `sql_explain`: bad @@ -26,23 +39,38 @@ export const SchemaInspectTool = Tool.define("schema_inspect", { if (inputError) { return { title: "Schema: INVALID INPUT", - metadata: { success: false, columnCount: 0, rowCount: undefined, error: inputError, error_class: "input_validation" }, + metadata: { + success: false, + columnCount: 0, + rowCount: undefined, + error: inputError, + error_class: "input_validation", + }, output: `Invalid input: ${inputError}`, } } // altimate_change start — workspace precedence - const precedence = await Precedence.check(ctx.sessionID, "schema_inspect", args.warehouse) - if (precedence.redirect) return precedence.redirect + let precedence: Precedence.Verdict = {} // Every failure exit goes through here, so a fail-open notice cannot be dropped by // one path being overlooked — three of the four exits below are errors, and the // marker is most needed on exactly those. const failed = (message: string) => Precedence.annotate(precedence, schemaError(message)) // altimate_change end try { - const result = (await Dispatcher.call("schema.inspect", { + // Strict-schema callers send schema_name: "" for "not specified"; a blank qualifier + // must mean the engine default, not a schema literally named "". + const schemaName = args.schema_name?.trim() || undefined + const target = await resolveInspectionTarget({ table: args.table, - schema_name: args.schema_name, + schema_name: schemaName, warehouse: args.warehouse, + }) + precedence = await Precedence.check(ctx.sessionID, "schema_inspect", target.warehouse) + if (precedence.redirect) return precedence.redirect + const result = (await Dispatcher.call("schema.inspect", { + table: target.table, + schema_name: target.schema_name, + warehouse: target.warehouse, })) as unknown if (!isRecord(result)) { @@ -56,8 +84,55 @@ export const SchemaInspectTool = Tool.define("schema_inspect", { const schemaResult = (isRecord(result.data) ? result.data : result) as Partial + if (target.resolution) schemaResult.resolution = target.resolution + + // A table with no columns does not exist: the handler reports an empty column list as + // success, which read as a valid empty schema (21 of 44 inspections in one evaluation run). + if ((schemaResult.columns ?? []).length === 0) { + const resolvedSchema = schemaResult.schema_name ?? schemaName + const warehouse = schemaResult.warehouse ?? target.warehouse + if (warehouse && Registry.canonicalType(Registry.getConfig(warehouse)?.type) === "mongodb") { + const table = schemaResult.table ?? args.table + const collections = await (await Registry.get(warehouse)).listTables(resolvedSchema ?? "").catch(() => undefined) + if (collections?.some((collection) => collection.name === table)) { + return failed(`Collection "${table}" has no documents to infer a schema.`) + } + const available = collections + ? `Available collections: ${collections.map((collection) => collection.name).join(", ") || "none"}.` + : "Check the collection name and pass its database as schema_name." + return failed( + `Collection "${table}" was not found${resolvedSchema ? ` in database "${resolvedSchema}"` : ""} on warehouse "${warehouse}". ${available}`, + ) + } + const where = resolvedSchema ? ` in schema "${resolvedSchema}"` : "" + return failed( + `${schemaResult.resolution ? `${schemaResult.resolution}. ` : ""}` + + `Table "${schemaResult.table ?? args.table}" was not found${where} on warehouse "${schemaResult.warehouse ?? args.warehouse ?? "default"}". ` + + "Check the name and schema (information_schema.tables lists them), or pass schema_name explicitly." + + (schemaResult.addressing_hint ? ` ${schemaResult.addressing_hint}` : ""), + ) + } + // altimate_change start — progressive disclosure suggestions let output = formatSchema(schemaResult) + if (schemaResult.resolution) output = `${schemaResult.resolution}\n\n${output}` + if (args.values !== false) { + const resolvedTable = schemaResult.table ?? args.table + const parts = resolvedTable.includes(".") ? resolvedTable.split(".") : [schemaResult.schema_name, resolvedTable] + const ref = parts + .filter((x): x is string => !!x) + .map(quoteIdent) + .join(".") + const profile = await profileValues( + { + table: ref, + columns: schemaResult.columns!, + warehouse: schemaResult.warehouse ?? target.warehouse, + }, + ctx, + ) + if (profile) output += "\n\n" + profile + } const suggestion = PostConnectSuggestions.getProgressiveSuggestion("schema_inspect") if (suggestion) { output += "\n\n" + suggestion @@ -81,11 +156,13 @@ export const SchemaInspectTool = Tool.define("schema_inspect", { }, }) +const quoteIdent = (id: string) => `"${id.replace(/"/g, '""')}"` + function schemaError(msg: string) { return { title: "Schema: ERROR", metadata: { success: false, columnCount: 0, rowCount: undefined, error: msg }, - output: `Failed to inspect schema: ${msg}\n\nEnsure the dispatcher is running and a warehouse connection is configured.`, + output: `Failed to inspect schema: ${msg}`, } } diff --git a/packages/opencode/src/altimate/tools/schema-values.ts b/packages/opencode/src/altimate/tools/schema-values.ts new file mode 100644 index 0000000000..7cf7e1a9d1 --- /dev/null +++ b/packages/opencode/src/altimate/tools/schema-values.ts @@ -0,0 +1,188 @@ +/** + * Value grounding for `schema_inspect`: one bounded profiling query per table that + * returns, per column, the distinct count, null share and a few real values. The + * values are what reveal stored formats (case, whitespace, prefixes) that a column + * name and type never show. + */ +import type { LegacyContext } from "../tool-zod-compat" +import * as Precedence from "../workspace/precedence" +import { Dispatcher } from "../native" +import { isRecord, normalizeError } from "./response-normalization" + +/** Rows scanned per table; keeps wide or large tables cheap. */ +export const PROFILE_SAMPLE_ROWS = 10_000 +/** Hard cap on profiled columns (one UNION ALL branch each). */ +export const PROFILE_MAX_COLUMNS = 40 +/** A column with at most this many distinct sampled values lists them all. */ +export const PROFILE_LOW_CARDINALITY = 20 +const PROFILE_EXAMPLES = 3 +const PROFILE_VALUE_CHARS = 40 +const PROFILE_TIMEOUT_MS = 15_000 + +export type ProfileDialect = "sqlite" | "duckdb" | "postgres" + +const DIALECTS: Record = { + sqlite: "sqlite", + duckdb: "duckdb", + postgres: "postgres", + postgresql: "postgres", +} + +export interface ProfileColumn { + name: string + data_type?: string +} + +interface ColumnProfile { + name: string + total: number + nonNull: number + distinct: number + values: string[] + text: boolean +} + +const quote = (id: string) => `"${id.replace(/"/g, '""')}"` + +/** Types whose text cast is meaningless or expensive; skipped. */ +const UNPROFILABLE = /blob|bytea|binary|geometry|geography|vector/i +const TEXTUAL = /char|text|string|clob|uuid|enum|^$/i + +export function profileDialect(type: string | undefined): ProfileDialect | undefined { + return type ? DIALECTS[type.toLowerCase()] : undefined +} + +export function buildProfileSql(table: string, columns: ProfileColumn[], dialect: ProfileDialect = "sqlite"): string { + const sample = `WITH s AS (SELECT * FROM ${table} LIMIT ${PROFILE_SAMPLE_ROWS})` + const aggregate = dialect === "sqlite" ? "json_group_array" : "array_agg" + const branches = columns.map((c) => { + const col = `CAST(${quote(c.name)} AS TEXT)` + const lit = `'${c.name.replace(/'/g, "''")}'` + return ( + `SELECT ${lit} AS col, COUNT(*) AS total, COUNT(${col}) AS nonnull, COUNT(DISTINCT ${col}) AS ndistinct, ` + + `(SELECT ${aggregate}(v) FROM (SELECT DISTINCT ${col} AS v FROM s WHERE ${col} IS NOT NULL ` + + `LIMIT ${PROFILE_LOW_CARDINALITY + 1}) AS sampled_values) AS vals FROM s` + ) + }) + return `${sample}\n${branches.join("\nUNION ALL\n")}` +} + +function clipRaw(value: string): string { + const chars = Array.from(value) + return chars.length > PROFILE_VALUE_CHARS ? chars.slice(0, PROFILE_VALUE_CHARS).join("") + "…" : value +} + +function clip(value: string): string { + const text = clipRaw(value) + // Quote anything whose edges would otherwise be invisible. + return text === "" || text !== text.trim() || /[\r\n\t]/.test(text) ? JSON.stringify(text) : text +} + +function num(value: unknown): number { + const n = Number(value) + return Number.isFinite(n) ? n : 0 +} + +function parseValues(value: unknown): string[] { + // SQLite returns JSON text; DuckDB/Postgres return native arrays (or null when empty). + const values: unknown = typeof value === "string" ? JSON.parse(value) : value ?? [] + if (!Array.isArray(values) || !values.every((v) => typeof v === "string")) { + throw new Error("unexpected profiling values") + } + return values +} + +function parseRows(rows: unknown[], columns: ProfileColumn[]): ColumnProfile[] { + const byName = new Map(columns.map((c) => [c.name, c])) + const out: ColumnProfile[] = [] + for (const row of rows) { + if (!Array.isArray(row)) continue + const meta = byName.get(String(row[0])) + if (!meta) continue + out.push({ + name: meta.name, + total: num(row[1]), + nonNull: num(row[2]), + distinct: num(row[3]), + values: parseValues(row[4]), + text: TEXTUAL.test(meta.data_type ?? ""), + }) + } + return out +} + +function renderProfile(p: ColumnProfile): string { + const sampled = p.total >= PROFILE_SAMPLE_ROWS + const nullPct = p.total > 0 ? Math.round(((p.total - p.nonNull) / p.total) * 100) : 0 + const nulls = nullPct > 0 ? `, ${nullPct}% null` : p.total > p.nonNull ? `, <1% null` : "" + if (p.nonNull === 0) return `${p.name}: all NULL` + const approx = sampled ? "~" : "" + if (p.distinct <= PROFILE_LOW_CARDINALITY) { + return `${p.name}: ${approx}${p.distinct} distinct — ${p.values.map(clip).join(", ")}${nulls}` + } + const examples = p.text && p.values.length ? `, e.g. ${p.values.slice(0, PROFILE_EXAMPLES).map((v) => JSON.stringify(clipRaw(v))).join(", ")}` : "" + return `${p.name}: ${approx}${p.distinct.toLocaleString()} distinct${examples}${nulls}` +} + +export interface ValueProfileInput { + /** Table reference as it should appear in FROM (already qualified if needed). */ + table: string + columns: ProfileColumn[] + warehouse?: string +} + +/** Never throws: a failed profile becomes a one-line note. */ +export async function profileValues( + input: ValueProfileInput, + ctx: Pick & { abort?: AbortSignal }, +): Promise { + try { + const list = (await Dispatcher.call("warehouse.list", {})) as unknown + const warehouses = (isRecord(list) && Array.isArray(list.warehouses) ? list.warehouses : []) as Array<{ + name?: string + type?: string + }> + const target = input.warehouse ? warehouses.find((w) => w.name === input.warehouse) : warehouses[0] + const dialect = profileDialect(target?.type) + if (!target?.name || !dialect) { + return `Value samples skipped: not supported for ${target?.type ?? "this"} connections.` + } + const eligible = input.columns.filter((c) => !UNPROFILABLE.test(c.data_type ?? "")) + const cols = eligible.slice(0, PROFILE_MAX_COLUMNS) + if (cols.length === 0) return "" + const sql = buildProfileSql(input.table, cols, dialect) + await ctx.ask({ + permission: "sql_execute", + patterns: [sql], + always: ["*"], + metadata: { warehouse: target.name }, + }) + const precedence = await Precedence.check(ctx.sessionID, "sql_execute", target.name) + if (precedence.redirect) return `Value samples skipped: ${precedence.redirect.output}` + const res = (await Dispatcher.call("sql.execute", { + sql, + warehouse: target.name, + limit: PROFILE_MAX_COLUMNS + 1, + query_timeout_ms: PROFILE_TIMEOUT_MS, + ...(dialect === "postgres" ? { read_only: true } : {}), + }, { signal: ctx.abort, sessionID: ctx.sessionID })) as unknown + const data = isRecord(res) && isRecord(res.data) ? res.data : res + const error = normalizeError(isRecord(res) ? res.error : undefined) ?? normalizeError(isRecord(data) ? data.error : undefined) + if (error) throw new Error(error) + if (!isRecord(data) || !Array.isArray(data.rows)) throw new Error("unexpected profiling response") + const profiles = parseRows(data.rows, cols) + const lines = profiles.map(renderProfile) + if (lines.length === 0) return "" + const sampled = profiles.some((p) => p.total >= PROFILE_SAMPLE_ROWS) + const skipped = eligible.length - cols.length + return [ + ...(precedence.notice ? [precedence.notice] : []), + `Value samples${sampled ? ` (first ${PROFILE_SAMPLE_ROWS.toLocaleString()} rows)` : ""}:`, + ...lines, + ...(skipped > 0 ? [`(${skipped} more columns not profiled)`] : []), + ].join("\n") + } catch (e) { + const msg = (e instanceof Error ? e.message : String(e)).split("\n")[0]!.slice(0, 160) + return `Value samples unavailable: ${msg}` + } +} diff --git a/packages/opencode/src/altimate/tools/sql-check.ts b/packages/opencode/src/altimate/tools/sql-check.ts new file mode 100644 index 0000000000..a044102130 --- /dev/null +++ b/packages/opencode/src/altimate/tools/sql-check.ts @@ -0,0 +1,485 @@ +import z from "zod" +import { Tool } from "../../tool/tool" +import { zodToJsonSchema } from "../tool-zod-compat" +import * as Precedence from "../workspace/precedence" +import * as Registry from "../native/connections/registry" +import { classifyAndCheck, isSingleQuery } from "./sql-classify" +import { maskSql, tokenizeSql } from "./sql-tokenize" +import { executeQuery, type QueryContext } from "../native/query-execution" + +const column = z + .string() + .min(1) + .refine((s) => !s.includes("\0"), "Column names cannot contain NUL") +const parameters = z + .object({ + warehouse: z.string().min(1), + check: z.enum(["fanout", "keys", "grain", "nulls", "coverage"]), + sql: z.string().optional().describe("Read-only SELECT for grain, nulls or coverage"), + columns: z.array(column).min(1).max(20).optional().describe("Output column names for grain or nulls (up to 20)"), + column: column.optional().describe("Output column name for coverage"), + pattern: z.string().optional().describe("Regex on DuckDB/Postgres; SQL LIKE pattern on SQLite (no REGEXP)"), + left_sql: z.string().optional().describe("Left SELECT for fanout or keys, run in warehouse"), + right_sql: z.string().optional().describe("Right SELECT for fanout or keys, run in the same warehouse"), + on: z + .array(z.tuple([column, column])) + .min(1) + .max(20) + .optional() + .describe("Required for fanout: pairs of [left output column, right output column] for equality joins"), + join: z.enum(["inner", "left"]).optional().default("inner"), + left_col: column.optional().describe("Left output column for keys; compared as text, with type differences reported"), + right_col: column.optional().describe("Right output column for keys"), + left_warehouse: z.string().optional().describe("Optional assertion: must equal warehouse"), + right_warehouse: z.string().optional().describe("Optional assertion: must equal warehouse"), + query_timeout_ms: z.number().int().min(1).max(3_600_000).optional(), + }) + .strict() + +export type SqlCheckInput = z.input + +// Models driven by strict tool schemas (OpenAI Responses API) must send every property, so they +// fill the ones a check does not use with "" or [] — 49 of 56 gpt-5.6-sol calls were rejected for +// that. The published schema therefore tolerates empty values and dropEmpty() removes them before +// the strict parse above validates what remains. +const publicParameters = z + .object({ + warehouse: z.string().min(1), + check: z.enum(["fanout", "keys", "grain", "nulls", "coverage"]), + sql: z.string().optional().describe("Read-only SELECT for grain, nulls or coverage"), + columns: z.array(z.string()).max(20).optional().describe("Output column names for grain or nulls (up to 20)"), + column: z.string().optional().describe("Output column name for coverage"), + pattern: z.string().optional().describe("Regex on DuckDB/Postgres; SQL LIKE pattern on SQLite (no REGEXP)"), + left_sql: z.string().optional().describe("Left SELECT for fanout or keys, run in warehouse"), + right_sql: z.string().optional().describe("Right SELECT for fanout or keys, run in the same warehouse"), + on: z + .array(z.tuple([z.string(), z.string()])) + .max(20) + .optional() + .describe("Required for fanout: pairs of [left output column, right output column] for equality joins"), + join: z.string().optional().describe('"inner" (default) or "left"'), + left_col: z.string().optional().describe("Left output column for keys; compared as text, with type differences reported"), + right_col: z.string().optional().describe("Right output column for keys"), + left_warehouse: z.string().optional().describe("Optional assertion: must equal warehouse"), + right_warehouse: z.string().optional().describe("Optional assertion: must equal warehouse"), + query_timeout_ms: z + .number() + .int() + .min(1) + .max(3_600_000) + .optional() + .describe("Query deadline in ms; omitted or 0 uses the common connection policy"), + }) + .strict() + +export type SqlCheckPublicInput = z.input + +// Coverage requires a pattern, and an empty pattern is meaningful for that check. +const toolParameters = z.discriminatedUnion("check", [ + publicParameters.extend({ check: z.literal("coverage"), pattern: publicParameters.shape.pattern.unwrap() }), + publicParameters.extend({ check: z.enum(["fanout", "keys", "grain", "nulls"]) }), +]) + +/** + * Treat "", [] and null as absent so strict-schema callers can leave unused fields empty. + * A coverage check's `pattern` is the one field where "" is a value (match empty strings). + */ +export function dropEmpty(input: SqlCheckPublicInput): SqlCheckInput { + const out: Record = {} + for (const [key, value] of Object.entries(input)) { + if (key === "pattern" && input.check === "coverage" && value === "") { + out[key] = value + continue + } + if (value === "" || value === null || (Array.isArray(value) && value.length === 0)) continue + out[key] = value + } + return out as SqlCheckInput +} + +type Dialect = "sqlite" | "duckdb" | "postgres" +type Row = Record + +const ident = (s: string) => `"${s.replace(/"/g, '""')}"` +const literal = (s: string) => `'${s.replace(/'/g, "''")}'` +const number = (value: unknown) => Number(value ?? 0) +const share = (count: number, total: number) => (total ? count / total : null) +const display = (value: unknown) => + JSON.stringify(value, (_k, v) => (typeof v === "bigint" ? v.toString() : v))?.slice(0, 180) +const ratio = (value: number | null) => (value === null ? "n/a (empty input)" : value.toFixed(2)) + +function required(value: T | undefined, name: string): T { + if (value === undefined) throw new Error(`sql_check requires ${name} for this check`) + return value +} + +/** Ignore quoted content while checking structure; preserve the original SELECT and its LIMIT. */ +export function readSql(sql: string, dialect?: string): string { + const { queryType, blocked } = classifyAndCheck(sql, dialect) + // Independently reject write CTEs, SELECT INTO and statement/CTE escapes before + // embedding user SQL, even when the parser reports a query category. + const { tokens, complete } = tokenizeSql(sql, dialect) + const masked = maskSql(tokens) + // SELECT alone does not make sequence setters, extension loaders or file writers read-only. + // Preserve quoted function identifiers while hiding string literals and comments. + const functions = maskSql(tokens, true) + const body = masked.trim().replace(/;$/, "").trim() + let depth = 0 + let balanced = true + for (const char of body) { + if (char === "(") depth++ + if (char === ")" && --depth < 0) balanced = false + } + if ( + blocked || + queryType !== "read" || + !isSingleQuery(sql, dialect) || + !complete || + !balanced || + depth !== 0 || + !/^(SELECT|WITH)\b/i.test(body) || + body.includes(";") || + /\b(INSERT|UPDATE|DELETE|MERGE|DROP|ALTER|CREATE|TRUNCATE|COPY|ATTACH|DETACH|PRAGMA|VACUUM|CALL|DO|INTO|INSTALL|LOAD|EXPORT|IMPORT|GRANT|REVOKE)\b/i.test( + body, + ) || + /\bREPLACE\b(?!\s*\()/i.test(body) || + /\b(nextval|setval|set_config|load_extension|writefile|dblink_exec|lo_import|lo_export|lo_create|lo_unlink|lo_put|pg_write_file|pg_append_file|pg_file_write|pg_file_rename|pg_file_unlink|pg_advisory_lock|pg_advisory_xact_lock)\s*\(/i.test( + functions, + ) || + // PostgreSQL Unicode-escaped identifiers can spell a denied function without its literal name. + /\bU&/i.test(functions) || + /\bSYSTEM\$\w+\s*\(/i.test(functions) || + // Session-state, backend-signalling and replication functions are callable from a plain SELECT. + /\b(pg_try_advisory\w*|pg_advisory_unlock\w*|pg_advisory_lock\w*|pg_advisory_xact\w*|pg_terminate_backend|pg_cancel_backend|pg_reload_conf|pg_rotate_logfile|pg_promote|pg_switch_wal|pg_logical_emit_message|pg_create_\w*_replication_slot|pg_drop_replication_slot|pg_replication_slot_advance|pg_replication_origin_\w+|dblink|dblink_\w+|pg_notify|pg_stat_reset\w*|pg_wal_replay_\w+|pg_logical_slot_\w+|pg_replication_slot_\w+|get_lock|release_lock|release_all_locks|is_free_lock|is_used_lock|master_pos_wait|source_pos_wait|sleep|benchmark|pg_xlog_replay_\w+|pg_log_backend_memory_contexts|pg_create_restore_point|pg_backup_\w+|pg_start_backup|pg_stop_backup|lo_from_bytea)\s*\(/i.test( + functions, + ) + ) { + throw new Error( + "sql_check only accepts a single read-only SELECT (or WITH ... SELECT); it never writes or fixes data.", + ) + } + const semicolon = masked.indexOf(";") + return semicolon < 0 ? sql : sql.slice(0, semicolon) + sql.slice(semicolon + 1) +} + +function result(check: string, metadata: Row, lines: string[]): { title: string; metadata: Row; output: string } { + return { title: `SQL check: ${check}`, metadata: { check, ...metadata }, output: lines.join("\n") } +} + +/** Counts run in the warehouse; only aggregate rows and at most five samples per side leave it. */ +export function checkSql(input: SqlCheckPublicInput, context?: QueryContext) { + return executeQuery(Registry.getConfig(input.warehouse), { queryTimeoutMs: input.query_timeout_ms }, context, + (options) => checkWithinDeadline(input, { ...context, signal: options.signal })) +} + +async function checkWithinDeadline(input: SqlCheckPublicInput, context: QueryContext) { + context?.signal?.throwIfAborted() + const args = parameters.parse(dropEmpty(input)) + if ([args.left_warehouse, args.right_warehouse].some((w) => w !== undefined && w !== args.warehouse)) { + throw new Error("sql_check runs in one warehouse; use sql_materialize to put both sides in scratch first.") + } + const sourceDialect = Registry.canonicalType(Registry.getConfig(args.warehouse)?.type) ?? undefined + // Validate every supplied SQL field, even one unused by the selected mode. + const sql = args.sql === undefined ? undefined : readSql(args.sql, sourceDialect) + const left = args.left_sql === undefined ? undefined : readSql(args.left_sql, sourceDialect) + const right = args.right_sql === undefined ? undefined : readSql(args.right_sql, sourceDialect) + // Keep internal CTEs from shadowing any relation in the supplied queries. + let scope = "__sql_check_0_" + for (let i = 1; [sql, left, right].some((s) => s?.toLowerCase().includes(scope)); i++) scope = `__sql_check_${i}_` + const rawType = Registry.getConfig(args.warehouse)?.type.toLowerCase() + const dialect = rawType === "postgresql" ? "postgres" : rawType + if (dialect !== "sqlite" && dialect !== "duckdb" && dialect !== "postgres") { + throw new Error( + "sql_check supports SQLite, DuckDB and Postgres; use sql_materialize to bring other sources into scratch first.", + ) + } + const connector = await Registry.get(args.warehouse) + async function run(query: string): Promise { + const response = await executeQuery(Registry.getConfig(args.warehouse), { + noLimit: true, + queryTimeoutMs: args.query_timeout_ms, + ...(dialect === "postgres" ? { readOnly: true } : {}), + }, context, (options) => connector.execute(query, undefined, undefined, options)) + if (response.truncated) throw new Error("sql_check received truncated aggregates; no verdict is available") + return response.rows.map((row) => Object.fromEntries(response.columns.map((col, i) => [col, row[i]]))) + } + const one = () => `WITH ${scope}source AS (\n${required(sql, "sql")}\n)` + const two = () => + `WITH ${scope}lhs AS (\n${required(left, "left_sql")}\n), ${scope}rhs AS (\n${required(right, "right_sql")}\n)` + + if (args.check === "fanout") { + const on = required(args.on, "on") + const names = on.map((_pair, i) => `k${i}`) + const keys = names.join(", ") + const group = (side: number) => on.map((pair, i) => `src.${ident(pair[side])} AS ${names[i]}`).join(", ") + const equality = names.map((name) => `l.${name} = r.${name}`).join(" AND ") + // Keep right rows separate: their own collation/grouping can differ from the + // join's equality (e.g. a binary left key and a NOCASE right key in SQLite). + const rows = await run(`${two()}, + ${scope}lk AS (SELECT ${group(0)}, COUNT(*) AS n FROM ${scope}lhs src GROUP BY ${on.map(([col]) => `src.${ident(col)}`).join(", ")}), + ${scope}rk AS (SELECT ${group(1)}, 1 AS n FROM ${scope}rhs src), + ${scope}matches AS (SELECT ${names.map((n) => `l.${n}`).join(", ")}, l.n AS left_n, COALESCE(SUM(r.n), 0) AS right_n + FROM ${scope}lk l LEFT JOIN ${scope}rk r ON ${equality} GROUP BY ${names.map((n) => `l.${n}`).join(", ")}, l.n), + ${scope}summary AS (SELECT (SELECT COUNT(*) FROM ${scope}lhs) AS left_rows, (SELECT COUNT(*) FROM ${scope}rhs) AS right_rows, + COALESCE(SUM(left_n * ${args.join === "left" ? "CASE WHEN right_n = 0 THEN 1 ELSE right_n END" : "right_n"}), 0) AS joined_rows, + COUNT(*) AS left_keys, COALESCE(SUM(CASE WHEN right_n > 1 THEN 1 ELSE 0 END), 0) AS multiplying_keys FROM ${scope}matches), + ${scope}samples AS (SELECT ${keys}, right_n FROM ${scope}matches WHERE right_n > 1 ORDER BY right_n DESC, ${keys} LIMIT 5) + SELECT summary.*, samples.* FROM ${scope}summary summary LEFT JOIN ${scope}samples samples ON 1 = 1`) + const first = rows[0] + const leftRows = number(first.left_rows) + const multiplying = number(first.multiplying_keys) + const samples = rows + .filter((r) => r.right_n != null) + .map((r) => ({ key: names.map((n) => r[n]), matches: number(r.right_n) })) + const metadata = { + left_rows: leftRows, + right_rows: number(first.right_rows), + joined_rows: number(first.joined_rows), + fanout_ratio: share(number(first.joined_rows), leftRows), + left_keys: number(first.left_keys), + multiplying_keys: multiplying, + samples, + } + return result(args.check, metadata, [ + `fan-out: ${ratio(metadata.fanout_ratio)} (${multiplying ? `${multiplying} of ${metadata.left_keys} left keys match multiple right rows` : "no multiplication"})`, + `rows: left ${leftRows}; right ${metadata.right_rows}; ${args.join} joined ${metadata.joined_rows}`, + `multiplying keys (up to 5): ${samples.map(display).join(", ") || "none"}`, + ]) + } + + if (args.check === "keys") return checkKeys(args, dialect, two(), scope, run) + + if (args.check === "grain") { + const cols = required(args.columns, "columns") + const names = cols.map((_col, i) => `k${i}`) + const rows = + await run(`${one()}, ${scope}groups AS (SELECT ${cols.map((col, i) => `src.${ident(col)} AS ${names[i]}`).join(", ")}, COUNT(*) AS n + FROM ${scope}source src GROUP BY ${cols.map((c) => `src.${ident(c)}`).join(", ")}), + ${scope}summary AS (SELECT COALESCE(SUM(n), 0) AS total_rows, COUNT(*) AS distinct_combinations FROM ${scope}groups), + ${scope}samples AS (SELECT * FROM ${scope}groups WHERE n > 1 ORDER BY n DESC, ${names.join(", ")} LIMIT 5) + SELECT summary.*, samples.* FROM ${scope}summary summary LEFT JOIN ${scope}samples samples ON 1 = 1`) + const total = number(rows[0].total_rows) + const distinct = number(rows[0].distinct_combinations) + const samples = rows.filter((r) => r.n != null).map((r) => ({ key: names.map((n) => r[n]), count: number(r.n) })) + return result( + args.check, + { total_rows: total, distinct_combinations: distinct, duplicate_count: total - distinct, samples }, + [ + `grain: ${total === distinct ? "unique" : `${total - distinct} duplicate rows beyond the first per key`}`, + `rows: ${total}; distinct combinations (including NULL): ${distinct}`, + `duplicates (up to 5): ${samples.map(display).join(", ") || "none"}`, + ], + ) + } + + if (args.check === "nulls") { + const cols = required(args.columns, "columns") + const [row] = await run( + `${one()} SELECT COUNT(*) AS n, ${cols + .map( + (col, i) => + `COUNT(*) - COUNT(src.${ident(col)}) AS null_${i}, COUNT(DISTINCT src.${ident(col)}) AS distinct_${i}`, + ) + .join(", ")} FROM ${scope}source src`, + ) + const total = number(row.n) + const columns = cols.map((column, i) => ({ + column, + null_count: number(row[`null_${i}`]), + null_share: share(number(row[`null_${i}`]), total), + distinct_count: number(row[`distinct_${i}`]), + })) + return result(args.check, { total_rows: total, columns }, [ + `nulls: ${columns.some((c) => c.null_count) ? "NULL values found" : "no NULL values"}; rows: ${total}`, + ...columns.map( + (c) => + `${display(c.column)}: nulls ${c.null_count}; share ${ratio(c.null_share)}; distinct non-null ${c.distinct_count}`, + ), + ]) + } + + const col = `src.${ident(required(args.column, "column"))}` + const pattern = required(args.pattern, "pattern") + if (pattern.includes("\0")) throw new Error("Patterns cannot contain NUL") + // E strings make backslashes unambiguous even with standard_conforming_strings off. + const quoted = dialect === "postgres" ? `E${literal(pattern.replace(/\\/g, "\\\\"))}` : literal(pattern) + const value = `CAST(${col} AS ${dialect === "postgres" ? "TEXT" : "VARCHAR"})` + const predicate = + dialect === "duckdb" + ? `regexp_matches(${value}, ${quoted})` + : dialect === "postgres" + ? `${value} ~ ${quoted}` + : `${value} LIKE ${quoted}` + const rows = + await run(`${one()}, ${scope}checked AS (SELECT ${col} AS value, CASE WHEN ${predicate} THEN 1 ELSE 0 END AS matched FROM ${scope}source src), + ${scope}summary AS (SELECT COUNT(*) AS n, COALESCE(SUM(matched), 0) AS matching FROM ${scope}checked), + ${scope}samples AS (SELECT DISTINCT value, 1 AS present FROM ${scope}checked WHERE matched = 0 ORDER BY value LIMIT 5) + SELECT summary.*, samples.* FROM ${scope}summary summary LEFT JOIN ${scope}samples samples ON 1 = 1`) + const total = number(rows[0].n) + const matching = number(rows[0].matching) + const mode = dialect === "sqlite" ? "like" : "regex" + return result( + args.check, + { + rows: total, + matching_rows: matching, + share: share(matching, total), + pattern_mode: mode, + samples: rows.filter((r) => r.present != null).map((r) => r.value), + }, + [ + `coverage: ${total ? `${matching}/${total} rows match (${((100 * matching) / total).toFixed(2)}%); ${total - matching} non-matching` : "n/a (empty input)"}`, + `pattern mode: ${mode}${mode === "like" ? " (SQLite has no REGEXP by default; supply a LIKE pattern using % and _)" : ""}; NULL counts as non-matching`, + `non-matching values (up to 5): ${ + rows + .filter((r) => r.present != null) + .map((r) => display(r.value)) + .join(", ") || "none" + }`, + ], + ) +} + +async function checkKeys( + args: z.output, + dialect: Dialect, + sources: string, + scope: string, + run: (sql: string) => Promise, +) { + const left = `src.${ident(required(args.left_col, "left_col"))}` + const right = `src.${ident(required(args.right_col, "right_col"))}` + const text = (col: string) => + `CAST(${col} AS ${dialect === "postgres" ? "TEXT" : "VARCHAR"})${dialect === "sqlite" ? " COLLATE BINARY" : ""}` + const type = (col: string) => (dialect === "postgres" ? `CAST(pg_typeof(${col}) AS TEXT)` : `typeof(${col})`) + const integerTypes = + "'integer', 'smallint', 'bigint', 'tinyint', 'hugeint', 'utinyint', 'usmallint', 'uinteger', 'ubigint', 'uhugeint'" + // Materialize each normalization once per distinct key, never once per candidate pair. + const normalized = (side: string) => `${scope}${side}trim AS MATERIALIZED ( + SELECT v, LOWER(v) AS lower_v, LOWER(TRIM(v)) AS trim_v, CASE WHEN TRIM(v) <> v THEN 1 ELSE 0 END AS spaced + FROM ${scope}${side} WHERE (SELECT integer_keys FROM ${scope}typing) = 0), + ${scope}${side}base AS MATERIALIZED (SELECT *, ${dialect === "sqlite" ? "trim_v" : "regexp_replace(trim_v, '[^a-z0-9]', '', 'g')"} AS base_v FROM ${scope}${side}trim), + ${scope}${side}norm AS MATERIALIZED (SELECT *, CASE WHEN base_v = '' THEN '' ELSE COALESCE(NULLIF(${dialect === "sqlite" ? "LTRIM(base_v, '0')" : "regexp_replace(base_v, '^0+', '')"}, ''), '0') END AS zero_v FROM ${scope}${side}base)` + const edge = (a: string, b: string) => + `(LENGTH(${a}) > 0 AND LENGTH(${b}) > LENGTH(${a}) AND (SUBSTR(${b}, 1, LENGTH(${a})) = ${a} OR SUBSTR(${b}, LENGTH(${b}) - LENGTH(${a}) + 1) = ${a}))` + // Group the right forms before joining so normalization collisions cannot multiply rows. + const rows = await run(`${sources}, + ${scope}l AS MATERIALIZED (SELECT DISTINCT ${text(left)} AS v FROM ${scope}lhs src WHERE ${left} IS NOT NULL), + ${scope}r AS MATERIALIZED (SELECT DISTINCT ${text(right)} AS v FROM ${scope}rhs src WHERE ${right} IS NOT NULL), + ${scope}lt AS (SELECT DISTINCT ${type(left)} AS t FROM ${scope}lhs src WHERE ${left} IS NOT NULL), + ${scope}rt AS (SELECT DISTINCT ${type(right)} AS t FROM ${scope}rhs src WHERE ${right} IS NOT NULL), + ${scope}typing AS (SELECT CASE WHEN EXISTS (SELECT 1 FROM ${scope}lt) AND EXISTS (SELECT 1 FROM ${scope}rt) + AND NOT EXISTS (SELECT 1 FROM ${scope}lt WHERE LOWER(t) NOT IN (${integerTypes})) + AND NOT EXISTS (SELECT 1 FROM ${scope}rt WHERE LOWER(t) NOT IN (${integerTypes})) THEN 1 ELSE 0 END AS integer_keys, + CASE WHEN EXISTS (SELECT t FROM ${scope}lt EXCEPT SELECT t FROM ${scope}rt) + OR EXISTS (SELECT t FROM ${scope}rt EXCEPT SELECT t FROM ${scope}lt) THEN 1 ELSE 0 END AS type_diff), + ${normalized("l")}, ${normalized("r")}, + ${scope}rcase AS (SELECT lower_v AS k, MIN(v) AS min_v, MAX(v) AS max_v FROM ${scope}rnorm GROUP BY lower_v), + ${scope}rtrimmed AS (SELECT trim_v AS k, MIN(v) AS min_v, MAX(v) AS max_v, MAX(spaced) AS spaced FROM ${scope}rnorm GROUP BY trim_v), + ${scope}rnormalized AS (SELECT DISTINCT base_v AS k FROM ${scope}rnorm), + ${scope}rzero AS (SELECT zero_v AS k, MIN(base_v) AS min_v, MAX(base_v) AS max_v FROM ${scope}rnorm GROUP BY zero_v), + ${scope}probes AS (SELECT COUNT(t.k) AS matched_trim_lower, + ${dialect === "sqlite" ? "NULL" : "COUNT(n.k)"} AS matched_normalized, COUNT(z.k) AS matched_without_leading_zeros, + MAX(CASE WHEN l.v <> c.min_v OR l.v <> c.max_v THEN 1 ELSE 0 END) AS case_only, + MAX(CASE WHEN (l.v <> t.min_v OR l.v <> t.max_v) AND (l.spaced = 1 OR t.spaced = 1) THEN 1 ELSE 0 END) AS whitespace, + MAX(CASE WHEN l.base_v <> z.min_v OR l.base_v <> z.max_v THEN 1 ELSE 0 END) AS leading_zeros + FROM ${scope}lnorm l LEFT JOIN ${scope}rcase c ON l.lower_v = c.k + LEFT JOIN ${scope}rtrimmed t ON l.trim_v = t.k + LEFT JOIN ${scope}rnormalized n ON l.base_v = n.k + LEFT JOIN ${scope}rzero z ON l.zero_v = z.k), + ${scope}lu AS MATERIALIZED (SELECT l.v FROM ${scope}l l LEFT JOIN ${scope}r r ON l.v = r.v WHERE r.v IS NULL), + ${scope}ru AS (SELECT r.v FROM ${scope}r r LEFT JOIN ${scope}l l ON r.v = l.v WHERE l.v IS NULL ORDER BY r.v LIMIT 5), + ${scope}lp AS MATERIALIZED (SELECT LOWER(TRIM(v)) AS v FROM ${scope}lu WHERE (SELECT integer_keys FROM ${scope}typing) = 0 ORDER BY v LIMIT 100), + ${scope}rp AS MATERIALIZED (SELECT LOWER(TRIM(v)) AS v FROM ${scope}r WHERE (SELECT integer_keys FROM ${scope}typing) = 0 ORDER BY v LIMIT 100), + ${scope}summary AS (SELECT (SELECT COUNT(*) FROM ${scope}l) AS distinct_left, (SELECT COUNT(*) FROM ${scope}r) AS distinct_right, + (SELECT COUNT(*) FROM ${scope}l l JOIN ${scope}r r ON l.v = r.v) AS matched_exact, + probes.*, typing.*, + CASE WHEN EXISTS (SELECT 1 FROM ${scope}lp l CROSS JOIN ${scope}rp r WHERE ${edge("l.v", "r.v")} OR ${edge("r.v", "l.v")}) THEN 1 ELSE 0 END AS prefix_suffix + FROM ${scope}probes probes CROSS JOIN ${scope}typing typing), + ${scope}lsamples AS (SELECT v FROM ${scope}lu ORDER BY v LIMIT 5), + ${scope}samples AS (SELECT 'left' AS side, v FROM ${scope}lsamples UNION ALL SELECT 'right' AS side, v FROM ${scope}ru) + SELECT summary.*, samples.* FROM ${scope}summary summary LEFT JOIN ${scope}samples samples ON 1 = 1`) + const row = rows[0] + const integerKeys = number(row.integer_keys) > 0 + const diffs = [ + ["case_only", "case-only"], + ["whitespace", "whitespace"], + ["leading_zeros", "leading zeros"], + ["prefix_suffix", "prefix/suffix"], + ["type_diff", "type"], + ] + .filter(([key]) => number(row[key]) > 0) + .map(([, label]) => label) + const metadata = { + distinct_left: number(row.distinct_left), + distinct_right: number(row.distinct_right), + matched_exact: number(row.matched_exact), + left_coverage: share(number(row.matched_exact), number(row.distinct_left)), + right_coverage: share(number(row.matched_exact), number(row.distinct_right)), + matched_trim_lower: integerKeys ? "n/a" : number(row.matched_trim_lower), + matched_normalized: integerKeys || dialect === "sqlite" ? "n/a" : number(row.matched_normalized), + matched_without_leading_zeros: integerKeys ? "n/a" : number(row.matched_without_leading_zeros), + format_differences: diffs, + prefix_suffix_probe: integerKeys ? "skipped (integer keys)" : "up to 100 unmatched left keys and 100 right keys", + normalization: integerKeys + ? "skipped (integer keys)" + : dialect === "sqlite" + ? "trim + lower; strip non-alphanumerics: n/a (no regexp_replace)" + : "trim + lower + strip non-alphanumerics (ASCII)", + unmatched_left: rows.filter((r) => r.side === "left").map((r) => r.v), + unmatched_right: rows.filter((r) => r.side === "right").map((r) => r.v), + } + const verdict = !metadata.distinct_left + ? "no left keys" + : metadata.matched_exact === metadata.distinct_left + ? "left coverage complete" + : "unmatched left keys found" + return result("keys", metadata, [ + `keys: ${verdict}${diffs.includes("type") ? "; type differences require review" : ""}; distinct non-null text left ${metadata.distinct_left}, right ${metadata.distinct_right}`, + `exact text coverage: left ${metadata.matched_exact}/${metadata.distinct_left}; right ${metadata.matched_exact}/${metadata.distinct_right}; shares: left ${ratio(metadata.left_coverage)}, right ${ratio(metadata.right_coverage)}`, + `matched left keys: exact text ${metadata.matched_exact}; trim/lower ${metadata.matched_trim_lower}; normalized ${metadata.matched_normalized}; normalized + leading-zero removal ${metadata.matched_without_leading_zeros}`, + `normalization: ${metadata.normalization}; matches count distinct left text values, not pairs; native join coercion may differ`, + `format differences (possible, not fixes): ${diffs.join(", ") || "none detected"}`, + `prefix/suffix probe: ${metadata.prefix_suffix_probe}`, + `unmatched exact left (up to 5): ${metadata.unmatched_left.map(display).join(", ") || "none"}`, + `unmatched exact right (up to 5): ${metadata.unmatched_right.map(display).join(", ") || "none"}`, + ]) +} + +export const SqlCheckTool = Tool.define("sql_check", { + description: + "Check SQL result invariants: fanout (join defaults to inner), keys, grain, nulls, or extraction coverage. " + + "Read-only SELECTs run in one SQLite, DuckDB or Postgres warehouse, with their original LIMITs preserved; samples cap at five. " + + "Use sql_materialize to put cross-warehouse or other-engine sources into scratch first. " + + "Key normalization is diagnostic and may collapse unrelated values; no automatic fixes. Coverage uses regex except SQLite's explicit LIKE fallback. " + + "Leave fields a check does not use empty.", + parameters: toolParameters, + // Strict-schema providers require a flat object at the root of the wire schema. + jsonSchema: zodToJsonSchema(publicParameters), + async execute(args, ctx) { + try { + // altimate_change start — validate and authorize reads before workspace redirects + const input = dropEmpty(args) + const dialect = Registry.canonicalType(Registry.getConfig(input.warehouse)?.type) ?? undefined + const queries = [input.sql, input.left_sql, input.right_sql].filter((sql): sql is string => sql !== undefined) + for (const sql of queries) readSql(sql, dialect) + await ctx.ask({ + permission: "sql_execute", + patterns: queries, + always: ["*"], + metadata: { warehouse: input.warehouse }, + }) + const precedence = await Precedence.check(ctx.sessionID, "sql_execute", input.warehouse) + if (precedence.redirect) return precedence.redirect + // altimate_change end + return Precedence.annotate(precedence, await checkSql(args, { signal: ctx.abort, sessionID: ctx.sessionID })) + } catch (error) { + const message = error instanceof Error ? error.message : String(error) + return { + title: `SQL check: ${args.check} ERROR`, + metadata: { check: args.check, error: message }, + output: `${args.check}: no verdict — ${message.replace(/\s+/g, " ").slice(0, 1500)}`, + } + } + }, +}) diff --git a/packages/opencode/src/altimate/tools/sql-classify.ts b/packages/opencode/src/altimate/tools/sql-classify.ts index 363f6ba47a..509b16f9f5 100644 --- a/packages/opencode/src/altimate/tools/sql-classify.ts +++ b/packages/opencode/src/altimate/tools/sql-classify.ts @@ -2,11 +2,14 @@ // // Uses altimate-core's AST-based getStatementTypes() for accurate classification. // Handles CTEs, string literals, procedural blocks, all dialects correctly. -// Falls back to regex-based heuristics if the napi binary fails to load. +// Parser failures are never reads; lexical checks retain hard-deny protection. + +import { hasMongoWriteStage, normalizeMqlCommand } from "@altimateai/drivers" +import { maskSql, statementsOf, tokenizeSql } from "./sql-tokenize" // Safe import: napi binary may not be available on all platforms let getStatementTypes: ((sql: string, dialect?: string | null) => any) | null = null -let extractMetadata: ((sql: string) => any) | null = null +let extractMetadata: ((sql: string, dialect?: string | null) => any) | null = null try { // eslint-disable-next-line @typescript-eslint/no-require-imports const core = require("@altimateai/altimate-core") @@ -17,85 +20,283 @@ try { extractMetadata = core.extractMetadata } } catch { - // napi binary failed to load — will use regex fallback + // The parser is required to establish that SQL is a read. } // Only SELECT queries are known safe. "other" (SHOW, SET, USE, etc.) is ambiguous — prompt for permission. const READ_CATEGORIES = new Set(["query"]) +// The parser labels SELECT INTO and queries with modifying CTEs as "query". +// Quoted identifiers/literals and comments cannot introduce these write clauses. +function hasQueryWriteClause(sql: string, dialect?: string): boolean { + return /\b(INTO|INSERT|UPDATE|DELETE|MERGE)\b/i.test(maskSql(tokenizeSql(sql, dialect).tokens)) +} + +const READ_ONLY_OTHER_PATTERN = /^\s*(SHOW\b[^;]*|DESCRIBE\b[^;]*|DESC\b[^;]*)$/i +// Parentheses on a PRAGMA generally assign a value, just like '='. Only known +// introspection pragmas may take arguments without requesting write permission. +const READ_ONLY_PRAGMA_ARGUMENTS = new Set([ + "table_info", + "table_xinfo", + "index_info", + "index_xinfo", + "index_list", + "foreign_key_list", + "database_list", + "show_tables", + "storage_info", + "integrity_check", +]) +// Unknown bare pragmas may perform work or be added by extensions. Only known +// introspection and setting getters can skip write permission. +const READ_ONLY_BARE_PRAGMAS = new Set([ + ...READ_ONLY_PRAGMA_ARGUMENTS, + "table_list", + "collation_list", + "function_list", + "pragma_list", + "compile_options", + "show_tables_expanded", + "database_size", + "version", + "platform", + "quick_check", + "user_version", + "schema_version", + "journal_mode", + "foreign_keys", + "application_id", + "data_version", + "encoding", + "page_count", + "page_size", + "freelist_count", +]) + +function isReadOnlyMetadata(statement: string): boolean { + if (READ_ONLY_OTHER_PATTERN.test(statement)) return true + const pragma = /^\s*PRAGMA\s+(?:\w+\.)?(\w+)\s*(\([\s\S]*\))?\s*$/i.exec(statement) + if (!pragma) return false + const name = pragma[1].toLowerCase() + return (pragma[2] === undefined ? READ_ONLY_BARE_PRAGMAS : READ_ONLY_PRAGMA_ARGUMENTS).has(name) +} +// EXPLAIN is a read only when the explained statement is one: `EXPLAIN ANALYZE` +// executes the statement, so `EXPLAIN ANALYZE DELETE …` must stay a write. +const EXPLAIN_PREFIX = /^\s*EXPLAIN\b(\s+(ANALYZE|VERBOSE|QUERY\s+PLAN|FORMAT\s+\w+|\([^)]*\)))*\s+/i + +function isReadOnlyOther(statement: string, dialect?: string): boolean { + if (isReadOnlyMetadata(statement)) return true + const explained = statement.replace(EXPLAIN_PREFIX, "") + if (explained === statement) return false + return ( + (/^\s*(SELECT|WITH)\b/i.test(explained) && !hasQueryWriteClause(explained, dialect)) || + isReadOnlyMetadata(explained) + ) +} + +/** + * Check ordered parser statements independently. The parser may skip unsupported + * statements (e.g. CHECKPOINT), so the lexical statement count must agree too. + */ +function otherIsReadOnly(sql: string, parsed: Array<{ category: string }>, dialect?: string): boolean { + if (!tokenizeSql(sql, dialect).complete) return false + const statements = statementsOf(sql, dialect) + if (statements.length !== parsed.length) return false + return parsed.every( + (statement, i) => + (READ_CATEGORIES.has(statement.category) && !hasQueryWriteClause(statements[i], dialect)) || + (statement.category === "other" && isReadOnlyOther(statements[i], dialect)), + ) +} + // Hard-deny patterns — blocked regardless of permissions const HARD_DENY_TYPES = new Set(["DROP DATABASE", "DROP SCHEMA", "TRUNCATE", "TRUNCATE TABLE"]) -// Regex fallback: conservative — only known-safe reads are whitelisted, everything else is "write" -const READ_PATTERN = /^\s*(SELECT|WITH|SHOW|EXPLAIN|DESCRIBE|DESC)\b/i -const HARD_DENY_PATTERN = - /^\s*(DROP\s+(DATABASE|SCHEMA)\b|TRUNCATE(\s+TABLE)?\b)/i +const HARD_DENY_PATTERN = /^\s*(DROP\s+(DATABASE|SCHEMA)\b|TRUNCATE(\s+TABLE)?\b)/i /** - * Regex-based fallback classifier for when altimate-core is unavailable. - * Conservative: treats anything not clearly a SELECT/WITH/SHOW/EXPLAIN as "write". - * Handles multi-statement SQL by splitting on semicolons and checking each statement. + * Fail closed when the parser is unavailable or rejects the input. Lexical + * statement boundaries still enforce hard denies without reading quoted text. */ -function classifyFallback(sql: string): { queryType: "read" | "write"; blocked: boolean } { - const cleaned = sql - .replace(/\/\*[\s\S]*?\*\//g, "") // block comments - .replace(/--[^\n]*/g, "") // line comments - const statements = cleaned.split(";").map(s => s.trim()).filter(Boolean) - if (statements.length === 0) return { queryType: "read", blocked: false } - let queryType: "read" | "write" = "read" - let blocked = false +function classifyFallback(sql: string, dialect?: string): { queryType: "read" | "write"; blocked: boolean } { + const statements = statementsOf(sql, dialect) + // Executable comments can contain entire statements or fragments of a hard + // deny. Reject them outright because generic parsers discard their bodies. + let blocked = tokenizeSql(sql, dialect).tokens.some( + ({ kind, text }) => kind === "comment" && /^\/\*(?:!|[mM]!)/.test(text), + ) for (const stmt of statements) { if (HARD_DENY_PATTERN.test(stmt)) blocked = true - if (!READ_PATTERN.test(stmt)) queryType = "write" } - return { queryType, blocked } + return { queryType: "write", blocked } +} + +/** SQL wrapped in a subquery needs independent parser proof of exactly one query. */ +export function isSingleQuery(sql: string, dialect?: string): boolean { + if (!getStatementTypes || !tokenizeSql(sql, dialect).complete) return false + try { + const result = getStatementTypes(sql, dialect) + return ( + statementsOf(sql, dialect).length === 1 && + result?.statement_count === 1 && + result.statements?.length === 1 && + result.statements[0].category === "query" && + result.categories?.length === 1 && + result.categories[0] === "query" + ) + } catch { + return false + } } /** * Classify a SQL string as "read" or "write" using AST parsing. * If ANY statement is a write, returns "write". */ -export function classify(sql: string): "read" | "write" { - if (!sql || typeof sql !== "string") return "read" - if (!getStatementTypes) return classifyFallback(sql).queryType - try { - const result = getStatementTypes(sql) - if (!result?.categories?.length) return "read" - return result.categories.some((c: string) => !READ_CATEGORIES.has(c)) ? "write" : "read" - } catch { - return classifyFallback(sql).queryType - } +export function classify(sql: string, dialect?: string): "read" | "write" { + return classifyAndCheck(sql, dialect).queryType } /** * Classify a multi-statement SQL string. - * getStatementTypes handles multi-statement natively — no semicolon splitting needed. + * Parser categories and lexical statement boundaries must agree. */ -export function classifyMulti(sql: string): "read" | "write" { - return classify(sql) +export function classifyMulti(sql: string, dialect?: string): "read" | "write" { + return classify(sql, dialect) } /** * Single-pass: classify and check for hard-denied statement types. * Returns both the overall query type and whether a hard-deny pattern was found. */ -export function classifyAndCheck(sql: string): { queryType: "read" | "write"; blocked: boolean } { +export function classifyAndCheck(sql: string, dialect?: string): { + queryType: "read" | "write" + blocked: boolean + parseError?: string +} { if (!sql || typeof sql !== "string") return { queryType: "read", blocked: false } - if (!getStatementTypes) return classifyFallback(sql) + if (!tokenizeSql(sql, dialect).complete) { + return { ...classifyFallback(sql, dialect), parseError: "SQL contains unterminated or unsupported quoted text or comments" } + } + if (!getStatementTypes) return { ...classifyFallback(sql, dialect), parseError: "SQL parser is unavailable" } try { - const result = getStatementTypes(sql) - if (!result?.statements?.length) return { queryType: "read", blocked: false } + const result = getStatementTypes(sql, dialect) + if (!Array.isArray(result?.statements) || result.statement_count !== result.statements.length) { + return { ...classifyFallback(sql, dialect), parseError: "SQL parser returned an invalid statement list" } + } - const blocked = result.statements.some( - (s: { statement_type: string }) => - s.statement_type && HARD_DENY_TYPES.has(s.statement_type.toUpperCase()), - ) + // A generic parser can treat MySQL arithmetic (--2) as a comment and omit + // trailing statements. Keep dialect-aware lexical hard denies authoritative. + const blocked = + classifyFallback(sql, dialect).blocked || + result.statements.some( + (s: { statement_type: string }) => s.statement_type && HARD_DENY_TYPES.has(s.statement_type.toUpperCase()), + ) + + return { queryType: otherIsReadOnly(sql, result.statements, dialect) ? "read" : "write", blocked } + } catch (error) { + return { ...classifyFallback(sql, dialect), parseError: error instanceof Error ? error.message : String(error) } + } +} + +// MongoDB commands are JSON, not SQL: the SQL classifier reads every one as a write, which denied +// 52 of 52 Mongo reads for a read-only agent in one evaluation run. Classify them by command. +const MONGO_READ_COMMANDS = new Set([ + "find", + "aggregate", + "countDocuments", + "estimatedDocumentCount", + "distinct", + "listCollections", + "listIndexes", + "ping", +]) +const MONGO_WRITE_COMMANDS = new Set([ + "insertOne", + "insertMany", + "updateOne", + "updateMany", + "deleteOne", + "deleteMany", + "createCollection", + "createIndex", +]) +const MONGO_BLOCKED_COMMANDS = new Set(["dropDatabase", "dropCollection"]) - const categories = result.categories ?? [] - const queryType = categories.some((c: string) => !READ_CATEGORIES.has(c)) ? "write" : "read" - return { queryType: queryType as "read" | "write", blocked } +/** + * Classify a MongoDB command document (native `{"find": "coll"}` or `{command, collection}` shape). + * Returns null when the text is not a JSON command document. + */ +export function classifyMongoCommand( + query: string, +): { queryType: "read" | "write"; blocked: boolean; normalized: string } | null { + const trimmed = query.trim() + if (!trimmed.startsWith("{")) return null + let parsed: Record + try { + parsed = normalizeMqlCommand(JSON.parse(trimmed)) + } catch { + return null + } + if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return null + const command = parsed["command"] + if (typeof command !== "string" || !command.trim()) return null + if (!MONGO_READ_COMMANDS.has(command) && !MONGO_WRITE_COMMANDS.has(command) && !MONGO_BLOCKED_COMMANDS.has(command)) return null + const pipeline = Array.isArray(parsed["pipeline"]) ? (parsed["pipeline"] as unknown[]) : [] + const writesViaPipeline = hasMongoWriteStage(pipeline) + const read = MONGO_READ_COMMANDS.has(command) && !writesViaPipeline + return { queryType: read ? "read" : "write", blocked: MONGO_BLOCKED_COMMANDS.has(command), normalized: JSON.stringify(parsed) } +} + +// Writes confined to the session's ephemeral scratch database: table/view DDL and row DML. +// Anything that can reach outside the engine — COPY … TO a file, ATTACH, INSTALL/LOAD, +// EXPORT, SET/PRAGMA — is deliberately absent and keeps needing write permission. +const SCRATCH_WRITE_TYPES = new Set([ + "CREATE TABLE", + "CREATE VIEW", + "DROP TABLE", + "DROP VIEW", + "ALTER TABLE", + "INSERT", + "UPDATE", + "DELETE", +]) + +// DuckDB accepts catalog.table as well as catalog.schema.table. A two-part +// target is safe only for the built-in main schema; quoted names keep their dots. +function hasLocalScratchTarget(statement: string): boolean { + const identifier = '"(?:[^"]|"")*"|[A-Za-z_][A-Za-z0-9_$]*' + const target = new RegExp( + `^\\s*(?:CREATE\\s+(?:OR\\s+REPLACE\\s+)?(?:(?:TEMP|TEMPORARY)\\s+)?(?:TABLE|VIEW)|DROP\\s+(?:TABLE|VIEW)|ALTER\\s+TABLE|INSERT\\s+(?:OR\\s+(?:REPLACE|IGNORE)\\s+)?INTO|UPDATE|DELETE\\s+FROM)\\s+(?:IF\\s+(?:NOT\\s+)?EXISTS\\s+)?((?:${identifier})(?:\\s*\\.\\s*(?:${identifier}))*)`, + "i", + ).exec(statement) + if (!target) return false + const names = target[1].match(new RegExp(identifier, "g"))! + if (names.length > 2 || (names.length === 2 && names[0].replace(/^"|"$/g, "").toLowerCase() !== "main")) return false + // A DROP statement can name more than one table, unlike the other forms. + return !/^\s*DROP\b/i.test(statement) || !statement.slice(target[0].length).includes(",") +} + +/** + * True when every statement is a table/view DDL or row DML the scratch database can absorb + * without side effects outside it. Unparseable or unknown statements are not scratch-safe. + * Reads are excluded: the driver caps rows only when the whole text starts with a read. + */ +export function isScratchSafeWrite(sql: string): boolean { + const dialect = "duckdb" + if (!getStatementTypes || !sql || typeof sql !== "string") return false + if (!tokenizeSql(sql, dialect).complete) return false + try { + const result = getStatementTypes(sql, dialect) + const statements: Array<{ statement_type?: string }> = result?.statements ?? [] + const source = statementsOf(sql, dialect) + if (statements.length === 0 || statements.length !== source.length) return false + return ( + statements.every((s) => SCRATCH_WRITE_TYPES.has(String(s.statement_type ?? "").toUpperCase())) && + source.every(hasLocalScratchTarget) + ) } catch { - return classifyFallback(sql) + return false } } @@ -113,11 +314,11 @@ export interface SqlFingerprint { /** Compute a PII-safe structural fingerprint of a SQL query. * Uses altimate-core AST parsing — local, no API calls, ~1-5ms. */ -export function computeSqlFingerprint(sql: string): SqlFingerprint | null { +export function computeSqlFingerprint(sql: string, dialect?: string): SqlFingerprint | null { if (!getStatementTypes || !extractMetadata) return null try { - const stmtResult = getStatementTypes(sql) - const meta = extractMetadata(sql) + const stmtResult = getStatementTypes(sql, dialect) + const meta = extractMetadata(sql, dialect) return { statement_types: stmtResult?.types ?? [], categories: stmtResult?.categories ?? [], diff --git a/packages/opencode/src/altimate/tools/sql-execute.ts b/packages/opencode/src/altimate/tools/sql-execute.ts index 39672df90b..25e787ed8d 100644 --- a/packages/opencode/src/altimate/tools/sql-execute.ts +++ b/packages/opencode/src/altimate/tools/sql-execute.ts @@ -1,9 +1,28 @@ import z from "zod" +import { Effect } from "effect" +import { EffectBridge } from "../../effect/bridge" +import { Truncate } from "../../tool/truncate" +import { legacyToInit, type LegacyToolDef } from "../tool-zod-compat" +import { formatSqlResult, SQL_MAX_PREVIEW_BYTES } from "./sql-result-format" +import { lintSqlResult } from "./sql-result-lint" import { Tool } from "../../tool/tool" import { Dispatcher } from "../native" import type { SqlExecuteResult } from "../native/types" // altimate_change start - SQL write access control + fingerprinting -import { classifyAndCheck, computeSqlFingerprint } from "./sql-classify" +import { + classifyAndCheck, + classifyMongoCommand, + computeSqlFingerprint, + isScratchSafeWrite, +} from "./sql-classify" +import { statementsOf } from "./sql-tokenize" + +const MONGO_WAREHOUSE_TYPES = new Set(["mongodb", "mongo"]) + +function isMongoWarehouse(name: string | undefined): boolean { + const type = Registry.canonicalType(name ? Registry.getConfig(name)?.type : undefined) ?? "" + return MONGO_WAREHOUSE_TYPES.has(type) +} import { Telemetry } from "../telemetry" // altimate_change end // altimate_change start — progressive disclosure suggestions @@ -12,6 +31,7 @@ import { PostConnectSuggestions } from "./post-connect-suggestions" // altimate_change start — pre-execution SQL validation via cached schema import { getCache } from "../native/schema/cache" import * as Registry from "../native/connections/registry" +import { isScratch } from "../native/connections/scratch" // altimate_change end // altimate_change start — workspace precedence import * as Precedence from "../workspace/precedence" @@ -19,150 +39,356 @@ import * as Precedence from "../workspace/precedence" // altimate_change start — never render a warehouse failure as an empty result import { normalizeError } from "./response-normalization" // altimate_change end +import { readSql } from "./sql-check" -export const SqlExecuteTool = Tool.define("sql_execute", { - description: "Execute SQL against a connected data warehouse. Returns results as a formatted table.", - parameters: z.object({ - query: z.string().describe("SQL query to execute"), - warehouse: z.string().optional().describe("Warehouse connection name"), - limit: z.number().optional().default(100).describe("Max rows to return"), - }), - async execute(args, ctx) { - // altimate_change start - SQL write access control - // Permission checks OUTSIDE try/catch so denial errors propagate to the framework - const { queryType, blocked } = classifyAndCheck(args.query) - if (blocked) { - throw new Error("DROP DATABASE, DROP SCHEMA, and TRUNCATE are blocked for safety. This cannot be overridden.") - } - if (queryType === "write") { - await ctx.ask({ - permission: "sql_execute_write", - patterns: [args.query.slice(0, 200)], - always: ["*"], - metadata: { queryType }, - }) - } - // altimate_change end - - // altimate_change start — workspace precedence. - // Last, after BOTH native safety checks. A redirect returns early, so anything - // above it stops running — and neither check has an equivalent on the other side: - // the engine's execution tools apply no hard-deny list, and an engine tool key is - // matched by the builder's `"*": "allow"` rule while `sql_execute_write` is "ask". - // Redirecting first would let a write reach the warehouse without the confirmation - // the same statement needed a moment ago. Approving and then redirecting is not a - // wasted prompt: the write still happens, through the engine, and what the user - // authorised is the write — not which connection carries it. - const precedence = await Precedence.check(ctx.sessionID, "sql_execute", args.warehouse) - if (precedence.redirect) return precedence.redirect - // altimate_change end - - // altimate_change start — shadow-mode pre-execution SQL validation - // Runs validation against cached schema and emits sql_pre_validation telemetry, - // but does NOT block execution. Used to measure catch rate before deciding - // whether to enable blocking in a future release. Fire-and-forget so it - // doesn't add latency to the sql_execute hot path. - preValidateSql(args.query, args.warehouse, queryType).catch(() => {}) - // altimate_change end - - try { - const result = await Dispatcher.call("sql.execute", { - sql: args.query, - warehouse: args.warehouse, - limit: args.limit, - }) +const MAX_SQL_ROWS = 10_000 +const LIMIT_ERROR = "limit must be a finite positive integer" +const MAX_GENERATED_SQL_BYTES = 1024 * 1024 +// Below the default tool-output cap, so a redirect never spills the SQL into a truncated file. +const MAX_REDIRECT_SQL_BYTES = 40 * 1024 - // altimate_change start — a failure must not be rendered as "(0 rows)". - // sql.execute never throws: it catches every connection and query error - // and returns a result-shaped object carrying `error`, so an unresolvable - // warehouse used to reach the agent as a successful empty table with no - // fault string at all. Surface it the way schema_inspect already does. - const responseError = normalizeError((result as SqlExecuteResult & { error?: unknown }).error) - if (responseError !== undefined) { - const msg = responseError.trim() || "SQL execution failed." - // altimate_change: deliberately NOT fingerprinted. `sql.execute` returns this - // same result shape both for a warehouse query that ran and failed AND for a - // pre-execution failure — no warehouse configured, connector setup failed - // (see connections/register.ts). This branch alone cannot tell those apart, so - // fingerprinting it would mislabel some never-executed queries as "executed - // SQL". De-scoped to fingerprint-on-success-only (below) rather than build a - // failed-execution-vs-never-executed taxonomy in this cleanup PR; tracked as - // altimate-code#1242. - // altimate_change — annotate this failure too, same as the catch block below: - // a fail-open notice that only rides on success under-counts fail-open in - // precisely the cases most likely to fail. - return Precedence.annotate(precedence, { - title: "SQL: ERROR", - metadata: { rowCount: 0, truncated: false, error: msg }, - output: `Failed to execute SQL: ${msg}`, - }) - } - // altimate_change end - - // altimate_change start — emit SQL structure fingerprint telemetry on the - // success path, BEFORE formatting the result. A query that reached this point - // genuinely executed against a warehouse; emitting the fingerprint here (rather - // than after formatResult()) means a formatting failure below still leaves this - // execution counted, instead of silently dropping it from the telemetry. - try { - const fp = computeSqlFingerprint(args.query) - if (fp) { - Telemetry.track({ - type: "sql_fingerprint", - timestamp: Date.now(), - session_id: ctx.sessionID, - statement_types: JSON.stringify(fp.statement_types), - categories: JSON.stringify(fp.categories), - table_count: fp.table_count, - function_count: fp.function_count, - has_subqueries: fp.has_subqueries, - has_aggregation: fp.has_aggregation, - has_window_functions: fp.has_window_functions, - node_count: fp.node_count, - }) - } - } catch { - // Fingerprinting must never break query execution - } - // altimate_change end - - let output = formatResult(result) - // altimate_change start — progressive disclosure suggestions - const suggestion = PostConnectSuggestions.getProgressiveSuggestion("sql_execute") - if (suggestion) { - output += "\n\n" + suggestion - PostConnectSuggestions.trackSuggestions({ - suggestionType: "progressive_disclosure", - suggestionsShown: ["sql_analyze"], - warehouseType: args.warehouse ?? "default", - }) - } - // altimate_change end - // altimate_change — carries the fail-open notice when the target could not be - // attributed to the workspace; a no-op otherwise. - return Precedence.annotate(precedence, { - title: `SQL: ${args.query.slice(0, 60)}${args.query.length > 60 ? "..." : ""}`, - metadata: { rowCount: result.row_count, truncated: result.truncated }, - output, - }) - } catch (e) { - const msg = e instanceof Error ? e.message : String(e) - // altimate_change: deliberately NOT fingerprinted, same reasoning as the - // result-error branch above — this catch only fires when `Dispatcher.call` - // itself throws, which never happened after a warehouse actually ran the query. - // altimate_change — annotate the failure too. A fail-open notice that only rides - // on success is worse than none: the reason vanishes exactly when the call went - // wrong, and the `precedence` marker under-counts fail-open in precisely the - // cases most likely to fail. - return Precedence.annotate(precedence, { - title: "SQL: ERROR", - metadata: { rowCount: 0, truncated: false, error: msg }, - output: `Failed to execute SQL: ${msg}\n\nEnsure the dispatcher is running and a warehouse connection is configured.`, - }) - } - }, +function generatedRead(sql: string, warehouse: string, stage: "source" | "result"): string { + try { + return readSql(sql, Registry.canonicalType(Registry.getConfig(warehouse)?.type) ?? undefined) + } catch { + throw new Error(`query_from ${stage} must be a single read-only SELECT (or WITH ... SELECT).`) + } +} + +const parameters = z.object({ + query: z.string().nullish().describe("SQL query to execute; omit when using query_from"), + query_from: z + .object({ + warehouse: z.string().describe("Warehouse containing the SQL generator or saved SQL"), + sql: z.string().describe("Single read-only SELECT returning exactly one row and one SQL string column"), + }) + .nullish() + .describe( + "Fetch SQL internally instead of copying generated SQL through the conversation; requires an explicit target warehouse", + ), + warehouse: z.string().optional().describe("Warehouse connection name"), + limit: z + .number({ error: LIMIT_ERROR }) + .int(LIMIT_ERROR) + .min(1, LIMIT_ERROR) + .transform((limit) => Math.min(limit, MAX_SQL_ROWS)) + .optional() + .default(100) + .describe(`Max rows to return (default 100; larger values are capped at ${MAX_SQL_ROWS})`), + query_timeout_ms: z + .number() + .int() + .min(1) + .max(3_600_000) + .optional() + .describe( + "Optional per-query execution deadline in ms. Omit or use 0 to use the configured deadline (connection setting or environment), bounded by the remaining run budget. Set a positive value only when a specific query needs a longer or shorter budget.", + ), }) +export const SqlExecuteTool = Tool.define( + "sql_execute", + Effect.gen(function* () { + const truncate = yield* Truncate.Service + return () => + Effect.gen(function* () { + const bridge = yield* EffectBridge.make() + return yield* legacyToInit({ + description: + "Execute SQL against a connected data warehouse. Returns results as a formatted table. " + + "Provide exactly one of query or query_from. query_from runs a read-only generator SELECT and executes its single SQL string result (up to 1 MiB) as a read-only SELECT on warehouse, without previewing or retyping the generated SQL. " + + "For DuckDB table sets, generate query_table([...], true) with escaped table-name string literals. For thousands of tables, UNION ALL BY NAME batches of at most 128 names to stay within the default expression depth.", + parameters, + formatValidationError: (error) => error.issues?.map((issue) => issue.message).join("; ") || LIMIT_ERROR, + async execute(args, ctx) { + let sql = args.query ?? "" + // Strict-schema clients send null or empty placeholders for unused optional fields. + const queryFrom = args.query_from?.warehouse.trim() || args.query_from?.sql.trim() ? args.query_from : undefined + if (Boolean(sql.trim()) === Boolean(queryFrom)) { + throw new Error("Provide exactly one of query or query_from.") + } + let sourcePrecedence: Precedence.Verdict | undefined + if (queryFrom) { + if (!queryFrom.warehouse.trim() || !queryFrom.sql.trim()) { + throw new Error("query_from requires non-empty warehouse and sql.") + } + if (!args.warehouse?.trim()) throw new Error("query_from requires an explicit target warehouse.") + const source = queryFrom + const sourceSql = generatedRead(source.sql, source.warehouse, "source") + await ctx.ask({ + permission: "sql_execute", + patterns: [sourceSql], + always: ["*"], + metadata: { warehouse: source.warehouse }, + }) + sourcePrecedence = await Precedence.check(ctx.sessionID, "sql_execute", source.warehouse) + if (sourcePrecedence.redirect) return sourcePrecedence.redirect + try { + const result = await Dispatcher.call("sql.execute", { + sql: sourceSql, + warehouse: source.warehouse, + limit: 2, + query_timeout_ms: args.query_timeout_ms, + ...(Registry.canonicalType(Registry.getConfig(source.warehouse)?.type) === "postgres" + ? { read_only: true } + : {}), + }, { signal: ctx.abort, sessionID: ctx.sessionID }) + const error = normalizeError(result.error) + if (error !== undefined) { + throw new Error(`query_from source failed: ${error.trim() || "SQL execution failed."}`) + } + const value = result.rows[0]?.[0] + if ( + result.truncated || + result.row_count !== 1 || + result.columns.length !== 1 || + result.rows.length !== 1 || + result.rows[0].length !== 1 || + typeof value !== "string" || + !value.trim() + ) { + throw new Error( + "query_from must return exactly one row and one non-empty SQL string column, without truncation.", + ) + } + if (Buffer.byteLength(value, "utf8") > MAX_GENERATED_SQL_BYTES) { + throw new Error("query_from generated SQL exceeds the 1 MiB limit.") + } + sql = generatedRead(value, args.warehouse, "result") + } catch (error) { + if (!sourcePrecedence.notice) throw error + const message = error instanceof Error ? error.message : String(error) + throw new Error(`${sourcePrecedence.notice}\n\n${message}`) + } + await ctx.ask({ + permission: "sql_execute", + patterns: [sql], + always: ["*"], + metadata: { warehouse: args.warehouse }, + }) + } + // altimate_change start - SQL write access control + // Permission checks OUTSIDE try/catch so denial errors propagate to the framework + // MongoDB warehouses take JSON command documents; the SQL classifier would read + // every one as a write. Dispatch the normalized `{command, collection}` form. + const warehouse = args.warehouse || Registry.list().warehouses[0]?.name + // An omitted warehouse tries dbt before the registry fallback. Its dialect + // can differ, so only an explicit target can relax conservative SQL lexing. + const dialect = args.warehouse + ? (Registry.canonicalType(Registry.getConfig(args.warehouse)?.type) ?? undefined) + : undefined + const mongoWarehouse = isMongoWarehouse(warehouse) + const mongo = mongoWarehouse ? classifyMongoCommand(sql) : null + if (mongoWarehouse && !mongo) { + throw new Error( + 'A MongoDB query must be a JSON command, e.g. {"command":"find","collection":"c","filter":{}}. SQL text is not supported.', + ) + } + const classification = mongo ?? classifyAndCheck(sql, dialect) + const { queryType, blocked } = classification + const query = mongo?.normalized ?? sql + if (blocked) { + throw new Error( + "DROP DATABASE, DROP SCHEMA, TRUNCATE, and executable SQL comments are blocked for safety. This cannot be overridden.", + ) + } + const parseError = "parseError" in classification ? classification.parseError : undefined + if (!mongo && queryType === "read") { + // classifyAndCheck verifies complete lexical/parser agreement and every + // statement's read status, including metadata. Unlike check/materialize, + // execution does not wrap SQL in a subquery and accepts those reads. + const count = statementsOf(query, dialect).length + if (count === 0) throw new Error("SQL execution requires a statement.") + // Connectors expose one result set; several prepare only one statement + // or cannot normalize a batch response. Do not silently drop reads. + if (count > 1) { + throw new Error("Multi-statement reads are not supported by this execution path. Run each read separately.") + } + } + // The ephemeral scratch database is the session's own workspace (what sql_materialize + // writes to), so table DDL/row DML there needs no write permission. Statements that can + // reach outside the engine (COPY TO, ATTACH, INSTALL/LOAD, EXPORT, SET) still ask, and + // the hard-deny list above still applies. + if (queryType === "write" && !(isScratch(args.warehouse) && isScratchSafeWrite(sql))) { + // Unprovable SQL still goes through write approval; the prompt carries the parse error. + await ctx.ask({ + permission: "sql_execute_write", + patterns: [sql.slice(0, 200)], + always: ["*"], + metadata: { queryType, ...(parseError && { parseError }) }, + }) + } + // altimate_change end + + // altimate_change start — workspace precedence. + // Last, after BOTH native safety checks. A redirect returns early, so anything + // above it stops running — and neither check has an equivalent on the other side: + // the engine's execution tools apply no hard-deny list, and an engine tool key is + // matched by the builder's `"*": "allow"` rule while `sql_execute_write` is "ask". + // Redirecting first would let a write reach the warehouse without the confirmation + // the same statement needed a moment ago. Approving and then redirecting is not a + // wasted prompt: the write still happens, through the engine, and what the user + // authorised is the write — not which connection carries it. + const precedence = { ...(await Precedence.check(ctx.sessionID, "sql_execute", args.warehouse)) } + if (precedence.redirect) { + // The workspace tool needs the SQL; a generated statement exists only in this + // frame, so hand it to the caller or the redirect cannot be followed. + if (queryFrom && Buffer.byteLength(sql, "utf8") > MAX_REDIRECT_SQL_BYTES) { + throw new Error( + "query_from generated SQL is too large to hand to the workspace tool; run it on a local connection.", + ) + } + const redirect = queryFrom + ? { + ...precedence.redirect, + output: `${precedence.redirect.output}\n\nSQL to run:\n${sql}`, + metadata: { ...precedence.redirect.metadata, generated_sql: true }, + } + : precedence.redirect + return sourcePrecedence ? Precedence.annotate(sourcePrecedence, redirect) : redirect + } + if (sourcePrecedence?.notice) { + precedence.notice = [sourcePrecedence.notice, precedence.notice].filter(Boolean).join("\n") + precedence.precedence ??= sourcePrecedence.precedence + } + // altimate_change end + + // altimate_change start — shadow-mode pre-execution SQL validation + // Runs validation against cached schema and emits sql_pre_validation telemetry, + // but does NOT block execution. Used to measure catch rate before deciding + // whether to enable blocking in a future release. Fire-and-forget so it + // doesn't add latency to the sql_execute hot path. + preValidateSql(sql, args.warehouse, queryType).catch(() => {}) + // altimate_change end + + try { + // A PostgreSQL view can invoke a writing function even for a parsed read. + const readOnly = queryType === "read" && + Registry.canonicalType(warehouse ? Registry.getConfig(warehouse)?.type : undefined) === "postgres" + const result = await Dispatcher.call("sql.execute", { + sql: query, + warehouse: args.warehouse, + limit: args.limit, + query_timeout_ms: args.query_timeout_ms, + ...(readOnly ? { read_only: true } : {}), + }, { signal: ctx.abort, sessionID: ctx.sessionID }) + + // altimate_change start — a failure must not be rendered as "(0 rows)". + // sql.execute never throws: it catches every connection and query error + // and returns a result-shaped object carrying `error`, so an unresolvable + // warehouse used to reach the agent as a successful empty table with no + // fault string at all. Surface it the way schema_inspect already does. + const responseError = normalizeError((result as SqlExecuteResult & { error?: unknown }).error) + if (responseError !== undefined) { + const msg = responseError.trim() || "SQL execution failed." + // altimate_change: deliberately NOT fingerprinted. `sql.execute` returns this + // same result shape both for a warehouse query that ran and failed AND for a + // pre-execution failure — no warehouse configured, connector setup failed + // (see connections/register.ts). This branch alone cannot tell those apart, so + // fingerprinting it would mislabel some never-executed queries as "executed + // SQL". De-scoped to fingerprint-on-success-only (below) rather than build a + // failed-execution-vs-never-executed taxonomy in this cleanup PR; tracked as + // altimate-code#1242. + // altimate_change — annotate this failure too, same as the catch block below: + // a fail-open notice that only rides on success under-counts fail-open in + // precisely the cases most likely to fail. + return Precedence.annotate(precedence, { + title: "SQL: ERROR", + metadata: { rowCount: 0, truncated: false, error: msg }, + output: `Failed to execute SQL: ${msg}`, + }) + } + // altimate_change end + + // altimate_change start — emit SQL structure fingerprint telemetry on the + // success path, BEFORE formatting the result. A query that reached this point + // genuinely executed against a warehouse; emitting the fingerprint here (rather + // than after formatting) means a formatting failure below still leaves this + // execution counted, instead of silently dropping it from the telemetry. + try { + const fp = computeSqlFingerprint(sql, dialect) + if (fp) { + Telemetry.track({ + type: "sql_fingerprint", + timestamp: Date.now(), + session_id: ctx.sessionID, + statement_types: JSON.stringify(fp.statement_types), + categories: JSON.stringify(fp.categories), + table_count: fp.table_count, + function_count: fp.function_count, + has_subqueries: fp.has_subqueries, + has_aggregation: fp.has_aggregation, + has_window_functions: fp.has_window_functions, + node_count: fp.node_count, + }) + } + } catch { + // Fingerprinting must never break query execution + } + // altimate_change end + + const limits = await bridge.promise(truncate.limits()) + const suggestion = ctx.agent === "analyst" ? null : PostConnectSuggestions.getProgressiveSuggestion("sql_execute") + const extra = + (suggestion ? "\n\n" + suggestion : "") + (precedence.notice ? precedence.notice + "\n\n" : "") + const formatted = await formatSqlResult(result, { + limit: args.limit, + // The statement text lets the formatter add the empty/near-empty + // result hint when a string-literal filter is present. + sql: ctx.agent === "analyst" ? undefined : query, + maxBytes: Math.max( + 0, + Math.min(SQL_MAX_PREVIEW_BYTES, limits.maxBytes) - Buffer.byteLength(extra, "utf8"), + ), + maxLines: Math.max(0, limits.maxLines - extra.split("\n").length + 1), + write: (text) => bridge.promise(truncate.write(text)), + }) + const lint = await lintSqlResult(sql, args.warehouse, ctx.sessionID) + let output = formatted.output + (lint ? "\n\n" + lint.output : "") + // altimate_change start — progressive disclosure suggestions + if (suggestion) { + output += "\n\n" + suggestion + PostConnectSuggestions.trackSuggestions({ + suggestionType: "progressive_disclosure", + suggestionsShown: ["sql_analyze"], + warehouseType: args.warehouse ?? "default", + }) + } + // altimate_change end + // altimate_change — carries the fail-open notice when the target could not be + // attributed to the workspace; a no-op otherwise. + const response = Precedence.annotate(precedence, { + title: queryFrom ? "SQL: generated read" : `SQL: ${sql.slice(0, 60)}${sql.length > 60 ? "..." : ""}`, + metadata: { ...formatted.metadata, ...(lint && { lint_rules: lint.rules }) }, + output, + }) + if (precedence.notice && formatted.metadata.truncated) { + // Keep the result contract first while retaining the routing notice. + const newline = output.indexOf("\n") + response.output = output.slice(0, newline + 1) + precedence.notice + "\n\n" + output.slice(newline + 1) + } + return response + } catch (e) { + const msg = e instanceof Error ? e.message : String(e) + // altimate_change: deliberately NOT fingerprinted, same reasoning as the + // result-error branch above — this catch only fires when `Dispatcher.call` + // itself throws, which never happened after a warehouse actually ran the query. + // altimate_change — annotate the failure too. A fail-open notice that only rides + // on success is worse than none: the reason vanishes exactly when the call went + // wrong, and the `precedence` marker under-counts fail-open in precisely the + // cases most likely to fail. + return Precedence.annotate(precedence, { + title: "SQL: ERROR", + metadata: { rowCount: 0, truncated: false, error: msg }, + output: `Failed to execute SQL: ${msg}`, + }) + } + }, + } satisfies LegacyToolDef) + }) + }), +) + // altimate_change start — pre-execution SQL validation via cached schema const CACHE_TTL_MS = 24 * 60 * 60 * 1000 // 24 hours // High ceiling so large warehouses aren't arbitrarily truncated; we emit @@ -341,15 +567,3 @@ function trackPreValidation( }) } // altimate_change end - -function formatResult(result: SqlExecuteResult): string { - if (result.row_count === 0) return "(0 rows)" - - const header = result.columns.join(" | ") - const separator = result.columns.map((c) => "-".repeat(Math.max(c.length, 4))).join("-+-") - const rows = result.rows.map((r) => r.map((v) => (v === null ? "NULL" : String(v))).join(" | ")).join("\n") - - let output = `${header}\n${separator}\n${rows}\n\n(${result.row_count} rows)` - if (result.truncated) output += " [truncated]" - return output -} diff --git a/packages/opencode/src/altimate/tools/sql-explain.ts b/packages/opencode/src/altimate/tools/sql-explain.ts index 886d824626..77fdbbf221 100644 --- a/packages/opencode/src/altimate/tools/sql-explain.ts +++ b/packages/opencode/src/altimate/tools/sql-explain.ts @@ -6,6 +6,8 @@ import type { SqlExplainResult } from "../native/types" import * as Precedence from "../workspace/precedence" // altimate_change end import { validateWarehouseName } from "./input-validation" +import * as Registry from "../native/connections/registry" +import { classifyAndCheck, isSingleQuery } from "./sql-classify" /** * Detect SQL input that cannot be meaningfully EXPLAIN'd. @@ -88,6 +90,21 @@ export const SqlExplainTool = Tool.define("sql_explain", { output: `Invalid input: ${sqlError}`, } } + // EXPLAIN ANALYZE executes the statement. Only a single read-only query may be analyzed, + // so a plan request can never perform a write on engines without a read-only transaction. + if (args.analyze) { + const dialect = Registry.canonicalType(args.warehouse ? Registry.getConfig(args.warehouse)?.type : undefined) ?? undefined + const { queryType, blocked } = classifyAndCheck(args.sql, dialect) + if (blocked || queryType !== "read" || !isSingleQuery(args.sql, dialect)) { + const error = + "EXPLAIN ANALYZE executes the statement, so only a single read-only query can be analyzed. Use analyze: false for a plan of this statement." + return { + title: "Explain: INVALID INPUT", + metadata: { success: false, analyzed: false, warehouse_type: "unknown", error, error_class: "input_validation" }, + output: `Invalid input: ${error}`, + } + } + } const warehouseError = validateWarehouseName(args.warehouse) if (warehouseError) { return { @@ -117,7 +134,7 @@ export const SqlExplainTool = Tool.define("sql_explain", { sql: args.sql, warehouse: args.warehouse, analyze: args.analyze, - }) + }, { signal: ctx.abort, sessionID: ctx.sessionID }) if (!result.success) { const error = result.error ?? "Unknown error" diff --git a/packages/opencode/src/altimate/tools/sql-materialize.ts b/packages/opencode/src/altimate/tools/sql-materialize.ts new file mode 100644 index 0000000000..de4d2c9605 --- /dev/null +++ b/packages/opencode/src/altimate/tools/sql-materialize.ts @@ -0,0 +1,555 @@ +import z from "zod" +import * as fs from "node:fs/promises" +import * as path from "node:path" +import { normalizeMqlCommand, type Connector } from "@altimateai/drivers" +import { isResultByteLimitError, rowBytes } from "@altimateai/drivers/result-byte-limit" +import { Tool } from "../../tool/tool" +import * as Registry from "../native/connections/registry" +import { SCRATCH_NAME, withScratchConnection, isScratch } from "../native/connections/scratch" +import { classifyAndCheck, classifyMongoCommand } from "./sql-classify" +import { readSql } from "./sql-check" +import { lintSqlResult } from "./sql-result-lint" +import * as Precedence from "../workspace/precedence" +import { executeQuery, type QueryContext } from "../native/query-execution" + +/** Default and hard ceilings, see the tool description. */ +export const DEFAULT_MAX_ROWS = 2_000_000 +export const HARD_MAX_ROWS = 20_000_000 +/** Serialized row data, enforced while drivers consume rows (plus one row/client chunk in flight). */ +export const DEFAULT_MAX_BYTES = 256 * 1024 * 1024 +export const HARD_MAX_BYTES = 2 * 1024 * 1024 * 1024 +/** Process-wide cap on bytes buffered by overlapping remote reads; a larger single read runs alone. */ +export const BUFFER_BUDGET_BYTES = 512 * 1024 * 1024 + +let reservedBytes = 0 +const budgetWaiters: Array<() => void> = [] + +async function withBufferBudget(bytes: number, work: () => Promise): Promise { + while (reservedBytes > 0 && reservedBytes + bytes > BUFFER_BUDGET_BYTES) { + await new Promise((resolve) => budgetWaiters.push(resolve)) + } + reservedBytes += bytes + try { + return await work() + } finally { + reservedBytes -= bytes + for (const wake of budgetWaiters.splice(0)) wake() + } +} +const JSONL_BUFFER_CHARS = 1_000_000 + +const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]{0,62}$/ +const MONGO_TYPES = new Set(["mongodb", "mongo"]) +const MONGO_READ_COMMANDS = new Set(["find", "aggregate", "countDocuments"]) + +export type ScratchType = "BOOLEAN" | "BIGINT" | "HUGEINT" | "DOUBLE" | "TIMESTAMP" | "BLOB" | "VARCHAR" + +const INT64_MIN = -(2n ** 63n) +const INT64_MAX = 2n ** 63n - 1n +const INT128_MIN = -(2n ** 127n) +const INT128_MAX = 2n ** 127n - 1n + +function kindOf(v: unknown): ScratchType | "JSON" | null { + if (v === null || v === undefined) return null + switch (typeof v) { + case "boolean": + return "BOOLEAN" + case "bigint": + if (v >= INT64_MIN && v <= INT64_MAX) return "BIGINT" + return v >= INT128_MIN && v <= INT128_MAX ? "HUGEINT" : "VARCHAR" + case "number": + return Number.isSafeInteger(v) ? "BIGINT" : "DOUBLE" + case "string": + return "VARCHAR" + case "object": + if (v instanceof Date) return Number.isNaN(v.getTime()) ? null : "TIMESTAMP" + if (v instanceof Uint8Array) return "BLOB" + return "JSON" + default: + return "VARCHAR" + } +} + +function widen(a: ScratchType | null, b: ScratchType): ScratchType { + if (a === null || a === b) return b + const numeric = new Set(["BIGINT", "HUGEINT", "DOUBLE"]) + if (numeric.has(a) && numeric.has(b)) { + if (a === "DOUBLE" || b === "DOUBLE") return "DOUBLE" + return "HUGEINT" + } + return "VARCHAR" +} + +const jsonText = (v: unknown): string => + JSON.stringify(v, (_k, x) => + typeof x === "bigint" ? x.toString() : x instanceof Uint8Array ? Buffer.from(x).toString("hex") : x, + ) ?? String(v) + +function quoteString(s: string): string { + if (s.includes("\0")) throw new MaterializeError("NUL characters require a bound parameter, not a SQL literal.") + return `'${s.replace(/'/g, "''")}'` +} + +function textValue(v: unknown): string { + if (typeof v === "string") return v + if (v instanceof Date) return Number.isNaN(v.getTime()) ? "" : v.toISOString() + if (typeof v === "object") return jsonText(v) + return String(v) +} + +export function quoteIdent(name: string): string { + return `"${name.replace(/"/g, '""')}"` +} + +/** Values arrive unpacked from the local-engine codec; preserve them in typed JSON columns. */ +function jsonValue(v: unknown, type: ScratchType): unknown { + if (v === null || v === undefined) return null + if (type === "VARCHAR") return textValue(v) + if (type === "TIMESTAMP") return v instanceof Date && !Number.isNaN(v.getTime()) ? v.toISOString() : null + if (type === "BLOB") return Buffer.from(v as Uint8Array).toString("hex") + if (typeof v === "bigint" || (typeof v === "number" && !Number.isFinite(v))) return String(v) + return v +} + +async function writeJsonRows(file: string, rows: unknown[][], types: ScratchType[]): Promise { + const handle = await fs.open(file, "wx", 0o600) + // Positional field names avoid JSON key collisions and preserve arbitrary SQL column names. + const keys = types.map((_, i) => `c${i}`) + const record: Record = {} + let lines: string[] = [] + let chars = 0 + let maxObjectSize = 16 * 1024 * 1024 + try { + for (const row of rows) { + for (let c = 0; c < types.length; c++) record[keys[c]] = jsonValue(row[c], types[c]) + const line = JSON.stringify(record) + "\n" + maxObjectSize = Math.max(maxObjectSize, Buffer.byteLength(line, "utf8")) + lines.push(line) + chars += line.length + if (chars < JSONL_BUFFER_CHARS) continue + await handle.writeFile(lines.join("")) + lines = [] + chars = 0 + } + if (lines.length) await handle.writeFile(lines.join("")) + return maxObjectSize + } finally { + await handle.close() + } +} + +function sizeLabel(bytes: number): string { + if (bytes < 1024) return `${Math.ceil(bytes)} bytes` + if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(2)} KiB` + return bytes >= 1024 ** 3 ? `${(bytes / 1024 ** 3).toFixed(1)} GiB` : `${(bytes / 1024 ** 2).toFixed(2)} MiB` +} + +function uniqueColumnNames(raw: string[]): string[] { + const seen = new Set() + return raw.map((name, i) => { + let base = name && name.trim() ? name : `column_${i + 1}` + let candidate = base + let n = 2 + while (seen.has(candidate.toLowerCase())) candidate = `${base}_${n++}` + seen.add(candidate.toLowerCase()) + return candidate + }) +} + +export class MaterializeError extends Error {} + +export interface MaterializeInput { + source_warehouse: string + sql: string + target_table: string + mode?: "create" | "replace" | "append" + max_rows?: number + max_bytes?: number + query_timeout_ms?: number +} + +export interface MaterializeResult { + table: string + mode: "create" | "replace" | "append" + rows: number + /** Total rows in the table after the operation (differs from `rows` on append). */ + total_rows: number + columns: { name: string; type: string }[] + materialized: boolean + warnings?: string[] +} + +/** Refuse anything but a read on the source; returns the mongo flag. */ +function assertReadOnlySource(warehouse: string, sql: string): { mongo: boolean; sql: string } { + const type = (Registry.getConfig(warehouse)?.type ?? "").toLowerCase() + if (MONGO_TYPES.has(type)) { + let cmd: any + try { + cmd = JSON.parse(sql) + } catch { + throw new MaterializeError( + 'A MongoDB source query must be a JSON command, e.g. {"command":"find","collection":"c"}.', + ) + } + // Normalize supported command shapes before applying the read allowlist. + cmd = cmd && typeof cmd === "object" ? normalizeMqlCommand(cmd) : cmd + if (!cmd || typeof cmd.command !== "string" || !cmd.command.trim()) { + throw new MaterializeError( + 'A MongoDB source query must be a JSON command, e.g. {"command":"find","collection":"c"}.', + ) + } + if (!MONGO_READ_COMMANDS.has(cmd.command)) { + throw new MaterializeError( + `sql_materialize only reads from the source. MongoDB command "${cmd?.command}" is not allowed; use one of: ${[...MONGO_READ_COMMANDS].join(", ")}.`, + ) + } + if (classifyMongoCommand(JSON.stringify(cmd))?.queryType !== "read") { + throw new MaterializeError( + "sql_materialize only reads from the source; MongoDB write pipeline stages are not allowed.", + ) + } + return { mongo: true, sql: JSON.stringify(cmd) } + } + const { queryType, blocked } = classifyAndCheck(sql, Registry.canonicalType(type) ?? undefined) + try { + if (blocked || queryType !== "read") throw new Error("Not a read") + return { mongo: false, sql: readSql(sql, Registry.canonicalType(type) ?? undefined) } + } catch { + throw new MaterializeError( + "sql_materialize only reads from the source warehouse: use a single read-only SELECT (or WITH ... SELECT), " + + "without modifying CTEs, SELECT INTO or side-effect functions. Its only write target is the scratch database.", + ) + } +} + +/** Bound the result even when the source SQL already contains a LIMIT in a subquery or comment. */ +function boundedSql(sql: string, type: string | null, limit: number): string { + if (type === "sqlserver") return `SELECT TOP (${limit}) * FROM (\n${sql}\n) AS __sql_materialize_source` + if (type === "oracle") return `SELECT * FROM (\n${sql}\n) WHERE ROWNUM <= ${limit}` + return `SELECT * FROM (\n${sql}\n) AS __sql_materialize_source LIMIT ${limit}` +} + +function boundedMongo(sql: string, limit: number): string { + const cmd = JSON.parse(sql) + if (cmd.command !== "aggregate" || !Array.isArray(cmd.pipeline)) return sql + // An earlier $limit does not bound later expanding stages such as $unwind. + return JSON.stringify({ ...cmd, pipeline: [...cmd.pipeline, { $limit: limit }] }) +} + +async function executeSource(source: Connector, input: MaterializeInput, sql: string, limit: number, maxBytes: number, context?: QueryContext) { + const config = Registry.getConfig(input.source_warehouse) + const type = Registry.canonicalType(config?.type) + const options = { + queryTimeoutMs: input.query_timeout_ms, + maxResultBytes: maxBytes, + ...(type === "postgres" ? { readOnly: true } : {}), + } + return executeQuery(config, options, context, (bounded) => source.execute(sql, limit, undefined, bounded)) +} + +export function materialize(input: MaterializeInput, context?: QueryContext): Promise { + return executeQuery(Registry.getConfig(input.source_warehouse), { queryTimeoutMs: input.query_timeout_ms }, context, + (options) => materializeWithinDeadline(input, { ...context, signal: options.signal })) +} + +async function materializeWithinDeadline(input: MaterializeInput, context: QueryContext): Promise { + context?.signal?.throwIfAborted() + const mode = input.mode ?? "create" + const table = input.target_table + if (typeof table !== "string" || !IDENTIFIER.test(table)) { + throw new MaterializeError( + `Invalid target_table "${table}": use letters, digits and underscores only, starting with a letter or underscore (max 63 characters). The table is created in the "${SCRATCH_NAME}" database; do not include a schema or database prefix.`, + ) + } + // Strict-schema callers send 0 for "not specified"; a zero cap would refuse every result. + const maxRows = Math.min(Math.max(Math.floor(input.max_rows || DEFAULT_MAX_ROWS), 1), HARD_MAX_ROWS) + const requestedBytes = input.max_bytes || Number(process.env["ALTIMATE_SCRATCH_MAX_BYTES"] || DEFAULT_MAX_BYTES) + const maxBytes = Math.min( + Math.max(Math.floor(Number.isFinite(requestedBytes) ? requestedBytes : DEFAULT_MAX_BYTES), 1), + HARD_MAX_BYTES, + ) + + const { mongo, sql } = assertReadOnlySource(input.source_warehouse, input.sql) + // Keep structural guards on all sources. PostgreSQL additionally executes each + // source read in a pinned READ ONLY transaction and rolls it back, so writing + // UDFs fail at the database boundary and pg_notify cannot deliver notifications. + // Resolve first so a configured warehouse using the reserved name fails explicitly. + const source = await Registry.get(input.source_warehouse) + context.signal?.throwIfAborted() + if (!source.supportsResultByteLimit) { + throw new MaterializeError( + `Warehouse "${input.source_warehouse}" does not support bounded result transfer. ` + + "sql_materialize requires a SQLite, DuckDB, PostgreSQL or MongoDB source that enforces max_bytes while reading rows.", + ) + } + await Registry.get(SCRATCH_NAME) + const type = Registry.canonicalType(Registry.getConfig(input.source_warehouse)?.type) + const query = mongo ? boundedMongo(sql, maxRows + 1) : boundedSql(sql, type, maxRows + 1) + const prepare = async (reader: Connector) => { + const result = await executeSource(reader, input, query, maxRows + 1, maxBytes, context).catch((e) => { + if (isResultByteLimitError(e)) { + throw new MaterializeError( + `The source result is above the ${sizeLabel(maxBytes)} bound; transfer stopped and nothing was materialized. ` + + "Select fewer columns, filter/aggregate in the source query, or raise max_bytes (hard limit 2 GiB).", + ) + } + throw e + }) + if (result.rows.length > maxRows || result.truncated) { + throw new MaterializeError( + `The source query returned more than the row cap of ${maxRows.toLocaleString("en-US")} rows; nothing was materialized. ` + + "Aggregate or filter in the source query, or raise max_rows (hard limit " + + `${HARD_MAX_ROWS.toLocaleString("en-US")}).`, + ) + } + + const names = uniqueColumnNames(result.columns) + let bytes = 0 + for (const row of result.rows) { + bytes += rowBytes(row) + if (bytes > maxBytes) { + throw new MaterializeError( + `The source result is about ${sizeLabel(bytes)}, above the ${sizeLabel(maxBytes)} bound; nothing was materialized. ` + + "Select fewer columns, filter/aggregate in the source query, or raise max_bytes (hard limit 2 GiB).", + ) + } + } + + // Type inference (the drivers expose no column metadata, only names, so the type comes from the values: + // integers stay BIGINT, any fractional value widens to DOUBLE, mixed kinds fall back to VARCHAR, an + // all-NULL column is VARCHAR). + const types: ScratchType[] = [] + for (let c = 0; c < names.length; c++) { + let t: ScratchType | null = null + for (const row of result.rows) { + const v = row[c] + if (t !== "VARCHAR") { + const k = kindOf(v) + if (k !== null) t = widen(t, k === "JSON" ? "VARCHAR" : k) + } + } + types.push(t ?? "VARCHAR") + } + return { result, names, types } + } + + // Remote sources are read and buffered before taking the destination's transaction lock. A scratch + // source is read inside the lock so a derivation sees and replaces consistent state. + // The buffer reservation spans the destination write too: the buffered rows stay live until then. + const writeToScratch = async (prepared?: Awaited>) => { + const warnings: string[] = [] + return withScratchConnection(async (scratch, directory) => { + const { result, names, types } = prepared ?? (await prepare(scratch)) + const run = (sql: string) => executeQuery( + Registry.getConfig(SCRATCH_NAME), + { noLimit: true, queryTimeoutMs: input.query_timeout_ms }, + context, + (options) => scratch.execute(sql, undefined, undefined, options), + ) + const scratchRows = async (sql: string) => (await run(sql)).rows + const q = quoteIdent(table) + const existing = await scratchRows( + `SELECT column_name, data_type FROM information_schema.columns WHERE table_catalog = '${SCRATCH_NAME}' AND table_schema = 'main' AND table_name = ${quoteString(table)} ORDER BY ordinal_position`, + ) + const exists = existing.length > 0 + + if (mode === "create" && exists) { + throw new MaterializeError( + `${SCRATCH_NAME}.${table} already exists. Use mode "replace" to overwrite it or "append" to add rows.`, + ) + } + + if (names.length === 0) { + let total = 0 + if (mode === "replace") { + await run(`DROP TABLE IF EXISTS ${q}`) + warnings.push(`replaced with an empty result: ${SCRATCH_NAME}.${table} was dropped`) + } else if (mode === "append" && exists) { + total = Number((await scratchRows(`SELECT count(*) FROM ${q}`))[0]?.[0] ?? 0) + } + return { table, mode, rows: 0, total_rows: total, columns: [], materialized: false, warnings } + } + + let insertNames = names + let finalColumns = names.map((n, i) => ({ name: n, type: types[i] as string })) + if (mode === "append" && exists) { + const have = new Map( + existing.map((r) => [String(r[0]).toLowerCase(), { name: String(r[0]), type: String(r[1]) }]), + ) + const missing = names.filter((n) => !have.has(n.toLowerCase())) + if (missing.length) { + throw new MaterializeError( + `Cannot append to ${SCRATCH_NAME}.${table}: it has no column(s) ${missing.join(", ")}. Existing columns: ${[...have.values()].map((c) => c.name).join(", ")}.`, + ) + } + insertNames = names.map((n) => have.get(n.toLowerCase())!.name) + finalColumns = existing.map((r) => ({ name: String(r[0]), type: String(r[1]) })) + } + + let began = false + let loadDir: string | undefined + try { + let select: string | undefined + if (result.rows.length) { + loadDir = await fs.mkdtemp(path.join(directory, "materialize-")) + if (process.platform !== "win32") await fs.chmod(loadDir, 0o700) + const file = path.join(loadDir, "rows.jsonl") + const maxObjectSize = await writeJsonRows(file, result.rows, types) + const columns = types.map((t, c) => `'c${c}': '${t === "BLOB" ? "VARCHAR" : t}'`).join(", ") + const values = types.map((t, c) => (t === "BLOB" ? `from_hex(c${c})` : `c${c}`)).join(", ") + select = `SELECT ${values} FROM read_json(${quoteString(file)}, format = 'newline_delimited', columns = {${columns}}, maximum_object_size = ${maxObjectSize})` + } + await run("BEGIN TRANSACTION") + began = true + if (!(mode === "append" && exists)) { + const defs = names.map((n, i) => `${quoteIdent(n)} ${types[i]}`).join(", ") + await run(`CREATE ${mode === "replace" ? "OR REPLACE " : ""}TABLE ${q} (${defs})`) + } + const colList = insertNames.map(quoteIdent).join(", ") + if (select) await run(`INSERT INTO ${q} (${colList}) ${select}`) + await run("COMMIT") + began = false + } catch (e) { + try { + // Cleanup must still run if cancellation arrived between scratch statements. + if (began) await scratch.execute("ROLLBACK", undefined, undefined, { noLimit: true, queryTimeoutMs: 1000 }) + } catch { + // the transaction may already be gone + } + const message = e instanceof Error ? e.message : String(e) + const detail = loadDir + ? message.replaceAll(loadDir.replaceAll("'", "''"), "[materialize]").replaceAll(loadDir, "[materialize]") + : message + throw new MaterializeError( + `Failed to write ${SCRATCH_NAME}.${table}: ${detail}${mode === "append" ? " (the append was rolled back)" : ""}`, + ) + } finally { + if (loadDir) await fs.rm(loadDir, { recursive: true, force: true }).catch(() => {}) + } + + const total = Number((await scratchRows(`SELECT count(*) FROM ${q}`))[0]?.[0] ?? result.rows.length) + return { + table, + mode, + rows: result.rows.length, + total_rows: total, + columns: finalColumns, + materialized: true, + warnings, + } + }) + } + if (isScratch(input.source_warehouse)) return writeToScratch() + return withBufferBudget(maxBytes, async () => writeToScratch(await prepare(source))) +} + +export const SqlMaterializeTool = Tool.define("sql_materialize", { + description: + "Run a read-only query on a SQLite, DuckDB, PostgreSQL or MongoDB warehouse and store ALL resulting rows as a table in `scratch`, a session-scoped ephemeral DuckDB database, " + + "so data from different engines (e.g. a SQLite file and Postgres) can be joined in one SQL statement without copying rows through the conversation. " + + 'Then query it with sql_execute(warehouse: "scratch", ...). The only write target is scratch. ' + + "Source queries are validated as reads and executed as a derived table. Modifying CTEs, SELECT INTO and known side-effect functions are refused; PostgreSQL also uses rolled-back read-only transactions. " + + "Other source drivers are refused until they support byte-bounded transfer. " + + `Caps default to ${DEFAULT_MAX_ROWS.toLocaleString("en-US")} rows / 256 MiB serialized row data, enforced during transfer (one row/client chunk may be in flight). \`source_warehouse\` may be \`scratch\` itself to derive a table. ` + + "For MongoDB sources pass a JSON find/aggregate command as `sql`.", + parameters: z.object({ + source_warehouse: z.string().describe("Warehouse to read from (a name from warehouse_list, or `scratch`)"), + sql: z.string().describe("Read-only SELECT to run on the source warehouse; every row it returns is stored"), + target_table: z + .string() + .describe("Table to create in scratch: letters, digits, underscores; no schema or database prefix"), + mode: z + .enum(["create", "replace", "append"]) + .optional() + .default("create") + .describe( + "create: fail if the table exists (default); replace: overwrite it; append: add rows to it (created if missing)", + ), + max_rows: z.number().optional().describe(`Row cap (default ${DEFAULT_MAX_ROWS}, hard limit ${HARD_MAX_ROWS})`), + max_bytes: z + .number() + .int() + .min(0) + .optional() + .describe("Serialized row byte cap enforced during transfer (default 256 MiB, hard limit 2 GiB; 0 = default)"), + query_timeout_ms: z + .number() + .int() + .min(1) + .max(3_600_000) + .optional() + .describe("Source query deadline in ms; omitted or 0 uses the configured default, bounded by the remaining run budget"), + }), + async execute(args, ctx): Promise<{ title: string; metadata: Record; output: string }> { + // altimate_change start — validate and authorize source reads before workspace redirects + try { + assertReadOnlySource(args.source_warehouse, args.sql) + } catch (e) { + // A refused statement is a tool result, not a thrown error, whether or not the warehouse is shadowed. + const msg = e instanceof Error ? e.message : String(e) + return { + title: "Materialize: ERROR", + metadata: { rowCount: 0, materialized: false, error: msg }, + output: `Failed to materialize: ${msg}`, + } + } + await ctx.ask({ + permission: "sql_execute", + patterns: [args.sql], + always: ["*"], + metadata: { warehouse: args.source_warehouse }, + }) + const verdict = await Precedence.check(ctx.sessionID, "sql_execute", args.source_warehouse) + if (verdict.redirect) return verdict.redirect + // altimate_change end + try { + const r = await materialize(args, { signal: ctx.abort, sessionID: ctx.sessionID }) + const lint = await lintSqlResult(args.sql, args.source_warehouse, ctx.sessionID) + const checks = lint ? "\n\n" + lint.output : "" + const lintMetadata = lint ? { lint_rules: lint.rules } : {} + const label = `${SCRATCH_NAME}.${r.table}` + const warning = r.warnings?.length ? `Warning: ${r.warnings.join("\n")}\n` : "" + if (!r.materialized) { + return Precedence.annotate(verdict, { + title: `Materialize ${label}: 0 rows`, + metadata: { rowCount: 0, totalRows: r.total_rows, table: r.table, materialized: false, ...lintMetadata }, + output: + warning + + (r.mode === "replace" + ? "The source query returned 0 rows and no column information; no replacement table was created.\n" + : `The source query returned 0 rows and no column information, so ${label} was not created or changed.\n`) + + "Check the filter, or run the query with sql_execute to see why it is empty." + + checks, + }) + } + const cols = r.columns.map((c) => `${c.name} ${c.type}`).join(", ") + const rowsLine = r.mode === "append" ? `${r.rows} rows appended (${r.total_rows} total)` : `${r.rows} rows` + return Precedence.annotate(verdict, { + title: `Materialize ${label}: ${r.rows} rows`, + metadata: { + rowCount: r.rows, + totalRows: r.total_rows, + table: r.table, + materialized: true, + mode: r.mode, + ...lintMetadata, + }, + output: + warning + + `${label}: ${rowsLine}, ${r.columns.length} columns (${r.mode === "append" ? "append" : r.mode}).\n` + + `Columns: ${cols}\n` + + `Source: ${isScratch(args.source_warehouse) ? SCRATCH_NAME : args.source_warehouse}. SQL run:\n${args.sql}\n\n` + + `Join it in scratch with sql_execute(warehouse: "${SCRATCH_NAME}", query: "SELECT ... FROM ${r.table} ...") ` + + `(the table is also addressable as ${label}).` + + checks, + }) + } catch (e) { + const msg = e instanceof Error ? e.message : String(e) + return Precedence.annotate(verdict, { + title: "Materialize: ERROR", + metadata: { rowCount: 0, materialized: false, error: msg }, + output: `Failed to materialize: ${msg}`, + }) + } + }, +}) diff --git a/packages/opencode/src/altimate/tools/sql-result-format.ts b/packages/opencode/src/altimate/tools/sql-result-format.ts new file mode 100644 index 0000000000..6197e084a5 --- /dev/null +++ b/packages/opencode/src/altimate/tools/sql-result-format.ts @@ -0,0 +1,374 @@ +import type { SqlExecuteResult } from "../native/types" + +export const SQL_MAX_PREVIEW_ROWS = 50 +export const SQL_MAX_PREVIEW_COLUMNS = 60 +export const SQL_MAX_PREVIEW_BYTES = 16 * 1024 +export const SQL_MAX_SPILL_BYTES = 32 * 1024 * 1024 + +interface FormatOptions { + limit: number + maxBytes?: number + maxLines?: number + /** The executed statement; enables the empty-result hint. */ + sql?: string + write: (text: string) => Promise +} + +function lineCount(text: string): number { + let lines = 1 + for (let i = 0; i < text.length; i++) if (text.charCodeAt(i) === 10) lines++ + return lines +} + +function clipText(text: string, maxBytes: number, maxLines: number, marker: string): string | undefined { + if (Buffer.byteLength(text, "utf8") <= maxBytes && lineCount(text) <= maxLines) return text + let bytes = Buffer.byteLength(marker, "utf8") + if (bytes > maxBytes || maxLines < 1) return + let end = 0 + let lines = 1 + // Walk code points, so a clipped prefix never splits a UTF-8 sequence or surrogate pair. + for (const char of text) { + const size = Buffer.byteLength(char, "utf8") + if (bytes + size > maxBytes || (char === "\n" && lines >= maxLines)) break + bytes += size + if (char === "\n") lines++ + end += char.length + } + return text.slice(0, end) + marker +} + +function clipCell(text: string, maxBytes: number, maxLines: number): string | undefined { + if (Buffer.byteLength(text, "utf8") <= maxBytes && lineCount(text) <= maxLines) return text + let chars = 0 + for (const _ of text) chars++ + return clipText(text, maxBytes, maxLines, `…[cell clipped, ${chars} chars]`) +} + +function previewSchema(columns: string[], maxBytes: number, maxLines: number) { + const rendered = columns + .slice(0, SQL_MAX_PREVIEW_COLUMNS) + .map((name) => (/[\n\r]| \| /.test(name) ? JSON.stringify(name) : name)) + for (let count = Math.min(columns.length, SQL_MAX_PREVIEW_COLUMNS); count > 0; count--) { + const omitted = count < columns.length ? `(+${columns.length - count} more columns, see spill)\n` : "" + // Both the aliases and their separator consume space, along with delimiters/newlines. + const available = maxBytes - Buffer.byteLength(omitted, "utf8") - 2 - (count - 1) * 6 + const aliasBytes = Math.min(128, Math.floor(available / (2 * count))) + if (aliasBytes < 4) continue + const aliases = rendered.slice(0, count).map((name) => clipText(name, aliasBytes, 1, "…[alias clipped]")) + if (aliases.some((name) => name === undefined)) continue + const names = aliases as string[] + const text = + names.join(" | ") + "\n" + names.map((name) => "-".repeat(Math.max(name.length, 4))).join("-+-") + "\n" + omitted + if (Buffer.byteLength(text, "utf8") > maxBytes || lineCount(text) > maxLines) continue + return { text, columns: count, clipped: count < columns.length || names.some((name, i) => name !== rendered[i]) } + } + return { text: "", columns: 0, clipped: columns.length > 0 } +} + +function displayObject(value: object, ancestors: Set): { text: string; clipped: boolean } { + let clipped = false + const path: object[] = [] + let json: string + try { + json = + JSON.stringify(value, function (_key, item: unknown) { + if (item && typeof item === "object") { + // JSON visits siblings after their children; retain only the current path. + while (path.length && path[path.length - 1] !== this) ancestors.delete(path.pop()) + if (ancestors.has(item) || ancestors.size >= 100) { + clipped = true + return "…[nested cell clipped]" + } + ancestors.add(item) + path.push(item) + } + return typeof item === "bigint" ? item.toString() : item + }) ?? "undefined" + } catch { + // A throwing toJSON or getter must not abort the whole preview. + json = "…[cell not serializable]" + clipped = true + } finally { + for (const item of path) ancestors.delete(item) + } + const text = clipCell(json, SQL_MAX_PREVIEW_BYTES, Infinity)! + return { text, clipped: clipped || text !== json } +} + +function displayCell(value: unknown, ancestors = new Set()): { text: string; clipped: boolean } { + // Only encode a bounded binary prefix before the preview applies its byte cap. + if (value instanceof Uint8Array) { + const clipped = value.byteLength > SQL_MAX_PREVIEW_BYTES + const text = "base64:" + Buffer.from(value.subarray(0, SQL_MAX_PREVIEW_BYTES)).toString("base64") + return { text: clipped ? text + `…[cell clipped, ${value.byteLength} bytes]` : text, clipped } + } + if (Array.isArray(value)) { + if (ancestors.has(value)) return { text: "", clipped: false } // Array.toString omits cycles. + if (ancestors.size >= 100) return { text: "…[nested cell clipped]", clipped: true } + // An empty array is rendered explicitly so it differs from an empty string. + if (value.length === 0) return { text: "[]", clipped: false } + ancestors.add(value) + let text = "" + let bytes = 0 + for (let i = 0; i < value.length; i++) { + // A null element keeps a marker; with quoted empty strings and `[]`, `[NULL]`, `['']` and `[[]]` stay distinct. + const item = value[i] == null ? { text: "NULL", clipped: false } : displayCell(value[i], ancestors) + const delimiter = i ? "," : "" + const size = Buffer.byteLength(item.text, "utf8") + delimiter.length + if (item.clipped || bytes + size > SQL_MAX_PREVIEW_BYTES) { + const marker = `…[array clipped, ${value.length} items]` + const prefix = + clipCell(item.text, SQL_MAX_PREVIEW_BYTES - bytes - delimiter.length - Buffer.byteLength(marker), Infinity) ?? + "" + ancestors.delete(value) + return { text: text + delimiter + prefix + marker, clipped: true } + } + text += delimiter + item.text + bytes += size + } + ancestors.delete(value) + return { text, clipped: false } + } + if (typeof value === "string") { + const quote = + value === "NULL" || + value === "[]" || + /[\n\r]| \| /.test(value) || + (ancestors.size > 0 && (value === "" || value.includes(","))) + return { text: quote ? JSON.stringify(value) : value, clipped: false } + } + if (value && typeof value === "object") { + const prototype = Object.getPrototypeOf(value) + if (prototype === Object.prototype || prototype === null) return displayObject(value, ancestors) + } + // Date's default string form drops milliseconds and the zone; ISO 8601 is lossless and matches the spill's `$date`. + if (value instanceof Date) return { text: Number.isNaN(value.getTime()) ? "Invalid Date" : value.toISOString(), clipped: false } + return { text: value === null ? "NULL" : String(value), clipped: false } +} + +function previewRows(rows: unknown[][], maxBytes: number, maxLines: number, columns: number) { + if (!columns) return { body: "", rows: 0, clipped: rows.length > 0 } + const shown: string[] = [] + let bytes = 0 + let lines = 0 + let clipped = false + for (const row of rows.slice(0, SQL_MAX_PREVIEW_ROWS)) { + const values = row.slice(0, columns).map((v) => { + const cell = displayCell(v) + clipped ||= cell.clipped + return cell.text + }) + const remainingBytes = maxBytes - bytes - (shown.length ? 1 : 0) + const remainingLines = maxLines - lines + const rowBytes = + values.reduce((sum, v) => sum + Buffer.byteLength(v, "utf8"), 0) + Math.max(0, values.length - 1) * 3 + const rowLines = values.reduce((sum, v) => sum + lineCount(v) - 1, 1) + if (rowBytes <= remainingBytes && rowLines <= remainingLines) { + shown.push(values.join(" | ")) + bytes += rowBytes + (shown.length > 1 ? 1 : 0) + lines += rowLines + continue + } + + // Preserve the first rows, with a visible partial cell when a row itself is oversized. + const cells: string[] = [] + let cellBytes = remainingBytes - Math.max(0, values.length - 1) * 3 + let cellLines = remainingLines + for (const value of values) { + const cell = clipCell(value, Math.floor(cellBytes / (values.length - cells.length)), cellLines) + if (cell === undefined) break + cells.push(cell) + cellBytes -= Buffer.byteLength(cell, "utf8") + cellLines -= lineCount(cell) - 1 + } + if (cells.length === values.length && remainingLines > 0) shown.push(cells.join(" | ")) + clipped = true + break + } + return { body: shown.join("\n"), rows: shown.length, clipped: clipped || shown.length < rows.length } +} + +// Preflight before encoding/stringifying, bounding nested values and binary expansion +// without materializing them. The binary estimate is deliberately conservative. +function checkSpillSize(value: unknown, budget: { left: number }, ancestors = new Set()) { + if (typeof value === "string") budget.left -= Buffer.byteLength(value, "utf8") + 2 + else if (typeof value === "bigint") budget.left -= value.toString().length + 2 + else if (value instanceof Uint8Array) budget.left -= value.byteLength * 4 + 32 + else if (value && typeof value === "object") { + if (ancestors.has(value) || ancestors.size >= 100) throw new Error("SQL result is cyclic or too deeply nested") + ancestors.add(value) + budget.left -= 2 + if (Array.isArray(value)) { + for (const item of value) { + budget.left-- + checkSpillSize(item, budget, ancestors) + } + } else { + for (const key in value) { + if (!Object.hasOwn(value, key)) continue + budget.left -= Buffer.byteLength(key, "utf8") + 4 + checkSpillSize((value as Record)[key], budget, ancestors) + } + } + ancestors.delete(value) + } else budget.left -= 8 + if (budget.left < 0) throw new Error("result exceeds the SQL spill size limit") +} + +function spillValue(value: unknown): unknown { + if (typeof value === "bigint") return { $bigint: value.toString() } + if (value instanceof Date) return { $date: value.toISOString() } + if (value instanceof Uint8Array) return { $bytes: Buffer.from(value).toString("base64") } + if (typeof value === "number" && (!Number.isFinite(value) || Object.is(value, -0))) { + return { $sql_type: "number", value: Object.is(value, -0) ? "-0" : String(value) } + } + if (value === undefined) return { $sql_type: "undefined" } + if (Array.isArray(value)) return value.map(spillValue) + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, spillValue(item)])) + } + return value +} + +/** + * Lossy JSONL text artifact, not a typed round-trip format: ordered columns/values + * preserve duplicate aliases, and special values use readable tags. Literal objects + * may resemble those tags; plain strings remain strings. No decoder is implied. + */ +function serializeRows(result: SqlExecuteResult): string { + const lines: string[] = [] + let bytes = 0 + for (const values of result.rows) { + // The service accepts one string. Bound the accumulated artifact and each row before + // encoding/JSON.stringify can allocate an arbitrarily large value. Its worst-case + // escaping expansion is six times this bounded raw size, never the entire result. + const row = { columns: result.columns, values } + checkSpillSize(row, { left: SQL_MAX_SPILL_BYTES - bytes }) + let rawSize = 0 + const line = JSON.stringify(spillValue(row), (key, value) => { + rawSize += key.length + (typeof value === "string" ? value.length : 8) + if (rawSize > SQL_MAX_SPILL_BYTES - bytes) throw new Error("result exceeds the SQL spill size limit") + return value + }) + bytes += Buffer.byteLength(line, "utf8") + 1 + if (bytes > SQL_MAX_SPILL_BYTES) throw new Error("result exceeds the SQL spill size limit") + lines.push(line + "\n") + } + return lines.join("") +} + +const EMPTY_RESULT_HINT = + "Hint: 0 rows. If a literal filter was used, verify the stored values first, e.g. SELECT DISTINCT FROM
LIMIT 50 or a LIKE '%…%' probe — stored formats often differ (case, whitespace, prefixes)." + +// A string literal compared with `=` or listed in `IN (...)`. Conservative on purpose: +// anything not matching gets no hint. +const LITERAL_EQUALS = /(?:^|[^<>!=])=\s*'(?:[^']|'')+'/ +const LITERAL_IN = /\bIN\s*\(\s*'(?:[^']|'')*'/i + +/** Mask comments so a quoted literal inside one is not mistaken for a filter. */ +function hasStringLiteralFilter(sql: string): boolean { + const code = sql.replace(/--[^\n]*/g, " ").replace(/\/\*[\s\S]*?\*\//g, " ") + if (!/^\s*(?:WITH|SELECT|\()/i.test(code) || !/\bWHERE\b/i.test(code)) return false + return LITERAL_EQUALS.test(code) || LITERAL_IN.test(code) +} + +function emptyResultHint(result: SqlExecuteResult, sql: string | undefined): string { + if (!sql || result.truncated || result.rows.length > 2) return "" + if (!hasStringLiteralFilter(sql) || isScalar(result)) return "" + return result.rows.length === 0 + ? EMPTY_RESULT_HINT + : EMPTY_RESULT_HINT.replace("Hint: 0 rows.", `Hint: only ${result.rows.length} row(s).`) +} + +/** A single numeric cell (e.g. COUNT(*)) is an answer in its own right; leave it untouched. */ +function isScalar(result: SqlExecuteResult): boolean { + return result.rows.length === 1 && result.columns.length === 1 && typeof result.rows[0]?.[0] !== "string" +} + +export async function formatSqlResult(result: SqlExecuteResult, options: FormatOptions) { + const maxBytes = Math.max(0, Math.min(SQL_MAX_PREVIEW_BYTES, options.maxBytes ?? SQL_MAX_PREVIEW_BYTES)) + const maxLines = Math.max(0, options.maxLines ?? 2000) + const fits = (text: string) => Buffer.byteLength(text, "utf8") <= maxBytes && lineCount(text) <= maxLines + const bounded = (text: string) => clipText(text, maxBytes, maxLines, "…[output clipped]") ?? "" + const footer = `\n\n(${result.row_count} rows)` + const metadata = { + rowCount: result.row_count, + rows_returned: result.rows.length, + preview_rows: 0, + preview_columns: 0, + schema_truncated: false, + row_limited: result.truncated, + output_truncated: false, + result_path: undefined as string | undefined, + // This tool owns clipping; the generic truncator must not clip away the envelope. + truncated: false, + } + const hint = emptyResultHint(result, options.sql) + const withHint = (text: string) => (hint && fits(text + "\n\n" + hint) ? text + "\n\n" + hint : text) + if (result.rows.length === 0 && !result.truncated) { + metadata.output_truncated = metadata.truncated = !fits("(0 rows)") + return { output: bounded(withHint("(0 rows)")), metadata } + } + + let schema = previewSchema( + result.columns, + maxBytes - Buffer.byteLength(footer, "utf8"), + maxLines - lineCount(footer) + 1, + ) + let preview = previewRows( + result.rows, + Math.max(0, maxBytes - Buffer.byteLength(schema.text + footer, "utf8")), + Math.max(0, maxLines - lineCount(schema.text + footer) + 1), + schema.columns, + ) + // Clipped column names are lossy; keep the full schema in the saved file instead of an inline preview. + if (!preview.clipped && !schema.clipped && schema.columns === result.columns.length && !result.truncated) { + metadata.preview_rows = preview.rows + metadata.preview_columns = schema.columns + metadata.schema_truncated = schema.clipped + return { output: bounded(withHint(schema.text + preview.body + footer)), metadata } + } + + let spill: string + try { + metadata.result_path = await options.write(serializeRows(result)) + spill = `All ${result.rows.length} returned rows saved to ${metadata.result_path}. Lossy JSONL text: columns/values per row; $bigint, $date (ISO), $bytes (base64) tags; strings unchanged.` + } catch { + spill = `Spill failed (write/serialization error or ${SQL_MAX_SPILL_BYTES / 1024 / 1024} MiB size limit); returned rows were not saved.` + } + const envelope = (rows: number, clipped: boolean) => + `Preview: ${rows} of ${result.rows.length} returned rows shown. ` + + (result.truncated + ? "Result may be row-limited (connector reported a limit; total unknown). More rows may exist. " + : "Row-limited: no. ") + + `Output truncated: ${clipped ? "yes" : "no"}. ${spill}\n` + + // The entire output, including schema, envelope and path, shares the same cap. + const essentials = envelope(SQL_MAX_PREVIEW_ROWS, true) + footer + if (!fits(essentials)) { + metadata.schema_truncated = result.columns.length > 0 + metadata.output_truncated = metadata.truncated = true + return { output: bounded(envelope(0, true)), metadata } + } + schema = previewSchema( + result.columns, + maxBytes - Buffer.byteLength(essentials, "utf8"), + maxLines - lineCount(essentials) + 1, + ) + const reserved = envelope(SQL_MAX_PREVIEW_ROWS, true) + schema.text + footer + preview = previewRows( + result.rows, + Math.max(0, maxBytes - Buffer.byteLength(reserved, "utf8")), + Math.max(0, maxLines - lineCount(reserved) + 1), + schema.columns, + ) + metadata.preview_rows = preview.rows + metadata.preview_columns = schema.columns + metadata.schema_truncated = schema.clipped + metadata.output_truncated = preview.clipped || schema.columns < result.columns.length + metadata.truncated = result.truncated || metadata.output_truncated + return { + output: bounded(envelope(preview.rows, metadata.output_truncated) + schema.text + preview.body + footer), + metadata, + } +} diff --git a/packages/opencode/src/altimate/tools/sql-result-lint.ts b/packages/opencode/src/altimate/tools/sql-result-lint.ts new file mode 100644 index 0000000000..82aa47caf5 --- /dev/null +++ b/packages/opencode/src/altimate/tools/sql-result-lint.ts @@ -0,0 +1,132 @@ +import type { LintFinding } from "@altimateai/altimate-core" +import * as Registry from "../native/connections/registry" +import { EngineCoerce } from "../native/engine-coerce" +import { getCache } from "../native/schema/cache" +import { readSql } from "./sql-check" + +const RULES = new Set([ + "cast_division_to_int", + "sum_of_ratio", + "join_fan_out", + "non_deterministic_dedup", + "null_in_in_list", + "not_in_nullable", + "greatest_least_null", + "typed_coalesce_mismatch", + "null_propagating_concat", + "union_without_all", + "implicit_cross_join", + "join_without_condition", + "outer_join_filter_in_where", + "count_star_vs_column", + "division_by_column_no_guard", + "integer_division", + "limit_without_order_by", + "avg_of_avg", + "reserved_word_alias", +]) + +const LINT_BUDGET_MS = 250 +const CACHE_TTL_MS = 24 * 60 * 60 * 1000 +const COLUMN_SCAN_LIMIT = 500_000 +const SCHEMA_COLUMN_LIMIT = 2_000 +const slowSessions = new Set() + +type Finding = Pick & { severity: string } + +export function formatSqlLint(findings: readonly Finding[]) { + const kept = findings.filter((f) => RULES.has(f.rule) && f.severity.toLowerCase() !== "info").slice(0, 3) + const oneLine = (text: string) => text.replace(/\s+/g, " ").trim() + const lines = kept.map( + (f) => `Check: ${f.rule}: ${oneLine(f.message)}${f.suggestion ? ` — ${oneLine(f.suggestion)}` : ""}`, + ) + return { output: lines.length ? `Checks:\n${lines.join("\n")}` : "", rules: [...new Set(kept.map((f) => f.rule))] } +} + +/** Advisory only: a failed or slow lint must leave successful query results intact. */ +export async function lintSqlResult(sql: string, warehouse: string | undefined, sessionID: string) { + if (process.env.ALTIMATE_SQL_EXECUTE_LINT === "0" || slowSessions.has(sessionID)) return + const started = performance.now() + const expired = () => { + if (performance.now() - started > LINT_BUDGET_MS) slowSessions.add(sessionID) + return slowSessions.has(sessionID) + } + let timer: ReturnType | undefined + try { + const name = warehouse ?? Registry.list().warehouses[0]?.name + const type = Registry.canonicalType(name ? Registry.getConfig(name)?.type : undefined) + // The general classifier also labels modifying CTEs and SELECT INTO as queries. + readSql(sql, type ?? undefined) + const timeout = new Promise((resolve) => { + timer = setTimeout(() => { + slowSessions.add(sessionID) + resolve(undefined) + }, LINT_BUDGET_MS) + }) + const run = async () => { + const [core, { prepareSql }] = await Promise.all([ + import("@altimateai/altimate-core"), + import("../native/schema-resolver"), + ]) + if (expired()) return + const dialect = EngineCoerce.dialectHint(type === "sqlserver" ? "tsql" : type) + const referenced = new Set() + try { + for (const table of core.extractMetadata?.(sql, dialect).tables ?? []) referenced.add(table.toLowerCase()) + } catch { + // Metadata extraction is optional; schema-free rules can still run. + } + const hasQualifiedReferences = [...referenced].some((table) => table.includes(".")) + const tables: Record = + Object.create(null) + if (name && referenced.size) { + const cache = await getCache() + if (expired()) return + const status = cache.cacheStatus().warehouses.find((w) => w.name === name) + const age = status?.last_indexed ? Date.now() - new Date(status.last_indexed).getTime() : NaN + if (Number.isFinite(age) && age <= CACHE_TTL_MS) { + const seen = new Map>() + let count = 0 + // SchemaCache has no per-table lookup. Filter its bounded column list + // before constructing the native schema, whose cost grows with its size. + for (const column of cache.listColumns(name, COLUMN_SCAN_LIMIT)) { + if (!referenced.has(column.table.toLowerCase())) { + if (!hasQualifiedReferences) continue + const qualified = `${column.schema_name}.${column.table}`.toLowerCase() + if (!referenced.has(qualified) && !referenced.has(`${column.database}.${qualified}`.toLowerCase())) continue + } + const table = [column.database, column.schema_name, column.table].filter(Boolean).join(".") + if (!seen.has(table)) { + seen.set(table, new Set()) + tables[table] = { columns: [] } + } + if (seen.get(table)!.has(column.name)) continue + seen.get(table)!.add(column.name) + tables[table].columns.push({ + name: column.name, + type: column.data_type || "VARCHAR", + nullable: column.nullable, + }) + if (++count >= SCHEMA_COLUMN_LIMIT) break + } + } + } + // Core requires at least one table, even for rules that need no schema. + if (!Object.keys(tables).length) tables._empty_ = { columns: [{ name: "id", type: "INT", nullable: true }] } + if (expired()) return + const prepared = prepareSql(sql, undefined, { tables, dialect }) + if (expired()) return + const result = formatSqlLint(prepared.unfold(core.lint(prepared.sql, prepared.schema).findings)) + // NAPI lint is synchronous: the timer cannot interrupt it. Discard an over-budget + // result and skip later lints in this session, including sql_materialize. + if (expired() || !result.rules.length) return + return result + } + return await Promise.race([run(), timeout]) + } catch { + return undefined + } finally { + clearTimeout(timer) + expired() + } +} diff --git a/packages/opencode/src/altimate/tools/sql-tokenize.ts b/packages/opencode/src/altimate/tools/sql-tokenize.ts new file mode 100644 index 0000000000..d1cd50a5d4 --- /dev/null +++ b/packages/opencode/src/altimate/tools/sql-tokenize.ts @@ -0,0 +1,121 @@ +type SqlToken = { kind: "code" | "comment" | "literal" | "identifier"; text: string } + +/** Lex quoted SQL before recognizing comments or statement delimiters. + * `complete` is false for syntax we cannot safely interpret across supported dialects. */ +export function tokenizeSql(sql: string, dialect?: string): { tokens: SqlToken[]; complete: boolean } { + const tokens: SqlToken[] = [] + const mysqlComments = !dialect || /^(mysql|mariadb)$/i.test(dialect) + const dollarQuotes = /^(postgres|redshift|duckdb|snowflake)$/i.test(dialect ?? "") + let complete = true + let i = 0 + let code = 0 + while (i < sql.length) { + const start = i + let kind: SqlToken["kind"] | undefined + // MySQL requires whitespace/control after --. Keep ambiguous arithmetic visible + // to the write-clause checks even when another dialect treats it as a comment. + if (sql.startsWith("--", i) && (!mysqlComments || i + 2 === sql.length || /[\s\x00-\x1f]/.test(sql[i + 2]))) { + kind = "comment" + i = sql.indexOf("\n", i + 2) + if (i < 0) i = sql.length + } else if (sql.startsWith("/*", i)) { + // MySQL/MariaDB execute these comments. Generic SQL parsers discard them, + // so they cannot establish that a query is read-only or scratch-confined. + if (/^\/\*(?:!|[mM]!)/.test(sql.slice(i))) complete = false + kind = "comment" + let depth = 1 + i += 2 + while (i < sql.length && depth) { + if (sql.startsWith("/*", i)) { + depth++ + i += 2 + } else if (sql.startsWith("*/", i)) { + depth-- + i += 2 + } else i++ + } + if (depth) complete = false + } else { + const escaped = /[eE]/.test(sql[i]) && sql[i + 1] === "'" && !/[\w$]/.test(sql[i - 1] ?? "") + const quote = escaped ? "'" : sql[i] + if (quote === "'" || quote === '"' || quote === "`" || quote === "[") { + kind = quote === "'" ? "literal" : "identifier" + const end = quote === "[" ? "]" : quote + i += escaped ? 2 : 1 + let closed = false + while (i < sql.length) { + if (escaped && sql[i] === "\\") { + i += 2 + continue + } + if (sql[i++] !== end) continue + if (sql[i] === end) { + i++ + continue + } + closed = true + break + } + if (!closed) complete = false + i = Math.min(i, sql.length) + } else if (dollarQuotes && sql[i] === "$" && !/[\w$]/.test(sql[i - 1] ?? "")) { + const tag = /^\$(?:[A-Za-z_][A-Za-z0-9_]*)?\$/.exec(sql.slice(i))?.[0] + if (tag) { + kind = "literal" + const end = sql.indexOf(tag, i + tag.length) + if (end < 0) { + complete = false + i = sql.length + } else i = end + tag.length + } + } + } + if (!kind) { + i++ + continue + } + if (start > code) tokens.push({ kind: "code", text: sql.slice(code, start) }) + tokens.push({ kind, text: sql.slice(start, i) }) + code = i + } + if (code < sql.length) tokens.push({ kind: "code", text: sql.slice(code) }) + return { tokens, complete } +} + +export function maskSql(tokens: SqlToken[], identifiers = false): string { + return tokens + .map(({ kind, text }) => { + if (kind === "code") return text + if (identifiers && kind === "identifier") { + const end = text.at(-1)! + return text.slice(1, -1).replaceAll(end + end, end) + } + return text.replace(/[^\r\n]/g, " ") + }) + .join("") +} + +/** Keep each statement's quoted text, replacing only actual comments with whitespace. */ +export function statementsOf(sql: string, dialect?: string): string[] { + const { tokens } = tokenizeSql(sql, dialect) + const statements: string[] = [] + let statement = "" + for (const { kind, text } of tokens) { + if (kind === "comment") { + statement += " " + continue + } + if (kind !== "code") { + statement += text + continue + } + const parts = text.split(";") + statement += parts[0] + for (const part of parts.slice(1)) { + if (statement.trim()) statements.push(statement.trim()) + statement = part + } + } + if (statement.trim()) statements.push(statement.trim()) + return statements +} diff --git a/packages/opencode/src/altimate/util/json.ts b/packages/opencode/src/altimate/util/json.ts new file mode 100644 index 0000000000..069a87369a --- /dev/null +++ b/packages/opencode/src/altimate/util/json.ts @@ -0,0 +1,28 @@ +/** Preserve integer precision at JSON boundaries without changing BigInt.prototype. */ +export function bigintReplacer(_key: string, value: unknown): unknown { + return typeof value === "bigint" ? value.toString() : value +} + +/** Copy JSON-shaped data, preserving SDK media; storage can opt into safe integer numbers. */ +export function normalizeBigInts(value: T, mode: "string" | "safe-number" = "string"): T { + const seen = new WeakMap() + const visit = (child: unknown): unknown => { + if (typeof child === "bigint") { + const number = Number(child) + return mode === "safe-number" && Number.isSafeInteger(number) ? number : child.toString() + } + if (child === null || typeof child !== "object") return child + const proto = Object.getPrototypeOf(child) + if (!Array.isArray(child) && proto !== Object.prototype && proto !== null) return child + if (seen.has(child)) return seen.get(child) + const copy: Record | unknown[] = Array.isArray(child) + ? new Array(child.length) + : Object.create(proto) + seen.set(child, copy) + for (const [key, item] of Object.entries(child)) { + Object.defineProperty(copy, key, { value: visit(item), enumerable: true, configurable: true, writable: true }) + } + return copy + } + return visit(value) as T +} diff --git a/packages/opencode/src/bus/bus-event.ts b/packages/opencode/src/bus/bus-event.ts index bdc98f8bc7..adce103525 100644 --- a/packages/opencode/src/bus/bus-event.ts +++ b/packages/opencode/src/bus/bus-event.ts @@ -6,27 +6,40 @@ export namespace BusEvent { const registry = new Map() - export function define(type: Type, properties: Properties) { + // altimate_change start — private event definitions are excluded from wildcard transport + export function define( + type: Type, + properties: Properties, + options?: { private?: boolean }, + ) { // altimate_change start — make idempotent so SyncEvent.define (cycle 3 bridge) and // SyncEvent.init can both safely call this without duplicate-registration concerns. // First registration wins to keep schema stable across re-imports/test resets. - const existing = registry.get(type) as { type: Type; properties: Properties } | undefined + const existing = registry.get(type) as { type: Type; properties: Properties; private?: boolean } | undefined if (existing) return existing // altimate_change end const result = { type, properties, + // altimate_change start — sensitive events require an explicit typed subscription + private: options?.private, + // altimate_change end } registry.set(type, result) return result } + // altimate_change end + export function payloads() { return z .discriminatedUnion( "type", registry .entries() + // altimate_change start — private events are absent from public SSE schemas + .filter(([, def]) => !def.private) + // altimate_change end .map(([type, def]) => { return z .object({ diff --git a/packages/opencode/src/bus/index.ts b/packages/opencode/src/bus/index.ts index 4a00df2de0..5b73e006e8 100644 --- a/packages/opencode/src/bus/index.ts +++ b/packages/opencode/src/bus/index.ts @@ -88,6 +88,9 @@ export namespace Bus { const ps = s.typed.get(def.type) if (ps) yield* PubSub.publish(ps, payload) + // altimate_change start — typed trace subscribers are the only recipients of private events + if (def.private) return + // altimate_change end yield* PubSub.publish(s.wildcard, payload) const dir = yield* InstanceState.directory diff --git a/packages/opencode/src/cli/cmd/run-accounting.ts b/packages/opencode/src/cli/cmd/run-accounting.ts index c51b8069ff..ecd915bcb3 100644 --- a/packages/opencode/src/cli/cmd/run-accounting.ts +++ b/packages/opencode/src/cli/cmd/run-accounting.ts @@ -33,6 +33,41 @@ export type Termination = { // Timeout classification for why_harness_stopped="timeout" and retry decisions. const TIMEOUT_PATTERN = /\btimed?\s*out\b|\bETIMEDOUT\b|TimeoutError/i +/** Request ownership from the ordered message/request event stream. */ +export function createRequestOwnership() { + let activeRequestID: string | undefined + const users = new Map() + const assistants = new Map() + const seenRequests = new Set() + return { + get activeRequestID() { + return activeRequestID + }, + beginRequest(messageID: string) { + if (seenRequests.has(messageID)) return false + seenRequests.add(messageID) + users.set(messageID, messageID) + activeRequestID = messageID + return true + }, + onUserMessage(messageID: string, parentID?: string) { + // Internal rows have no parentID in their message schema. The prompt loop + // reports their origin separately, before creating the next assistant. + // A persisted real request always retains its own boundary. + if (seenRequests.has(messageID)) return + if (parentID !== undefined) users.set(messageID, users.get(parentID)) + else if (!users.has(messageID)) users.set(messageID, activeRequestID) + }, + onAssistantMessage(info: { id: string; parentID: string }) { + if (assistants.has(info.id)) return + assistants.set(info.id, users.get(info.parentID)) + }, + ownerOf(messageID: string) { + return assistants.get(messageID) + }, + } +} + /** Holds only overflow errors whose trace status depends on later recovery. */ export function createRecoverableOverflowTraceErrors() { let pending: string[] = [] @@ -57,6 +92,9 @@ export function createRecoverableOverflowTraceErrors() { export function create() { const summaryMessages = new Set() let turnCount = 0 + // altimate_change start — track the active request's committed echo turn allowance + let committedAnswer = false + // altimate_change end let lastFinishReason: string | undefined // altimate_change start — upstream_fix: onText and onStepFinish are // independently overwritten by whichever message last emitted a text/finish @@ -71,6 +109,17 @@ export function create() { let lastTextExplicitDone = false let lastTextFromChallenge = false let budgetExhausted = false + // altimate_change start — an answered time-budget finalization recovers the exit status only + let timeBudgetExhausted = false + let budgetFinalizationAnswered = false + // altimate_change end + // altimate_change start — track one-shot budget finalization state + // The deliberate budget abort can arrive on both SSE and the POST result. + // Suppress each channel once, only before the one-shot finalization is sent. + let budgetAbortSuppressed = false + let budgetResultSuppressed = false + let budgetFinalizationSent = false + // altimate_change end let fatalError: { name: string; timeout: boolean } | undefined // An overflow is recoverable only after compaction actually completes. In // particular, compaction can be disabled or its own summarizer can fail. @@ -100,6 +149,17 @@ export function create() { } return { + // altimate_change start — only a successful commit exempts the request's echo from its turn budget + resetCommittedAnswer() { + committedAnswer = false + }, + onAnswerCommit(status: "completed" | "error") { + committedAnswer = status === "completed" + }, + get committedAnswer() { + return committedAnswer + }, + // altimate_change end /** Record whether an assistant message is actual compaction machinery. */ onAssistantMessage(info: { id: string; agent?: string; summary?: boolean }) { if (info.summary === true) summaryMessages.add(info.id) @@ -145,8 +205,23 @@ export function create() { challengeReplyActive = false }, // altimate_change end - onSessionError(name: unknown, message?: string) { + // altimate_change start — account for intentional budget aborts by source + onSessionError(name: unknown, message?: string, source: "event" | "prompt" = "event") { const errorName = typeof name === "string" && name.length > 0 ? name : "UnknownError" + if (budgetExhausted && !budgetFinalizationSent && errorName === "MessageAbortedError") { + if (source === "event" && !budgetAbortSuppressed) { + budgetAbortSuppressed = true + // altimate_change start — let the CLI report intentional cancellation as a warning + return "budget-abort" as const + // altimate_change end + } + if (source === "prompt" && !budgetResultSuppressed) { + budgetResultSuppressed = true + // altimate_change start — same intentional cancellation on the synchronous prompt channel + return "budget-abort" as const + // altimate_change end + } + } if (errorName === "ContextOverflowError") { pendingContextOverflow = true return @@ -157,6 +232,7 @@ export function create() { // Exactly ONE such abort exists per challenge — later aborts are real. if ( idleDoneChallengeIssued && + !budgetFinalizationSent && !challengeAbortSuppressed && !challengeReplySent && errorName === "MessageAbortedError" @@ -169,13 +245,32 @@ export function create() { timeout: TIMEOUT_PATTERN.test(errorName) || TIMEOUT_PATTERN.test(message ?? ""), } }, + // altimate_change end /** Confirm that a previously reported context overflow recovered. */ onCompactionRecovered() { pendingContextOverflow = false }, - onBudgetExhausted() { + // altimate_change start — retain turn-limit behavior while allowing an answered time-limit finalization + onBudgetExhausted(kind: "turn" | "time" = "turn") { budgetExhausted = true + timeBudgetExhausted = kind === "time" + budgetFinalizationAnswered = false + }, + completeBudgetFinalization(answered: boolean): boolean { + if (!timeBudgetExhausted || !budgetFinalizationSent || !answered || fatalError || pendingContextOverflow) return false + budgetFinalizationAnswered = true + return true }, + // altimate_change end + // altimate_change start — allow one final response after budget exhaustion + /** Consume a local allowance only when the intentional abort is the sole fatal cause. */ + takeBudgetFinalizationAllowance(): number | undefined { + if (!budgetExhausted || fatalError || pendingContextOverflow || budgetFinalizationSent) return undefined + budgetFinalizationSent = true + return turnCount + 1 + }, + // altimate_change end + // altimate_change start — distinguish budget abort results from finalization failures /** * Inspect the prompt call's returned terminal assistant message. Transport * failures can be swallowed upstream into a clean-looking idle (observed: a @@ -189,20 +284,25 @@ export function create() { if (!info) return if (info.error) { const data = (info.error.data ?? {}) as Record - this.onSessionError(info.error.name, typeof data.message === "string" ? data.message : undefined) + this.onSessionError(info.error.name, typeof data.message === "string" ? data.message : undefined, "prompt") return } if (info.finish === "error" || info.finish === "other") { + if (budgetExhausted && !budgetFinalizationSent && !budgetResultSuppressed) { + budgetResultSuppressed = true + return + } // the terminal message of the ONE prompt the idle-done fallback // aborted (to deliver its challenge) finishes abnormally by design; // any further abnormal finish is a real failure. - if (idleDoneChallengeIssued && !challengeFinishSuppressed && !challengeReplySent) { + if (idleDoneChallengeIssued && !budgetFinalizationSent && !challengeFinishSuppressed && !challengeReplySent) { challengeFinishSuppressed = true return } fatalError ??= { name: `AbnormalFinish:${info.finish}`, timeout: false } } }, + // altimate_change end /** A non-2xx SDK response can carry `error` without a terminal message. */ onPromptSendError(error: unknown, status?: number) { const detail = serializeSessionError(error) @@ -210,7 +310,9 @@ export function create() { }, /** True when the run ended by fatal abort — the process must exit nonzero. */ get fatal() { - return budgetExhausted || fatalError !== undefined || pendingContextOverflow + // altimate_change start — keep budget attribution even after a final answer recovers the run + return (budgetExhausted && !budgetFinalizationAnswered) || fatalError !== undefined || pendingContextOverflow + // altimate_change end }, /** Dual-attribution fields + done_reason for the run record/output. */ termination(): Termination { diff --git a/packages/opencode/src/cli/cmd/run-output.ts b/packages/opencode/src/cli/cmd/run-output.ts new file mode 100644 index 0000000000..913db5390c --- /dev/null +++ b/packages/opencode/src/cli/cmd/run-output.ts @@ -0,0 +1,76 @@ +// altimate_change start — what `altimate-code run --output ` writes. +// +// The file is the answer, not the transcript. A model often narrates between tool +// calls ("Mixed time formats. Let me check all formats.") and that text is superseded +// by the step that follows it; only the text of the last model step is the reply. +// Everything is still kept so a run that ended without a final reply (silent turn, +// error line) writes what it has instead of the placeholder. + +import { DONE_TOKEN } from "../../session/termination" + +export const NO_TEXT_OUTPUT = "(no text output — tool-only response)" + +// The completion check and the post-compaction nudge ask the model to reply with the bare +// token when the deliverable is already complete; that acknowledgement is not a new reply. +const ACKNOWLEDGEMENT = new RegExp(`^${DONE_TOKEN}\\.?$`, "i") + +type CollectedText = { text: string; partID?: string } + +export class OutputCollector { + private all: CollectedText[] = [] + private final: CollectedText[] = [] + private previous: CollectedText[] = [] + + /** A new model step starts; text before it is no longer the reply. Compaction steps do not count. */ + stepStart(compaction = false) { + if (compaction) return + if (this.final.length) this.previous = this.final + this.final = [] + } + + /** Completed assistant text. Synthetic/compaction text is kept for the fallback only. */ + text(text: string, opts: { synthetic?: boolean; compaction?: boolean; partID?: string } = {}) { + const trimmed = text.trim() + if (!trimmed) return + const part = { text: trimmed, partID: opts.partID } + this.all.push(part) + if (opts.synthetic || opts.compaction) return + if (ACKNOWLEDGEMENT.test(trimmed) && this.final.length === 0) { + this.final = this.previous + return + } + this.final.push(part) + } + + /** Removed text must disappear from the reply and every fallback. */ + remove(partID: string) { + this.all = this.all.filter((part) => part.partID !== partID) + this.final = this.final.filter((part) => part.partID !== partID) + this.previous = this.previous.filter((part) => part.partID !== partID) + } + + private readonly notes: string[] = [] + + /** A harness-generated line (silent turn, exhausted budget) that explains why there is no reply. */ + note(line: string, options: { preserveLastText?: boolean } = {}) { + if (!line.trim()) return + this.notes.push(line.trim()) + if (options.preserveLastText && this.previous.length) { + this.notes.push(`Partial assistant response (not finalized):\n\n${this.previous.map((part) => part.text).join("\n\n")}`) + } + } + + /** + * The reply when there is one; otherwise the harness notes, with unfinished text only when + * explicitly requested; otherwise everything that was said. + */ + content(): string { + const chosen = this.final.length + ? this.final.map((part) => part.text) + : this.notes.length + ? this.notes + : this.all.map((part) => part.text) + return chosen.join("\n\n") || NO_TEXT_OUTPUT + } +} +// altimate_change end diff --git a/packages/opencode/src/cli/cmd/run-time-budget.ts b/packages/opencode/src/cli/cmd/run-time-budget.ts new file mode 100644 index 0000000000..0dd1e1192b --- /dev/null +++ b/packages/opencode/src/cli/cmd/run-time-budget.ts @@ -0,0 +1,20 @@ +/** Fractional seconds are useful for short runs; all budgets must be finite and positive. */ +export function isValidTimeBudget(value: unknown): boolean { + return typeof value === "number" && Number.isFinite(value) && value > 0 +} + +/** The hard deadline takes precedence when a step crosses both boundaries. */ +export function deadline(elapsedS: number, budgetS: number | undefined): "soft" | "hard" | undefined { + if (budgetS === undefined) return undefined + if (elapsedS >= budgetS) return "hard" + if (elapsedS >= budgetS * 0.8) return "soft" + return undefined +} + +/** Leave answer time inside the work budget, scaling the reserve for short runs. */ +export function queryDeadline(startedAt: number, budgetS: number | undefined): number | undefined { + if (budgetS === undefined) return undefined + return Math.min(Number.MAX_SAFE_INTEGER, startedAt + budgetS * 1000 - Math.min(90_000, budgetS * 200)) +} + +export * as RunTimeBudget from "./run-time-budget" diff --git a/packages/opencode/src/cli/cmd/run-tracing.ts b/packages/opencode/src/cli/cmd/run-tracing.ts new file mode 100644 index 0000000000..5295f20c96 --- /dev/null +++ b/packages/opencode/src/cli/cmd/run-tracing.ts @@ -0,0 +1,294 @@ +// altimate_change start — bounded fork-only run trace routing +// Fork-only run trace routing. Session ancestry authorizes capture; it never +// changes which events the CLI uses for answers, budgets, or termination. +import { LLMRequestEvent, Trace, USER_MESSAGE_INPUT_MAX_CHARS } from "../../altimate/observability/tracing" +import { bigintReplacer } from "../../altimate/util/json" +import os from "node:os" +import { redact } from "../../altimate/debug/report" +import { Log } from "../../altimate/util/log" + +interface SessionInfo { + id: string + parentID?: string +} +interface Event { + type: string + properties: Record +} +interface SessionState { + trace: Trace + parentID?: string + users: Set + prompts: Set + errors: Map + busy: boolean + taskLinks: Array<{ sessionId: string; messageId: string; callId: string }> +} + +const CAPTURE_OMISSIONS = [ + "effective_system_prompt: requires an identity-bearing event at the LLM request boundary after system transforms and provider instructions", + "resolved_tool_catalog: requires an identity-bearing event at the LLM request boundary after filtering, stubs, and retrieval", + "internal_custom_spans: global active tracing is disabled for run because it cannot attribute concurrent child sessions", +] +const MAX_PENDING_EVENTS = 2000 + +function redactError(text: string): string { + const context = { home: os.homedir(), username: os.userInfo().username, hostname: os.hostname() } + return redact(text, context) +} + +function traceError(error: unknown): string { + const serialized = JSON.stringify(error, (key, value) => { + if (key === "responseHeaders") return undefined + if (typeof value === "string") { + return redactError(value).slice(0, key === "responseBody" ? 1000 : USER_MESSAGE_INPUT_MAX_CHARS) + } + return bigintReplacer(key, value) + }) + return redactError(serialized ?? "Unknown error").slice(0, USER_MESSAGE_INPUT_MAX_CHARS) +} + +export class RunTracing { + private sessions = new Map() + private parents = new Map() + private pending: Array<{ sessionID: string; event: Event }> = [] + private lookedUp = new Set() + private pendingLinks = new Map() + private requestCaptured = new Set() + private omittedEvents = 0 + private admission = Promise.resolve() + + constructor( + private rootID: string, + private root: Trace, + private lookup: { + get: (sessionID: string) => Promise + children: (sessionID: string) => Promise + }, + ) { + this.sessions.set(rootID, this.state(root)) + root.setCaptureOmissions(CAPTURE_OMISSIONS) + this.updateManifest() + } + + private state(trace: Trace, parentID?: string): SessionState { + return { trace, parentID, users: new Set(), prompts: new Set(), errors: new Map(), busy: false, taskLinks: [] } + } + + private updateManifest() { + this.root.setRunLineage({ + rootSessionId: this.rootID, + sessions: [...this.sessions].map(([sessionId, state]) => ({ + sessionId, + parentSessionId: state.parentID, + traceId: state.trace.getIdentity().traceId, + taskLinks: state.taskLinks, + })), + }) + if (this.omittedEvents) { + // Preserve the root's capture status when updating the pending-event count. + this.root.setCaptureOmissions([ + ...CAPTURE_OMISSIONS.filter( + (item) => !this.requestCaptured.has(this.rootID) || item.startsWith("internal_custom_spans:"), + ), + `pending_events: ${this.omittedEvents} unverified events omitted after the ${MAX_PENDING_EVENTS}-event buffer limit`, + ]) + } + } + + private admit() { + // Seeding and live events can discover the same child while its snapshot + // is being read. Serialize admission so only one writer owns that child. + const admission = this.admission.then(() => this.admitSessions()) + this.admission = admission.catch(() => {}) + return admission + } + + private async admitSessions() { + // A grandchild's creation may precede its parent's creation on a resumed + // or reconnected stream. Resolve the known edges to a fixed point. + let changed = true + while (changed) { + changed = false + for (const [id, parentID] of this.parents) { + if (this.sessions.has(id) || !parentID || !this.sessions.has(parentID)) continue + const trace = await this.root.forkSession(id, { captureOmissions: CAPTURE_OMISSIONS }) + trace.setRunLineage({ rootSessionId: this.rootID, parentSessionId: parentID }) + const state = this.state(trace, parentID) + state.taskLinks = this.pendingLinks.get(id) ?? [] + this.pendingLinks.delete(id) + this.sessions.set(id, state) + changed = true + } + } + // Replay in original arrival order, with each session's own generation state. + const pending = this.pending + this.pending = [] + for (const item of pending) { + if (this.sessions.has(item.sessionID)) this.capture(item.sessionID, item.event) + else this.pending.push(item) + } + this.updateManifest() + } + + private remember(info: SessionInfo) { + if (info.id === this.rootID || this.sessions.has(info.id)) return + this.parents.set(info.id, info.parentID) + return this.admit() + } + + private async verify(id: string, ancestors = new Set()): Promise { + if (this.sessions.has(id)) return true + if (ancestors.has(id)) return false + ancestors.add(id) + if (!this.lookedUp.has(id)) { + this.lookedUp.add(id) + const info = await this.lookup.get(id).catch(() => undefined) + if (info?.id === id) await this.remember(info) + } + const parent = this.parents.get(id) + if (parent && (await this.verify(parent, ancestors))) await this.admit() + return this.sessions.has(id) + } + + /** Seed existing children recursively before sending a resumed run's prompt. */ + async seed() { + const visited = new Set() + const visit = async (id: string) => { + if (visited.has(id)) return + visited.add(id) + const children = await this.lookup.children(id).catch(() => []) + for (const child of children) { + if (child.parentID !== id) continue + await this.remember(child) + await visit(child.id) + } + } + await visit(this.rootID) + } + + /** Observe before the CLI root filter. Tracing failure must not affect the run. */ + async observe(input: unknown) { + try { + const event = input as Event + const props = event.properties + if (!props) return + if (event.type === "session.created" || event.type === "session.updated") { + const info = props.info as SessionInfo | undefined + if (!info?.id) return + await this.remember(info) + if (info.parentID) await this.verify(info.id) + } + const id = + props.part?.sessionID ?? + props.info?.sessionID ?? + props.sessionID ?? + (event.type.startsWith("session.") ? props.info?.id : undefined) + if (typeof id !== "string") return + if (!(await this.verify(id))) { + if (this.pending.length >= MAX_PENDING_EVENTS) { + this.pending.shift() + this.omittedEvents++ + this.updateManifest() + } + this.pending.push({ sessionID: id, event }) + return + } + this.capture(id, event) + // Replayed early task parts register links in capture() too. Verify only + // through real ancestry; a task result naming another session is not proof. + for (const childID of this.pendingLinks.keys()) await this.verify(childID) + } catch (error) { + // Event consumers must remain live even when an individual recording fails. + Log.Default.debug("[tracing] run event capture failed", { + error: error instanceof Error ? error.message : String(error), + }) + } + } + + private capture(id: string, event: Event) { + const state = this.sessions.get(id)! + const trace = state.trace + const props = event.properties + if (event.type === LLMRequestEvent.type) { + trace.logLLMRequest(LLMRequestEvent.properties.parse(props)) + this.requestCaptured.add(id) + return + } + if (event.type === "message.updated") { + const info = props.info + if (info.role === "user") state.users.add(info.id) + if (info.role === "assistant") { + trace.enrichFromAssistant(info) + if (info.error) state.errors.set(String(info.error.name), traceError(info.error)) + else if (info.finish === "error" || info.finish === "other") { + state.errors.set("AbnormalFinish", `Assistant ended with ${info.finish}`) + } + } + } + if (event.type === "session.status") state.busy = props.status?.type !== "idle" + if (event.type === "session.error" && props.error) { + state.errors.set(String(props.error.name), traceError(props.error)) + } + if (event.type === "session.compacted") state.errors.delete("ContextOverflowError") + if (event.type !== "message.part.updated") return + const part = props.part + if (part.type === "tool" && part.tool === "task") { + const childID = part.state?.metadata?.sessionId ?? part.state?.input?.task_id + if (typeof childID === "string" && childID && part.messageID && part.callID) { + const link = { sessionId: id, messageId: String(part.messageID), callId: String(part.callID) } + const links = this.sessions.get(childID)?.taskLinks ?? this.pendingLinks.get(childID) ?? [] + if ( + !links.some( + (existing) => + existing.sessionId === id && existing.messageId === link.messageId && existing.callId === link.callId, + ) + ) { + links.push(link) + if (this.sessions.has(childID)) this.updateManifest() + } + if (!this.sessions.has(childID)) this.pendingLinks.set(childID, links) + } + } + if (part.type === "step-start") trace.logStepStart(part) + if (part.type === "step-finish") trace.logStepFinish(part) + if (part.type === "tool" && ["running", "completed", "error"].includes(part.state?.status)) trace.logToolCall(part) + if (part.type === "reasoning" && part.time?.end) trace.logReasoning(part) + if (part.type === "text" && !part.ignored) { + if (state.users.has(part.messageID)) { + if (!part.text || state.prompts.has(part.id)) return + state.prompts.add(part.id) + const now = Date.now() + trace.logSpan({ + name: part.synthetic ? "synthetic-prompt" : "user-prompt", + input: part.text.slice(0, USER_MESSAGE_INPUT_MAX_CHARS), + startTime: now, + endTime: now, + attributes: { sessionId: id, messageId: part.messageID, synthetic: part.synthetic === true }, + }) + } else if (part.time?.end) trace.logText(part) + } + } + + flushSync(reason: string) { + this.updateManifest() + for (const state of this.sessions.values()) + state.trace.flushSync(redactError(reason).slice(0, USER_MESSAGE_INPUT_MAX_CHARS)) + } + + async finish(rootError?: string) { + this.updateManifest() + await Promise.allSettled( + [...this.sessions] + .filter(([id]) => id !== this.rootID) + .map(([, state]) => { + const error = + [...state.errors.values()].join("\n") || + (state.busy ? "The root run ended while this child session was still active." : undefined) + return state.trace.endTrace(error) + }), + ) + return this.root.endTrace(rootError ? redactError(rootError).slice(0, USER_MESSAGE_INPUT_MAX_CHARS) : undefined) + } +} +// altimate_change end diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 36d1c31b11..6766583bad 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -41,6 +41,15 @@ import { Locale } from "../../util/locale" import { Tracer, FileExporter, HttpExporter, type TraceExporter } from "../../altimate/observability/tracing" // altimate_change start — run accounting helpers (fork-only module) import { RunAccounting } from "./run-accounting" +// altimate_change start — wall-clock budget validation and deadline decisions +import { RunTimeBudget } from "./run-time-budget" +import { defer } from "../../util/defer" +import { setTimeout as sleep } from "node:timers/promises" +// altimate_change end +import { RunTracing } from "./run-tracing" +// altimate_change start — private trace stream diagnostics +import { Log } from "../../util/log" +// altimate_change end // altimate_change start — stable message id for idempotent prompt retries import { MessageID } from "../../session/schema" // altimate_change end @@ -63,6 +72,7 @@ import { SessionTermination } from "../../session/termination" import type { ConfigV1 } from "@opencode-ai/core/v1/config/config" // altimate_change - render the workspace engine offer in an attached run import { OFFER_COMMAND, installCommand } from "@/altimate/workspace/engine-offer" +import { OutputCollector } from "./run-output" // altimate_change end // When a tool's parameters can't be statically inferred (legacy fork tools whose @@ -375,7 +385,9 @@ export const RunCommand = cmd({ .option("output", { alias: ["o"], type: "string", - describe: "write final assistant response to file (.md or .txt)", + // altimate_change start — clarify the existing completed-text output contract + describe: "write completed assistant text, including preambles, when the run ends (.md or .txt); not incremental", + // altimate_change end }) .option("audience", { type: "string", @@ -395,8 +407,14 @@ export const RunCommand = cmd({ // altimate_change start — budget limits for CI/enterprise governance .option("max-turns", { type: "number", - describe: "maximum number of assistant turns before aborting the session", + describe: "maximum assistant work turns; allows one committed-answer echo, or one best-effort reply after a budget abort", }) + // altimate_change start — wall-clock work budget, with a separate finalization allowance + .option("time-budget", { + type: "number", + describe: "maximum time in seconds including startup (env: ALTIMATE_RUN_TIME_BUDGET_S); bounded finalization may follow", + }) + // altimate_change end // altimate_change end // altimate_change start — backport upstream PR #21266 (dropped during v1.4.0 merge) .option("dangerously-skip-permissions", { @@ -423,6 +441,14 @@ export const RunCommand = cmd({ process.exit(1) } // altimate_change end + // altimate_change start — validate the CLI value or env fallback before starting any work + const timeBudgetInput = args.timeBudget ?? process.env.ALTIMATE_RUN_TIME_BUDGET_S + const timeBudget = timeBudgetInput === undefined ? undefined : Number(timeBudgetInput) + if (timeBudget !== undefined && !RunTimeBudget.isValidTimeBudget(timeBudget)) { + UI.error(`--time-budget must be a positive number (env: ALTIMATE_RUN_TIME_BUDGET_S; got ${String(timeBudgetInput)})`) + process.exit(1) + } + // altimate_change end // altimate_change start — `run` is the only entrypoint without an answer // channel for the question tool: no TUI is mounted and the in-process // Server.Default() shim below does not bind a port, so a connected IDE @@ -604,7 +630,9 @@ You are speaking to a non-technical business executive. Follow these rules stric - "Query Duration" not "total_elapsed_time" — "Data Processed" not "bytes_scanned" — "Monthly Cost" not "credits_used * 3.00"` async function execute(sdk: OpencodeClient) { - const outputParts: string[] = [] + // altimate_change start — collect completed assistant text for run output + const outputParts = new OutputCollector() + // altimate_change end // altimate_change start — a turn must end with text (#1334). Track whether // the assistant said anything at all, and the last tool failure, so a // silent end can be answered with one synthetic reply turn. @@ -618,14 +646,28 @@ You are speaking to a non-technical business executive. Follow these rules stric let lastToolFailure: { tool: string; error: string } | undefined let step = 0 let lastTextStep: number | undefined - const answered = () => lastTextStep !== undefined && lastTextStep === step + // altimate_change start — a preamble before a still-running tool is not a final answer + let lastToolStep: number | undefined + let interruptedStep: number | undefined + const answered = () => + lastTextStep !== undefined && lastTextStep === step && lastToolStep !== step && interruptedStep !== step + // altimate_change end // altimate_change end // altimate_change start — validate explicit models before starting the session event loop. // Otherwise an invalid model can fail before an idle event is emitted, leaving non-interactive // `run` waiting until the process-level timeout kills it. if (args.model) { const parsed = Provider.parseModel(args.model) - const providers = providerListOrThrow(await sdk.provider.list(), args.model) + // A failed list call (server busy at startup) is not "no providers": retry, then surface the real error + // instead of masquerading as an unknown model. + const providers = await (async () => { + for (let attempt = 1; ; attempt++) { + const res = await sdk.provider.list() + if (!res.error && Array.isArray(res.data?.all)) return res.data.all + if (attempt >= 3) return providerListOrThrow(res, args.model!) + await Bun.sleep(250 * attempt) + } + })() const provider = providers.find((item) => item.id === parsed.providerID) if (!provider?.models?.[parsed.modelID]) { throw new Provider.ModelNotFoundError({ @@ -658,8 +700,17 @@ You are speaking to a non-technical business executive. Follow these rules stric } } + // altimate_change start — preserve the first budget event across work and finalization loops + let budgetExhaustedEmitted = false + // altimate_change end function emit(type: string, data: Record) { if (args.format === "json") { + // altimate_change start — finalization can exhaust its own allowance after the work budget + if (type === "budget_exhausted") { + if (budgetExhaustedEmitted) return true + budgetExhaustedEmitted = true + } + // altimate_change end process.stdout.write(JSON.stringify({ type, timestamp: Date.now(), sessionID, ...data }) + EOL) return true } @@ -678,6 +729,15 @@ You are speaking to a non-technical business executive. Follow these rules stric // altimate_change start — turn accounting + dual-attribution // termination state for this run (see run-accounting.ts). const accounting = RunAccounting.create() + const requestOwnership = RunAccounting.createRequestOwnership() + // A queued request must not revoke the in-flight echo owned by an earlier request. + const committedRequests = new Set() + const beginRequest = (messageID: string) => { + // The persisted request boundary includes requests from other attached clients. + // Retries retain their ID; internal synthetic/compaction rows do not emit this event. + if (!requestOwnership.beginRequest(messageID)) return + accounting.resetCommittedAnswer() + } // altimate_change end // altimate_change start — idle-done fallback state (run-mode-only by // construction — this exists only in the run command). Thresholds are @@ -728,6 +788,161 @@ You are speaking to a non-technical business executive. Follow these rules stric } })() + // altimate_change start — isolate descendant traces from root CLI accounting + let runTracing: RunTracing | undefined + const traceAbort = new AbortController() + using _traceEvents = defer(() => traceAbort.abort()) + let traceEventsDone: Promise | undefined + // altimate_change end + // altimate_change start — one clock for all work, including task children and continuation turns + let timeStarted: number | undefined + let queryDeadline: number | undefined + let timeBudgetTimer: ReturnType | undefined + const timeBudgetStop = new AbortController() + let workActive = false + let timeBudgetDeadline: "none" | "soft" | "hard" = "none" + // altimate_change start — run control travels with prompts, including attached finalization + let effortDowngradedAt: number | undefined + let generationInterruptedAt: number | undefined + const budgetWarnings: string[] = [] + const budgetHeaders = (finalizing = false) => { + if (timeBudget === undefined && !finalizing) return undefined + const control = + timeBudgetDeadline === "none" + ? "work" + : process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE === "0" + ? "soft-no-downgrade" + : "soft" + return { + ...(!finalizing && queryDeadline !== undefined + ? { "x-altimate-run-query-deadline": String(queryDeadline) } + : {}), + "x-altimate-run-budget": finalizing + ? control === "soft" + ? "finalization" + : "finalization-no-downgrade" + : control, + } + } + const warnBudget = (message: string) => { + budgetWarnings.push(message) + process.stderr.write(`Warning: ${message}${EOL}`) + tracer?.logSpan({ + name: "time-budget-warning", + startTime: Date.now(), + endTime: Date.now(), + attributes: { warning: message }, + }) + } + // altimate_change end + let timeBudgetReminder = Promise.resolve() + let timeBudgetAbort = Promise.resolve() + let timeAbortRequested = false + const timeExhausted = () => timeBudgetDeadline === "hard" + const elapsedSeconds = () => timeStarted === undefined ? 0 : (performance.now() - timeStarted) / 1000 + const budgetMetadata = () => ({ + max_turns: args.maxTurns, + time_budget_s: timeBudget, + elapsed_s: elapsedSeconds(), + time_budget_deadline: timeBudgetDeadline, + // altimate_change start — actual server request-boundary timestamps, in Unix milliseconds + effort_downgraded_at: effortDowngradedAt, + generation_interrupted_at: generationInterruptedAt, + // altimate_change end + }) + const stopTimeBudget = () => { + clearInterval(timeBudgetTimer) + timeBudgetTimer = undefined + } + using _timeBudget = defer(stopTimeBudget) + const abortForTimeBudget = () => { + if (!sessionID || timeAbortRequested) return + timeAbortRequested = true + // altimate_change start — distinguish harness deadlines from user cancellation on the server + timeBudgetAbort = sdk.session.abort( + { sessionID }, + { signal: AbortSignal.timeout(5_000), headers: { "x-altimate-run-budget": "hard-deadline" } }, + ).then((result) => { + if (result.error) throw result.error + }).catch((e) => { + accounting.onSessionError("TimeBudgetAbortError", String(e)) + eventAbort.abort() + }) + // altimate_change end + } + const checkTimeBudget = () => { + if (!sessionID || !workActive || timeExhausted()) return + const deadline = RunTimeBudget.deadline(elapsedSeconds(), timeBudget) + if (deadline === "hard") { + timeBudgetDeadline = "hard" + timeBudgetStop.abort() + stopTimeBudget() + // altimate_change start — a time abort is recoverable by an answered finalization + accounting.onBudgetExhausted("time") + tracer?.setRunBudget(budgetMetadata()) + const warning = `Budget exceeded: reached ${timeBudget} second time limit. Aborting work and requesting a final reply.` + emit("budget_exhausted", { limit_seconds: timeBudget }) + warnBudget(warning) + // altimate_change end + // A resumed session can already be busy before this subscription starts. + // Cancel it even when no new busy event was observed. + abortForTimeBudget() + return + } + // altimate_change start — partial emitted text is not proof that an active request finished + if (deadline !== "soft" || timeBudgetDeadline !== "none") return + // altimate_change end + timeBudgetDeadline = "soft" + tracer?.setRunBudget(budgetMetadata()) + if (!emit("time_budget_warning", { limit_seconds: timeBudget })) { + UI.println( + UI.Style.TEXT_WARNING_BOLD + "!", + UI.Style.TEXT_NORMAL + " Time budget nearly exhausted; requesting an answer.", + ) + } + // altimate_change start — save the reminder then interrupt only the active model request + // The server applies the effort override before saving this user turn, + // and defers interruption until executing tools have kept their results. + const messageID = MessageID.ascending() + beginRequest(messageID) + // altimate_change end + timeBudgetReminder = sdk.session + // altimate_change start — carries soft control to both local and attached servers + .prompt( + { + sessionID, + messageID, + noReply: true, + agent, + model: args.model ? Provider.parseModel(args.model) : undefined, + variant: args.variant, + ...(audienceSystem ? { system: audienceSystem } : {}), + parts: [{ type: "text", text: SessionTermination.REPLY_BEFORE_TIME_BUDGET, synthetic: true }], + }, + { signal: AbortSignal.timeout(5_000), headers: budgetHeaders() }, + ) + // altimate_change end + .then((result) => { + if (result.error) throw result.error + }).catch((e) => { + const detail = RunAccounting.serializeSessionError(e) + if (!emit("time_budget_warning_failed", { error: detail })) UI.error(`Time budget reminder failed: ${detail}`) + }) + } + const startWorkClock = () => { + workActive = true + if (timeStarted !== undefined) return + // altimate_change start — include process bootstrap in the work deadline + timeStarted = performance.now() - process.uptime() * 1000 + // altimate_change end + // compute the query cutoff once so reminders cannot extend it + queryDeadline = RunTimeBudget.queryDeadline(Date.now() - process.uptime() * 1000, timeBudget) + tracer?.setRunBudget(budgetMetadata()) + // Fixed short ticks avoid the signed-32-bit timeout overflow for large budgets. + if (timeBudget !== undefined) timeBudgetTimer = setInterval(checkTimeBudget, 25) + } + // altimate_change end + // altimate_change start — the event loop takes its stream as a // parameter so the idle-done challenge phase can re-run it over a fresh // subscription after the deliberate mid-run abort (same accounting, same @@ -737,34 +952,97 @@ You are speaking to a non-technical business executive. Follow these rules stric // would otherwise end the phase before the challenge prompt begins). async function loop( stream: typeof events.stream, - options?: { requireBusyFirst?: boolean; suppressInterruptedPromptAbort?: boolean }, + options?: { + requireBusyFirst?: boolean + suppressInterruptedPromptAbort?: boolean + turnLimit?: number + signal?: AbortSignal + }, ) { let sawBusy = false // altimate_change end const toggles = new Map() // altimate_change start — max-turns budget enforcement (count kept in accounting) - const maxTurns = args.maxTurns + const maxTurns = options?.turnLimit ?? args.maxTurns + let budgetAborted = false // altimate_change end // altimate_change start — parameterized stream for await (const event of stream) { + if (options?.signal?.aborted) break + await runTracing?.observe(event) + if (options?.signal?.aborted) break + // altimate_change start — preserve request boundaries and internal continuation ownership on attached streams + const requestEvent = event as { + type: string + properties: { sessionID?: string; messageID?: string; parentID?: string } + } + if ( + requestEvent.type === "session.request.started" && + requestEvent.properties.sessionID === sessionID && + requestEvent.properties.messageID + ) + beginRequest(requestEvent.properties.messageID) + if ( + requestEvent.type === "session.request.continued" && + requestEvent.properties.sessionID === sessionID && + requestEvent.properties.messageID && + requestEvent.properties.parentID + ) + requestOwnership.onUserMessage(requestEvent.properties.messageID, requestEvent.properties.parentID) + // altimate_change end + // altimate_change start — shared SDKs omit fork-only run budget events + const budgetEvent = event as { type: string; properties: { sessionID?: string; timestamp?: number } } + if (budgetEvent.properties.sessionID === sessionID && typeof budgetEvent.properties.timestamp === "number") { + if (budgetEvent.type === "session.budget.effort") effortDowngradedAt ??= budgetEvent.properties.timestamp + if (budgetEvent.type === "session.generation.interrupted") { + generationInterruptedAt ??= budgetEvent.properties.timestamp + // The processor closes partial text when interrupted, without completing its answer. + interruptedStep = step + } + tracer?.setRunBudget(budgetMetadata()) + } + // altimate_change end // altimate_change end // altimate_change start — record each assistant message's agent so // step-start parts (which carry only messageID/sessionID) can be attributed. // The assistant message row is persisted — and this event published — before // its first step-start part streams, so the lookup is populated in time. + if ( + event.type === "message.updated" && + event.properties.info.role === "user" && + event.properties.info.sessionID === sessionID + ) { + // This provisional owner is replaced by the persisted request boundary + // or the internal continuation's explicit origin before its assistant starts. + requestOwnership.onUserMessage(event.properties.info.id) + } if ( event.type === "message.updated" && event.properties.info.role === "assistant" && event.properties.info.sessionID === sessionID ) { accounting.onAssistantMessage(event.properties.info) + // Keep the request that owned the assistant's creation, even if an older + // tool finishes after another attached client persists a new request. + requestOwnership.onAssistantMessage(event.properties.info) assistantStarted = true + // Enrich only from this run's assistant, independently of presentation. + const info = event.properties.info + tracer?.enrichFromAssistant({ + modelID: info.modelID, + providerID: info.providerID, + agent: info.agent, + variant: info.variant, + }) } // altimate_change end if ( event.type === "message.updated" && event.properties.info.role === "assistant" && + // altimate_change start — upstream_fix: only display this run's assistant + event.properties.info.sessionID === sessionID && + // altimate_change end args.format !== "json" && toggles.get("start") !== true ) { @@ -772,21 +1050,33 @@ You are speaking to a non-technical business executive. Follow these rules stric UI.println(`> ${event.properties.info.agent} · ${event.properties.info.modelID}`) UI.empty() toggles.set("start", true) - - // Enrich trace with resolved model/provider from the first assistant message - const info = event.properties.info - tracer?.enrichFromAssistant({ - modelID: info.modelID, - providerID: info.providerID, - agent: info.agent, - variant: info.variant, - }) } + // altimate_change start — discarded streamed text must not survive in --output fallbacks + if (event.type === "message.part.removed" && event.properties.sessionID === sessionID) { + outputParts.remove(event.properties.partID) + } + // altimate_change end if (event.type === "message.part.updated") { const part = event.properties.part if (part.sessionID !== sessionID) continue + // altimate_change start — tool steps cannot satisfy the final-answer check + if (part.type === "tool" && !accounting.isCompactionStep(part.messageID)) lastToolStep = step + if ( + part.type === "tool" && part.tool === "answer_commit" && + (part.state.status === "completed" || part.state.status === "error") + ) { + const requestID = requestOwnership.ownerOf(part.messageID) + if (requestID !== undefined) { + // Success and failed retries affect only the request that owns this tool. + if (part.state.status === "completed") committedRequests.add(requestID) + else committedRequests.delete(requestID) + if (requestID === requestOwnership.activeRequestID) accounting.onAnswerCommit(part.state.status) + } + } + // altimate_change end + // altimate_change start — feed every part event through the // idle-done observer (event-stream ordering for build-after-last-write, // text-only-turn counting, outstanding-tool suppression). @@ -794,7 +1084,6 @@ You are speaking to a non-technical business executive. Follow these rules stric // altimate_change end if (part.type === "tool" && (part.state.status === "completed" || part.state.status === "error")) { - tracer?.logToolCall(part as Parameters[0]) // altimate_change start — remembered for the silent-turn reply (#1334). Before // the JSON-mode `emit`, which `continue`s past the rest. if (part.state.status === "error") { @@ -825,7 +1114,9 @@ You are speaking to a non-technical business executive. Follow these rules stric } if (part.type === "step-start") { - tracer?.logStepStart(part) + // altimate_change start — `--output` keeps only the last step's text (see run-output.ts) + outputParts.stepStart(accounting.isCompactionStep(part.messageID)) + // altimate_change end // altimate_change start — see `step` (#1334). Compaction steps do not count, // as for the turn budget below: one running after the final answer would // otherwise move `step` past `lastTextStep` and ask for a reply the model @@ -837,19 +1128,30 @@ You are speaking to a non-technical business executive. Follow these rules stric // the owning message's agent is resolved via the message.updated lookup // above, so compacting models are not differentially charged turns. const counted = accounting.onStepStart(part.messageID) - if (counted && maxTurns && accounting.turnCount > maxTurns) { + const requestID = requestOwnership.ownerOf(part.messageID) + const committedAnswer = requestID !== undefined && committedRequests.has(requestID) + // altimate_change start — the time-budget abort already owns the interrupted work phase + if ( + counted && maxTurns && accounting.turnCount > maxTurns && !committedAnswer && !budgetAborted && + (!timeExhausted() || options?.turnLimit !== undefined) + ) { + stopTimeBudget() + // altimate_change end + budgetAborted = true accounting.onBudgetExhausted() error = `Budget exceeded: reached ${maxTurns} assistant turn${maxTurns !== 1 ? "s" : ""} limit` - UI.println(UI.Style.TEXT_DANGER_BOLD + "!", UI.Style.TEXT_NORMAL + ` ${error}. Aborting session.`) - await sdk.session.abort({ sessionID }) - break + if (!emit("budget_exhausted", { limit: maxTurns })) { + UI.println(UI.Style.TEXT_DANGER_BOLD + "!", UI.Style.TEXT_NORMAL + ` ${error}. Aborting session.`) + } + await sdk.session.abort({ sessionID }, { signal: options?.signal }) + // Drain the ordered abort/error/idle tail before starting another phase. + continue } // altimate_change end if (emit("step_start", { part })) continue } if (part.type === "step-finish") { - tracer?.logStepFinish(part) // altimate_change start — record the model-side finish reason accounting.onStepFinish(part.messageID, (part as { reason?: string }).reason) // altimate_change end @@ -859,6 +1161,9 @@ You are speaking to a non-technical business executive. Follow these rules stric // one-shot). Firing aborts the churning prompt and hands off to the // confirm-DONE challenge phase after the event loop drains. Checked // BEFORE the json-mode emit-continue so headless drivers take this path too. + // altimate_change start — do not issue a completion challenge after a time abort + if (budgetAborted || timeBudgetDeadline === "hard") continue + // altimate_change end if (idleDone.shouldChallenge()) { idleDone.markChallengeIssued() accounting.onIdleDoneChallengeIssued() @@ -882,7 +1187,6 @@ You are speaking to a non-technical business executive. Follow these rules stric } if (part.type === "text" && part.time?.end) { - tracer?.logText(part) // altimate_change start — explicit-done attribution input accounting.onText(part.messageID, part.text, part.synthetic === true) // altimate_change end @@ -898,10 +1202,18 @@ You are speaking to a non-technical business executive. Follow these rules stric lastTextStep = step } // altimate_change end - if (emit("text", { part })) continue + // altimate_change start — upstream_fix: --output collects text in JSON mode too const text = part.text.trim() + if (args.output && text) { + outputParts.text(text, { + partID: part.id, + synthetic: part.synthetic === true, + compaction: accounting.isCompactionStep(part.messageID), + }) + } + if (emit("text", { part })) continue if (!text) continue - if (args.output) outputParts.push(text) + // altimate_change end if (!process.stdout.isTTY) { process.stdout.write(text + EOL) continue @@ -944,12 +1256,19 @@ You are speaking to a non-technical business executive. Follow these rules stric // (never a bare name, "[object Object]", or a literal {}); feed the // harness-stop attribution (recoverable overflow errors are excluded there). const err = RunAccounting.serializeSessionError(props.error) - accounting.onSessionError( + // altimate_change start — intentional time-budget cancellation is a warning + const disposition = accounting.onSessionError( props.error.name, "data" in props.error && props.error.data && "message" in props.error.data ? String(props.error.data.message) : undefined, ) + if (timeExhausted() && disposition === "budget-abort") { + warnBudget(err) + emit("time_budget_abort_warning", { error: props.error }) + continue + } + // altimate_change end // altimate_change end // altimate_change start — keep overflow trace failures recoverable only through compaction if (props.error.name === "ContextOverflowError") recoverableOverflowTraceErrors.add(err) @@ -976,6 +1295,13 @@ You are speaking to a non-technical business executive. Follow these rules stric event.properties.status.type === "busy" ) { sawBusy = true + // altimate_change start — cancel a generation whose budget expired during prompt setup + if (timeExhausted() && options?.turnLimit === undefined) { + // A deadline during preparation may have preceded the actual generation. + timeAbortRequested = false + abortForTimeBudget() + } + // altimate_change end } // altimate_change end @@ -1010,6 +1336,9 @@ You are speaking to a non-technical business executive. Follow these rules stric // altimate_change start — ignore stale pre-challenge idles if (options?.requireBusyFirst && !sawBusy) continue // altimate_change end + // altimate_change start — idle gaps are not active work; continuations retain the same start time + workActive = false + // altimate_change end break } @@ -1119,8 +1448,53 @@ You are speaking to a non-technical business executive. Follow these rules stric variant: args.variant, prompt: message, }) - // altimate_change start - activate tracer for session - if (tracer) Tracer.setActive(tracer) + // altimate_change start — one trace per verified session, sharing export policy + // Global active spans carry no session identity and would mix child work + // into the root. Record that omission until the request-boundary hook exists. + if (tracer) { + Tracer.setActive(null) + runTracing = new RunTracing(sessionID, tracer, { + get: async (id) => (await sdk.session.get({ sessionID: id }, { signal: AbortSignal.timeout(1_000) })).data, + children: async (id) => + (await sdk.session.children({ sessionID: id }, { signal: AbortSignal.timeout(1_000) })).data ?? [], + }) + await runTracing.seed() + // Prompt snapshots use a separate, origin-guarded stream and are never public events. + let connected!: () => void + let failed!: (cause: unknown) => void + const ready = new Promise((resolve, reject) => { + connected = resolve + failed = reject + }) + const readyTimer = setTimeout(() => { + traceAbort.abort() + failed(new Error("Trace event subscription timed out")) + }, 5_000) + try { + const snapshots = await sdk.event.subscribe(undefined, { + url: "/altimate/trace/event", + signal: traceAbort.signal, + } as Parameters[1]) + traceEventsDone = (async () => { + for await (const event of snapshots.stream) { + if (event.type === "server.connected") connected() + await runTracing?.observe(event) + } + })() + .catch((cause) => { + failed(cause) + if (!traceAbort.signal.aborted) Log.Default.warn("trace event stream ended", { cause }) + }) + .finally(() => failed(new Error("Trace event stream closed before connecting"))) + // The SDK stream is lazy: wait until the server has installed its private subscriber. + await ready + } catch (cause) { + traceAbort.abort() + Log.Default.warn("trace request capture unavailable", { cause }) + } finally { + clearTimeout(readyTimer) + } + } // altimate_change end // Register crash handlers to flush the trace on unexpected exit @@ -1161,11 +1535,11 @@ You are speaking to a non-technical business executive. Follow these rules stric }) } const onSigint = () => { - tracer?.flushSync("Process interrupted") + runTracing?.flushSync("Process interrupted") exitAfterMirrors(130) } const onSigterm = () => { - tracer?.flushSync("Process interrupted") + runTracing?.flushSync("Process interrupted") exitAfterMirrors(143) } // altimate_change end @@ -1177,7 +1551,7 @@ You are speaking to a non-technical business executive. Follow these rules stric // outcome sticky in the right direction: a spurious firing during an // event-loop gap on a run that later completes must not poison the rc — // the success path marks the shared guard finished and restores exitCode. - const beforeExit = RunAccounting.createBeforeExitGuard(process, () => tracer?.flushSync("Process exited")) + const beforeExit = RunAccounting.createBeforeExitGuard(process, () => runTracing?.flushSync("Process exited")) const onBeforeExit = beforeExit.onBeforeExit // altimate_change end process.on("SIGINT", onSigint) @@ -1231,6 +1605,10 @@ You are speaking to a non-technical business executive. Follow these rules stric // server whether that message landed, and only re-send when it did not. const sendMessageID = MessageID.ascending() const send = () => { + beginRequest(sendMessageID) + // altimate_change start — start once at prompt dispatch, never reset on retry or child work + startWorkClock() + // altimate_change end // altimate_change start — first-run health: everything needed to talk to the model is ready, // for both the --command branch and the plain prompt branch Telemetry.startupReady("run") @@ -1246,7 +1624,9 @@ You are speaking to a non-technical business executive. Follow these rules stric arguments: message, variant: args.variant, }, - { signal: eventAbort.signal }, + // altimate_change start — run effort state covers command prompts as well + { signal: AbortSignal.any([eventAbort.signal, timeBudgetStop.signal]), headers: budgetHeaders() }, + // altimate_change end ) const model = args.model ? Provider.parseModel(args.model) : undefined return sdk.session.prompt( @@ -1259,7 +1639,9 @@ You are speaking to a non-technical business executive. Follow these rules stric parts: [...files, { type: "text", text: message }], ...(audienceSystem ? { system: audienceSystem } : {}), }, - { signal: eventAbort.signal }, + // altimate_change start — give the server the lifetime of this run's work phase + { signal: AbortSignal.any([eventAbort.signal, timeBudgetStop.signal]), headers: budgetHeaders() }, + // altimate_change end ) } /** Did the server persist this attempt's user message? @@ -1267,9 +1649,9 @@ You are speaking to a non-technical business executive. Follow these rules stric * evidence that the message did NOT land. Treating an unreachable * server as "absent" would resend a task that may already be running, * which is the duplication this whole mechanism exists to prevent. */ - const acceptanceState = async (messageID: string): Promise<"accepted" | "absent" | "unknown"> => { + const acceptanceState = async (messageID: string, signal?: AbortSignal): Promise<"accepted" | "absent" | "unknown"> => { try { - const res = (await sdk.session.message({ sessionID, messageID })) as { + const res = (await sdk.session.message({ sessionID, messageID }, { signal })) as { data?: { info?: unknown } error?: unknown response?: { status?: number } @@ -1297,8 +1679,11 @@ You are speaking to a non-technical business executive. Follow these rules stric const runSyntheticTurn = async ( text: string, kind: "challenge" | "continuation" | "reply", + options?: { turnLimit: number; timeoutMs: number }, ): Promise => { const turnAbort = new AbortController() + let timedOut = false + let timer: ReturnType | undefined // altimate_change start — "reply": the silent-turn follow-up (#1334) const names = { challenge: ["ChallengeEventStreamError", "IdleDoneChallengeFailed", "idle-done challenge", "idle_done_challenge_failed"], @@ -1317,86 +1702,124 @@ You are speaking to a non-technical business executive. Follow these rules stric // (or the JSON `silent_turn_reply` event) and an exit code, with no // connection or SSE error to explain it. (bot review on #1345) const surface = (name: string, detail: string) => { + if (timedOut) return accounting.onSessionError(name, detail) const line = `${humanName} failed: ${detail}` error = error ? error + EOL + line : line if (!emit("error", { error: { name, message: detail } })) UI.error(line) } - const turnEvents = await sdk.event.subscribe(undefined, { signal: turnAbort.signal }).catch((e) => { - surface(eventErrorName, e instanceof Error ? e.message : String(e)) - return undefined - }) - if (!turnEvents) return undefined + const run = async () => { + const turnEvents = await sdk.event.subscribe(undefined, { signal: turnAbort.signal }).catch((e) => { + surface(eventErrorName, e instanceof Error ? e.message : String(e)) + return undefined + }) + if (!turnEvents || turnAbort.signal.aborted) return undefined - let sendFailed!: () => void - const sendFailure = new Promise((resolveFailure) => { - sendFailed = resolveFailure - }) - let streamFailed = false - const messageID = MessageID.ascending() - const promptPromise = (async (): Promise => { - // The previous turn may have published idle just before releasing its - // session lock. Retry that narrow race, but only after definitive - // proof this exact message was not persisted. - for (let attempt = 0; ; attempt++) { - const res = (await sdk.session - .prompt( - { - sessionID, - messageID, - agent, - model: args.model ? Provider.parseModel(args.model) : undefined, - variant: args.variant, - ...(audienceSystem ? { system: audienceSystem } : {}), - // Synthetic harness text must never replace the authoritative - // original task pin when this session is resumed. - parts: [{ type: "text", text, synthetic: true }], - }, - { signal: turnAbort.signal }, - ) - .catch((e) => ({ error: e }) as SendResult)) as SendResult - if (!res?.error) return res - const status = res.response?.status - const detail = RunAccounting.serializeSessionError(res.error) - const retryable = - status === 409 || RunAccounting.isRetryableStatus(status) || RunAccounting.isRetryableThrown(res.error) - if (!retryable) throw new Error(`${humanName} prompt failed: ${detail}`) - - const acceptance = await acceptanceState(messageID) - if (acceptance === "accepted") return undefined - if (acceptance === "unknown") { - throw new Error( - `${humanName} failed and acceptance could not be determined; ` + - `not retrying to avoid duplication — ${detail}`, - ) - } - if (attempt >= 8) { - emit(eventName, { error: detail }) - throw new Error(`${humanName} prompt failed: ${detail}`) + // altimate_change start — synthetic work shares the clock; budget finalization has its own allowance + if (!options) startWorkClock() + // altimate_change end + + let sendFailed!: () => void + const sendFailure = new Promise((resolveFailure) => { + sendFailed = resolveFailure + }) + let streamFailed = false + const messageID = MessageID.ascending() + beginRequest(messageID) + const promptPromise = (async (): Promise => { + // The previous turn may have published idle just before releasing its + // session lock. Retry that narrow race, but only after definitive + // proof this exact message was not persisted. + for (let attempt = 0; ; attempt++) { + if (turnAbort.signal.aborted) return undefined + const res = (await sdk.session + .prompt( + { + sessionID, + messageID, + agent, + model: args.model ? Provider.parseModel(args.model) : undefined, + variant: args.variant, + ...(audienceSystem ? { system: audienceSystem } : {}), + // Synthetic harness text must never replace the authoritative + // original task pin when this session is resumed. + parts: [{ type: "text", text, synthetic: true }], + }, + // altimate_change start — finalization disables tools while preserving its effort setting + { signal: turnAbort.signal, headers: budgetHeaders(options !== undefined) }, + // altimate_change end + ) + .catch((e) => ({ error: e }) as SendResult)) as SendResult + if (!res?.error) return res + const status = res.response?.status + const detail = RunAccounting.serializeSessionError(res.error) + const retryable = + status === 409 || RunAccounting.isRetryableStatus(status) || RunAccounting.isRetryableThrown(res.error) + if (!retryable) throw new Error(`${humanName} prompt failed: ${detail}`) + + const acceptance = await acceptanceState(messageID, turnAbort.signal) + if (acceptance === "accepted") return undefined + if (acceptance === "unknown") { + throw new Error( + `${humanName} failed and acceptance could not be determined; ` + + `not retrying to avoid duplication — ${detail}`, + ) + } + if (attempt >= 8) { + emit(eventName, { error: detail }) + throw new Error(`${humanName} prompt failed: ${detail}`) + } + await new Promise((resolve) => setTimeout(resolve, 250 * (attempt + 1))) } - await new Promise((resolve) => setTimeout(resolve, 250 * (attempt + 1))) - } - })() - promptPromise.catch(() => sendFailed()) - await Promise.race([ - loop(turnEvents.stream, { requireBusyFirst: true }).catch((e) => { - streamFailed = true - surface(eventErrorName, e instanceof Error ? e.message : String(e)) - turnAbort.abort() - }), - sendFailure, - ]) - const result = await promptPromise.catch((e) => { - if (!streamFailed) surface(sendErrorName, e instanceof Error ? e.message : String(e)) - return undefined - }) - turnAbort.abort() - return result + })() + promptPromise.catch(() => sendFailed()) + await Promise.race([ + loop(turnEvents.stream, { requireBusyFirst: true, turnLimit: options?.turnLimit, signal: turnAbort.signal }).catch( + (e) => { + streamFailed = true + surface(eventErrorName, e instanceof Error ? e.message : String(e)) + turnAbort.abort() + }, + ), + sendFailure, + ]) + const result = await promptPromise.catch((e) => { + if (!streamFailed) surface(sendErrorName, e instanceof Error ? e.message : String(e)) + return undefined + }) + return result + } + try { + if (!options) return await run() + const deadline = new Promise((resolve) => { + timer = setTimeout(() => { + surface("BudgetFinalizationTimeout", `no final reply within ${options.timeoutMs}ms`) + timedOut = true + turnAbort.abort() + void sdk.session.abort({ sessionID }, { signal: AbortSignal.timeout(5_000) }).catch(() => {}) + resolve(undefined) + }, options.timeoutMs) + }) + return await Promise.race([run(), deadline]) + } finally { + clearTimeout(timer) + turnAbort.abort() + // altimate_change start — an ended synthetic phase must not fire a late deadline + workActive = false + // altimate_change end + } } // altimate_change end let sendResult: SendResult | undefined let sendFailure: unknown for (let sendAttempt = 0; ; sendAttempt++) { + // altimate_change start — an expired budget must not enqueue another retry + if (timeExhausted()) { + // A rejected enqueue has no generation that could publish idle. + eventAbort.abort() + break + } + // altimate_change end let reason: string try { const res = (await send()) as SendResult @@ -1417,7 +1840,14 @@ You are speaking to a non-technical business executive. Follow these rules stric // evidence that the message did NOT land. Re-sending an accepted prompt // duplicates the task; re-sending on an UNKNOWN state risks the same, // so that case fails the run loudly instead of guessing. - const acceptance = await acceptanceState(sendMessageID) + const acceptance = await acceptanceState( + sendMessageID, + AbortSignal.any([eventAbort.signal, timeBudgetStop.signal]), + ) + if (timeExhausted()) { + sendFailure = timeBudgetStop.signal.reason + break + } if (acceptance === "accepted") { // The failure was on the response path only — the run is in flight, // so fall through and let the event loop drain to idle. @@ -1448,11 +1878,24 @@ You are speaking to a non-technical business executive. Follow these rules stric UI.Style.TEXT_NORMAL + ` retrying prompt (${sendAttempt + 1}/${retryMax}) in ${delay}ms — ${reason}`, ) } - await new Promise((resolve) => setTimeout(resolve, delay)) + // altimate_change start — a retry backoff cannot outlive the work deadline + await sleep(delay, undefined, { signal: timeBudgetStop.signal }).catch(() => {}) + // altimate_change end } // the prompt response carries the TERMINAL assistant message — // inspect it for swallowed abnormal endings (see RunAccounting.onPromptResult). - if (sendFailure) { + // altimate_change start — cancellation during bootstrap may end the POST without an assistant body + const deadlineCancelledRequest = + timeBudgetStop.signal.aborted && + [sendFailure, sendResult?.error].some( + (cause) => cause === timeBudgetStop.signal.reason || (cause instanceof Error && cause.name === "AbortError"), + ) + if (timeExhausted() && timeAbortRequested && (!assistantStarted || deadlineCancelledRequest) && !eventLoopFailure) { + // Intentional POST cancellation preserves the budget finalization allowance, + // including an active generation that already emitted an assistant message. + eventAbort.abort() + } else if (sendFailure) { + // altimate_change end // Losing SSE intentionally aborts the synchronous POST. Attribute that // derivative AbortError to the original stream failure; otherwise it // overwrites timeout/error classification and the actionable message. @@ -1478,6 +1921,11 @@ You are speaking to a non-technical business executive. Follow these rules stric eventAbort.abort() if (eventLoopFailure && !error) error = RunAccounting.serializeSessionError(eventLoopFailure) // altimate_change end + // altimate_change start — settle deadline writes before a new prompt generation can begin + workActive = false + await timeBudgetReminder + await timeBudgetAbort + // altimate_change end // altimate_change start — one-shot confirm-DONE challenge phase. // Reached only when the idle-done detector fired (all hard preconditions @@ -1550,8 +1998,37 @@ You are speaking to a non-technical business executive. Follow these rules stric // synthetic turn asks for it, naming the failed tool so it is not retried. // If the model still says nothing, a synthesised line says what happened and // the exit code says the request was not answered. - if (!answered() && !accounting.fatal && assistantStarted) { - const directive = SessionTermination.replyAfterSilentTurn(lastToolFailure) + // A budget abort permits one bounded finalization with a local allowance. + // Budget attribution is retained; an answered time-budget finalization can + // recover the exit status. Turn-limit exhaustion retains its nonzero status. + // A silent stop exactly at the work limit has no in-flight generation to + // abort. Enter finalization directly instead of spending a reply just to + // discover that it exceeds the same budget. + if (!answered() && assistantStarted && !accounting.fatal && args.maxTurns && accounting.turnCount >= args.maxTurns) { + accounting.onBudgetExhausted() + error = `Budget exceeded: reached ${args.maxTurns} assistant turn${args.maxTurns !== 1 ? "s" : ""} limit` + if (!emit("budget_exhausted", { limit: args.maxTurns })) { + UI.println(UI.Style.TEXT_WARNING_BOLD + "!", UI.Style.TEXT_NORMAL + ` ${error}. Requesting a final reply.`) + } + } + // altimate_change start — time exhaustion during a silent reply still gets the bounded finalization + // At most an ordinary silent reply followed by one budget finalization. + // A hard deadline must finalize even if the interrupted request emitted text. + for ( + let replyAttempt = 0; + replyAttempt < 2 && (timeExhausted() || !answered()) && (assistantStarted || timeExhausted()); + replyAttempt++ + ) { + await timeBudgetReminder + await timeBudgetAbort + const finalizationLimit = accounting.takeBudgetFinalizationAllowance() + if (accounting.fatal && finalizationLimit === undefined) break + if (finalizationLimit !== undefined) stopTimeBudget() + // altimate_change end + const directive = + finalizationLimit !== undefined + ? SessionTermination.REPLY_AFTER_BUDGET + : SessionTermination.replyAfterSilentTurn(lastToolFailure) if (!emit("silent_turn_reply", { failure: lastToolFailure ?? null })) { UI.println( UI.Style.TEXT_WARNING_BOLD + "!", @@ -1559,27 +2036,50 @@ You are speaking to a non-technical business executive. Follow these rules stric ` the turn ended without a reply${lastToolFailure ? ` after \`${lastToolFailure.tool}\` failed` : ""} — asking for one`, ) } - const replyResult = await runSyntheticTurn(directive, "reply") + const replyResult = await runSyntheticTurn( + directive, + "reply", + finalizationLimit !== undefined ? { turnLimit: finalizationLimit, timeoutMs: 30_000 } : undefined, + ) accounting.onPromptResult(replyResult?.data?.info) + // altimate_change start — only an answered finalization can recover the hard time abort + if (finalizationLimit !== undefined) accounting.completeBudgetFinalization(answered()) + // altimate_change end + // altimate_change start — re-enter the same finalization gate if this work reply hit the hard deadline + if (!answered() && finalizationLimit === undefined && timeExhausted()) continue + // altimate_change end // A reply turn that died in transport (stream or send failure) has already // recorded its own cause; silence after that is not the model's, so it is // neither attributed to it nor allowed to overwrite the real error. - if (!answered() && !accounting.fatal) { + if (!answered() && (!accounting.fatal || finalizationLimit !== undefined)) { // The tool is named; its diagnostic is not repeated here. It was already // printed when the call failed, and this line also goes to `--output`, which // is documented as the answer — not a place for raw tool output. - const line = lastToolFailure + const line = finalizationLimit !== undefined + ? "No final answer was produced: the work budget was exhausted and the best-effort reply did not provide an answer." + : lastToolFailure ? `No answer was produced: the turn ended after \`${lastToolFailure.tool}\` failed.` : "No answer was produced: the turn ended without a reply." if (!emit("silent_turn", { failure: lastToolFailure ?? null, message: line })) { process.stdout.write(line + EOL) } - if (args.output) outputParts.push(line) - accounting.onSessionError("SilentTurn", line) + // altimate_change start — retain partial findings when bounded finalization cannot answer + if (args.output) outputParts.note(line, { preserveLastText: finalizationLimit !== undefined }) + // altimate_change end + if (finalizationLimit === undefined) accounting.onSessionError("SilentTurn", line) } + // altimate_change start — no repeated silent replies or repeated finalizations + break + // altimate_change end } // altimate_change end + // altimate_change start — capture model-work elapsed time before unrelated exit flushes + stopTimeBudget() + const finalBudgetMetadata = budgetMetadata() + tracer?.setRunBudget(finalBudgetMetadata) + // altimate_change end + // altimate_change start — a cold workspace skill sync outlives a short // turn, and this process exits the moment the turn ends. Without this the // staged tree is discarded on exit and, since nothing was persisted, the @@ -1636,7 +2136,9 @@ You are speaking to a non-technical business executive. Follow these rules stric // are distinguishable in the run output (rc alone conflates them); // done_reason distinguishes explicit_done vs idle_heuristic vs none. const termination = accounting.termination() - if (!emit("termination", { ...termination }) && process.stdout.isTTY) { + // altimate_change start — include wall-clock accounting alongside turn-budget metadata + if (!emit("termination", { ...termination, ...finalBudgetMetadata }) && process.stdout.isTTY) { + // altimate_change end UI.println( UI.Style.TEXT_DIM + `why_model_stopped=${termination.why_model_stopped} why_harness_stopped=${termination.why_harness_stopped} done_reason=${termination.done_reason}` + @@ -1649,8 +2151,13 @@ You are speaking to a non-technical business executive. Follow these rules stric if (tracer) { Tracer.setActive(null) // altimate_change start — persist only overflow errors that never reached a recovery event - const traceError = [error, ...recoverableOverflowTraceErrors.values()].filter(Boolean).join(EOL) || undefined - const tracePath = await tracer.endTrace(traceError) + // altimate_change start — warnings become a fatal trace outcome only if no final answer recovered the budget + const traceError = [error, ...recoverableOverflowTraceErrors.values(), ...(accounting.fatal ? budgetWarnings : [])] + .filter(Boolean).join(EOL) || undefined + // altimate_change end + traceAbort.abort() + await traceEventsDone + const tracePath = await runTracing?.finish(traceError) // altimate_change end if (tracePath) { emit("trace_saved", { path: tracePath }) @@ -1663,7 +2170,9 @@ You are speaking to a non-technical business executive. Follow these rules stric // Write accumulated text output to file if --output was specified if (args.output) { const outputPath = path.resolve(args.output) - const content = outputParts.join("\n\n") || "(no text output — tool-only response)" + // altimate_change start — render collected assistant text for the output file + const content = outputParts.content() + // altimate_change end await Bun.write(outputPath, content) process.stderr.write(`\n✓ Output saved to: ${outputPath}\n`) } diff --git a/packages/opencode/src/cli/tui/worker.ts b/packages/opencode/src/cli/tui/worker.ts index 87e1cc7976..9d0637e330 100644 --- a/packages/opencode/src/cli/tui/worker.ts +++ b/packages/opencode/src/cli/tui/worker.ts @@ -23,6 +23,9 @@ import { disposeAllInstancesAndEmitGlobalDisposed } from "@/server/global-lifecy // carries the fork trace fixes (PR #867/#895). subscribeTraceConsumer's own SDK /event subscription // does NOT receive this worker's in-process (Server.Default().fetch) session events. import { TraceConsumer } from "@/altimate/observability/trace-consumer" +// altimate_change start — report isolated trace subscriber failures without interrupting the worker +import { Log } from "@/altimate/util/log" +// altimate_change end import { Instance } from "@/project/instance" // altimate_change — onboarding telemetry: flush this thread's buffer in rpc.shutdown() import { Telemetry } from "@/altimate/telemetry" @@ -105,7 +108,13 @@ let traceTail: Promise = traceReady.catch(() => {}) GlobalBus.on("event", (event) => { Rpc.emit("global.event", event) // altimate_change start — trace: feed bus events to the per-session trace consumer, serialized. - traceTail = traceTail.then(() => traceConsumer.handleEvent(event.payload)).catch(() => {}) + traceTail = traceTail + .then(() => traceConsumer.handleEvent(event.payload)) + .catch((error) => { + Log.Default.debug("[tracing] worker event capture failed", { + error: error instanceof Error ? error.message : String(error), + }) + }) // altimate_change end }) diff --git a/packages/opencode/src/mcp/index.ts b/packages/opencode/src/mcp/index.ts index 5efa2c0538..da8e75a1ce 100644 --- a/packages/opencode/src/mcp/index.ts +++ b/packages/opencode/src/mcp/index.ts @@ -47,6 +47,9 @@ import { InstanceState } from "@/effect/instance-state" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" import { McpCatalog } from "./catalog" +// altimate_change start — reserved tool IDs must use the permission matcher's platform semantics. +import { Wildcard } from "@/util/wildcard" +// altimate_change end // altimate_change start — persist enabled flag + telemetry import { findAllConfigPaths, listMcpInConfig, addMcpToConfig, readMcpEntryFromDisk } from "./config" import { Global } from "@opencode-ai/core/global" @@ -1246,6 +1249,10 @@ export const layer = Layer.effect( const timeout = requestTimeout(s, clientName, mcpConfig, defaultTimeout) for (const mcpTool of listed) { const key = McpCatalog.sanitize(clientName) + "_" + McpCatalog.sanitize(mcpTool.name) + // altimate_change start — reserve the native finalizer's permission and echo identity, + // including when ALTIMATE_ANSWER_COMMIT=0 disables the native tool. + if (Wildcard.match(key, "answer_commit")) continue + // altimate_change end // attach the original client name for source classification downstream. result[key] = Object.assign(McpCatalog.convertTool(mcpTool, client, timeout), { client: clientName }) } diff --git a/packages/opencode/src/provider/error.ts b/packages/opencode/src/provider/error.ts index fd8c849f2c..67bb6237cf 100644 --- a/packages/opencode/src/provider/error.ts +++ b/packages/opencode/src/provider/error.ts @@ -19,8 +19,11 @@ export namespace ProviderError { } } + // Leading words of the user-facing message for a stalled request. + export const MODEL_STOPPED_RESPONDING = "The model stopped responding" + export class ResponseStreamError extends Error { - public override readonly name = "ProviderResponseStreamError" + public override readonly name: string = "ProviderResponseStreamError" constructor(message: string, options?: ErrorOptions) { super(message, options) @@ -28,6 +31,16 @@ export namespace ProviderError { } // altimate_change end + // altimate_change start — retry model-stream stalls only before any response bytes were emitted + export class StreamIdleTimeoutError extends ResponseStreamError { + public override readonly name = "ProviderStreamIdleTimeoutError" + + constructor(public readonly ms: number, public readonly emitted: boolean) { + super(`Response stream timed out after ${ms}ms without a chunk`) + } + } + + // altimate_change end // Adapted from overflow detection patterns in: // https://github.com/badlogic/pi-mono/blob/main/packages/ai/src/utils/overflow.ts const OVERFLOW_PATTERNS = [ diff --git a/packages/opencode/src/provider/models-snapshot.ts b/packages/opencode/src/provider/models-snapshot.ts index 4c8f7f9948..389896767e 100644 --- a/packages/opencode/src/provider/models-snapshot.ts +++ b/packages/opencode/src/provider/models-snapshot.ts @@ -1,2 +1,2 @@ // Auto-generated by build.ts - do not edit -export const snapshot = {"subconscious":{"id":"subconscious","env":["SUBCONSCIOUS_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.subconscious.dev/v1","name":"Subconscious","doc":"https://docs.subconscious.dev","models":{"subconscious/glm-5.2":{"id":"subconscious/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"subconscious/tim-qwen3.6-27b":{"id":"subconscious/tim-qwen3.6-27b","name":"TIM-Qwen3.6 27B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":5000},"cost":{"input":0.3,"output":3,"cache_read":0.15}}}},"tokengo":{"id":"tokengo","env":["TOKENGO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokengo.com/v1","name":"TokenGo","doc":"https://www.tokengo.com/docs","models":{"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":2.65,"cache_read":0.2}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.098,"output":0.196,"cache_read":0.028}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0.2174,"output":0.326,"cache_read":0.06}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.19,"output":0.71,"cache_read":0.06}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.025,"cache_read":0.015}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.89,"output":3.2647,"cache_read":0.2226}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}}}},"modelis":{"id":"modelis","env":["MODELIS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://modelishub.com/v1","name":"Modelis","doc":"https://modelishub.com/pricing","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.0983,"output":0.1966}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]},{"type":"toggle"}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","max"]},{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5}},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":3,"output":9}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.768,"output":3.072}}}},"bothub":{"id":"bothub","env":["BOTHUB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://openai.bothub.ru/v1","name":"Bothub","doc":"https://bothub.ru/models","models":{"nemotron-3-ultra-550b-a55b:free":{"id":"nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra (free)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"gemma-4-31b-it:free":{"id":"gemma-4-31b-it:free","name":"Gemma 4 31B IT (free)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}}}},"greenpt":{"id":"greenpt","env":["GREENPT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.greenpt.ai/v1","name":"GreenPT","doc":"https://docs.greenpt.ai","models":{"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.1596,"output":0.399,"cache_read":0.0456}},"glm-5.2-caveman-ultra":{"id":"glm-5.2-caveman-ultra","name":"GLM-5.2 Caveman Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"glm-5.2-ponytail-ultra":{"id":"glm-5.2-ponytail-ultra","name":"GLM-5.2 Ponytail Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"glm-5.2-honey-ultra":{"id":"glm-5.2-honey-ultra","name":"GLM-5.2 Honey Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7524,"output":4.275,"cache_read":0.2508}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.1938,"output":1.129,"cache_read":0.0627}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.9006,"output":4.389,"cache_read":0.1881}},"green-l":{"id":"green-l","name":"Green L","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912}},"devstral-2-123b-instruct-2512":{"id":"devstral-2-123b-instruct-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":16384},"cost":{"input":0.57,"output":2.736}},"glm-5.2-honey-lite":{"id":"glm-5.2-honey-lite","name":"GLM-5.2 Honey Lite","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":1.083}},"green-l-raw":{"id":"green-l-raw","name":"Green L Raw","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.798,"output":4.959}},"glm-5.2-caveman":{"id":"glm-5.2-caveman","name":"GLM-5.2 Caveman","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3.762,"output":18.81,"cache_read":0.9405}},"gemma-3-27b-it":{"id":"gemma-3-27b-it","name":"Gemma 3 27B","description":"Google Gemma 3 multimodal model for chat, reasoning, and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":40000,"output":8192},"cost":{"input":0.342,"output":0.684}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.342,"output":2.052}},"green-s":{"id":"green-s","name":"Green S","description":"GreenPT speech-to-text model for pre-recorded and live transcription","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0}},"glm-5.2-caveman-lite":{"id":"glm-5.2-caveman-lite","name":"GLM-5.2 Caveman Lite","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"mistral-medium-3.5-128b":{"id":"mistral-medium-3.5-128b","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":2.052,"output":10.26}},"glm-5.2-ponytail":{"id":"glm-5.2-ponytail","name":"GLM-5.2 Ponytail","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"gemma4":{"id":"gemma4","name":"gemma4","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.57,"output":1.71}},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.228,"output":0.456}},"glm-5.2-honey":{"id":"glm-5.2-honey","name":"GLM-5.2 Honey","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"status":"deprecated","cost":{"input":1.756,"output":5.518}},"glm-5.2-ponytail-lite":{"id":"glm-5.2-ponytail-lite","name":"GLM-5.2 Ponytail Lite","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen3 235B MoE instruct model for long-context multilingual chat and reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":1.026,"output":3.078}},"green-r-raw":{"id":"green-r-raw","name":"Green R Raw","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.228,"output":0.798}},"holo2-30b-a3b":{"id":"holo2-30b-a3b","name":"Holo2 30B A3B","description":"H Company Holo2 vision model for GUI navigation and computer-use agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11","last_updated":"2025-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":22016,"output":16384},"cost":{"input":0.399,"output":0.969}},"voxtral-small-24b-2507":{"id":"voxtral-small-24b-2507","name":"Voxtral Small 24B","description":"Mistral Voxtral audio-understanding model for speech and transcription tasks","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.228,"output":0.513}},"green-s-pro":{"id":"green-s-pro","name":"Green S Pro","description":"GreenPT advanced speech-to-text model with multilingual transcription support","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-02","last_updated":"2025-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0}},"kimi-k2.6-fast":{"id":"kimi-k2.6-fast","name":"Kimi K2.6 Fast","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":1.655,"output":8.778}},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.285,"output":0.285}},"green-r":{"id":"green-r","name":"Green R","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":16384},"cost":{"input":1.254,"output":1.254}}}},"qiniu-ai":{"id":"qiniu-ai","env":["QINIU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.qnaigc.com/v1","name":"Qiniu","doc":"https://developer.qiniu.com/aitokenapi","models":{"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":4096}},"kling-v2-6":{"id":"kling-v2-6","name":"Kling-V2 6","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-13","last_updated":"2026-01-13","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":99999999,"output":99999999}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-12","last_updated":"2025-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":4096}},"gemini-3.0-pro-image-preview":{"id":"gemini-3.0-pro-image-preview","name":"Gemini 3.0 Pro Image Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Gemini 2.5 Flash Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-22","last_updated":"2025-10-22","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":32768,"output":8192}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-12","last_updated":"2025-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768}},"gemini-2.0-flash":{"id":"gemini-2.0-flash","name":"Gemini 2.0 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":8192}},"claude-3.5-sonnet":{"id":"claude-3.5-sonnet","name":"Claude 3.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-09","last_updated":"2025-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8200}},"doubao-seed-2.0-mini":{"id":"doubao-seed-2.0-mini","name":"Doubao Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen-Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":4096}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":64000}},"gemini-3.0-pro-preview":{"id":"gemini-3.0-pro-preview","name":"Gemini 3.0 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000}},"doubao-seed-1.6":{"id":"doubao-seed-1.6","name":"Doubao-Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40000,"output":4096}},"mimo-v2-flash":{"id":"mimo-v2-flash","name":"Mimo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":8192}},"claude-4.5-opus":{"id":"claude-4.5-opus","name":"Claude 4.5 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"Qwen 2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"claude-4.0-opus":{"id":"claude-4.0-opus","name":"Claude 4.0 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000}},"qwen3-max-preview":{"id":"qwen3-max-preview","name":"Qwen3 Max Preview","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-06","last_updated":"2025-09-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000}},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"Doubao 1.5 Pro 32k","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":12000}},"doubao-seed-2.0-code":{"id":"doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-22","last_updated":"2026-02-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen2.5-vl-7b-instruct":{"id":"qwen2.5-vl-7b-instruct","name":"Qwen 2.5 VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"claude-4.1-opus":{"id":"claude-4.1-opus","name":"Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000}},"qwen3-30b-a3b-thinking-2507":{"id":"qwen3-30b-a3b-thinking-2507","name":"Qwen3 30b A3b Thinking 2507","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":126000,"output":32000}},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen-vl-max-2025-01-25":{"id":"qwen-vl-max-2025-01-25","name":"Qwen VL-MAX-2025-01-25","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"doubao-seed-2.0-pro":{"id":"doubao-seed-2.0-pro","name":"Doubao Seed 2.0 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536}},"glm-4.5":{"id":"glm-4.5","name":"GLM 4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304}},"claude-3.5-haiku":{"id":"claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192}},"doubao-seed-1.6-thinking":{"id":"doubao-seed-1.6-thinking","name":"Doubao-Seed 1.6 Thinking","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"doubao-1.5-vision-pro":{"id":"doubao-1.5-vision-pro","name":"Doubao 1.5 Vision Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"doubao-seed-1.6-flash":{"id":"doubao-seed-1.6-flash","name":"Doubao-Seed 1.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":80000}},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"Qwen3 30b A3b Instruct 2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40000,"output":4096}},"qwen3-vl-30b-a3b-thinking":{"id":"qwen3-vl-30b-a3b-thinking","name":"Qwen3-Vl 30b A3b Thinking","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-09","last_updated":"2026-02-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000}},"claude-3.7-sonnet":{"id":"claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen 3 235B A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235b A22B Instruct 2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":64000}},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"DeepSeek-V3-0324","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"doubao-1.5-thinking-pro":{"id":"doubao-1.5-thinking-pro","name":"Doubao 1.5 Thinking Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"gemini-3.0-flash-preview":{"id":"gemini-3.0-flash-preview","name":"Gemini 3.0 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000}},"claude-4.5-sonnet":{"id":"claude-4.5-sonnet","name":"Claude 4.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"qwen-max-2025-01-25":{"id":"qwen-max-2025-01-25","name":"Qwen2.5-Max-2025-01-25","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-14","last_updated":"2025-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":4096}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"doubao-seed-2.0-lite":{"id":"doubao-seed-2.0-lite","name":"Doubao Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"claude-4.5-haiku":{"id":"claude-4.5-haiku","name":"Claude 4.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":64000}},"claude-4.0-sonnet":{"id":"claude-4.0-sonnet","name":"Claude 4.0 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"deepseek-v3.1":{"id":"deepseek-v3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"stepfun-ai/gelab-zero-4b-preview":{"id":"stepfun-ai/gelab-zero-4b-preview","name":"Stepfun-Ai/Gelab Zero 4b Preview","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096}},"meituan/longcat-flash-lite":{"id":"meituan/longcat-flash-lite","name":"Meituan/Longcat-Flash-Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":320000}},"meituan/longcat-flash-chat":{"id":"meituan/longcat-flash-chat","name":"Meituan/Longcat-Flash-Chat","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-11-05","last_updated":"2025-11-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Stepfun/Step-3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"output":4096}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"Xiaomi/Mimo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"Minimax/Minimax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"Minimax/Minimax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"Minimax/Minimax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"Minimax/Minimax-M2.5 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"deepseek/deepseek-math-v2":{"id":"deepseek/deepseek-math-v2","name":"Deepseek/Deepseek-Math-V2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":160000,"output":160000}},"deepseek/deepseek-v3.2-exp-thinking":{"id":"deepseek/deepseek-v3.2-exp-thinking","name":"DeepSeek/DeepSeek-V3.2-Exp-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.1-terminus-thinking":{"id":"deepseek/deepseek-v3.1-terminus-thinking","name":"DeepSeek/DeepSeek-V3.1-Terminus-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek/DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.2-251201":{"id":"deepseek/deepseek-v3.2-251201","name":"Deepseek/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"x-AI/Grok-Code-Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":10000}},"x-ai/grok-4-fast-reasoning":{"id":"x-ai/grok-4-fast-reasoning","name":"X-Ai/Grok-4-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4.1-fast-non-reasoning":{"id":"x-ai/grok-4.1-fast-non-reasoning","name":"X-Ai/Grok 4.1 Fast Non Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4.1-fast-reasoning":{"id":"x-ai/grok-4.1-fast-reasoning","name":"X-Ai/Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":20000000,"output":2000000}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"x-AI/Grok-4-Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-20","last_updated":"2025-09-20","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4-fast-non-reasoning":{"id":"x-ai/grok-4-fast-non-reasoning","name":"X-Ai/Grok-4-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"x-AI/Grok-4.1-Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"OpenAI/GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000}},"openai/gpt-5":{"id":"openai/gpt-5","name":"OpenAI/GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":100000}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-07","last_updated":"2025-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":100000}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"Z-Ai/GLM 4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"Z-AI/GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-10-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"z-ai/autoglm-phone-9b":{"id":"z-ai/autoglm-phone-9b","name":"Z-Ai/Autoglm Phone 9b","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":12800,"output":4096}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"Z-Ai/GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}}}},"ambient":{"id":"ambient","env":["AMBIENT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ambient.xyz/v1","name":"Ambient","doc":"https://ambient.xyz","models":{"ambient/large":{"id":"ambient/large","name":"Ambient Large","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.19,"output":1.14,"cache_read":0.03,"cache_write":0}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08,"cache_write":0}},"zai-org/GLM-5.2-FP8":{"id":"zai-org/GLM-5.2-FP8","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.2,"output":4.2,"cache_read":0.26,"cache_write":0}},"zai-org/GLM-5.1-FP8":{"id":"zai-org/GLM-5.1-FP8","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0,"cache_write":0}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.08,"output":0.18,"cache_read":0.016,"cache_write":0}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.028,"cache_write":0}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.2,"cache_write":0}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.69,"output":3.49,"cache_read":0.14,"cache_write":0}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0}}}},"agentrouter":{"id":"agentrouter","env":["AGENTROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://agentrouter.org/v1","name":"AgentRouter","doc":"https://agentrouter.org/docs/opencode.html","models":{"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://agentrouter.org/v1"}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://agentrouter.org/v1"}}}},"xiaomi-token-plan-cn":{"id":"xiaomi-token-plan-cn","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-cn.xiaomimimo.com/v1","name":"Xiaomi Token Plan (China)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}}}},"nano-gpt":{"id":"nano-gpt","env":["NANO_GPT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://nano-gpt.com/api/v1","name":"NanoGPT","doc":"https://docs.nano-gpt.com","models":{"glm-4.1v-thinking-flashx":{"id":"glm-4.1v-thinking-flashx","name":"GLM 4.1V Thinking FlashX","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"input":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"claude-opus-4-thinking:8192":{"id":"claude-opus-4-thinking:8192","name":"Claude 4 Opus Thinking (8K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat 2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":262144},"cost":{"input":0.75,"output":3,"cache_read":0.015}},"gemma-4-31b-it-garnet":{"id":"gemma-4-31b-it-garnet","name":"Garnet","description":"Garnet is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"exa-answer":{"id":"exa-answer","name":"Exa (Answer)","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-23","last_updated":"2025-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"input":4096,"output":4096},"cost":{"input":2.5,"output":2.5}},"gemini-2.0-pro-exp-02-05":{"id":"gemini-2.0-pro-exp-02-05","name":"Gemini 2.0 Pro 0205","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2097152,"input":2097152,"output":8192},"cost":{"input":1.989,"output":7.956,"cache_read":0.49725}},"Meta-Llama-3-1-8B-Instruct-FP8":{"id":"Meta-Llama-3-1-8B-Instruct-FP8","name":"Llama 3.1 8B (decentralized)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.02,"output":0.03,"cache_read":0.01}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.17,"output":1.53,"cache_read":0.085}},"ernie-5.0-thinking-preview":{"id":"ernie-5.0-thinking-preview","name":"Ernie 5.0 Thinking Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1,"output":3.5,"cache_read":0.5}},"mercury-coder-small":{"id":"mercury-coder-small","name":"Mercury Coder Small","description":"Model by Inception AI. A diffusion large language model that runs incredibly quickly (500+ tokens/second) while matching Claude 3.5 Haiku and GPT-4o-mini. 1st in speed on Copilot arena, and matching 2nd in quality.","family":"mercury","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125}},"gemma-4-26b-a4b-it-luminous":{"id":"gemma-4-26b-a4b-it-luminous","name":"Luminous Mirror","description":"Luminous Mirror is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"claude-sonnet-4-thinking:32768":{"id":"claude-sonnet-4-thinking:32768","name":"Claude 4 Sonnet Thinking (32K)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"gemma-4-26b-a4b-it-shadowsiren":{"id":"gemma-4-26b-a4b-it-shadowsiren","name":"Shadow Siren","description":"Shadow Siren is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"auto-model-premium":{"id":"auto-model-premium","name":"Auto model (Premium)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"mistral-code-latest":{"id":"mistral-code-latest","name":"Mistral Code Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15}},"qwen3.5-122b-a10b:thinking":{"id":"qwen3.5-122b-a10b:thinking","name":"Qwen3.5 122B A10B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.437,"output":3.496,"cache_read":0.103788}},"doubao-seed-1-6-250615":{"id":"doubao-seed-1-6-250615","name":"Doubao Seed 1.6","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":16384},"cost":{"input":0.204,"output":0.51,"cache_read":0.102}},"Gemma-4-26B-A4B-MeroMero":{"id":"Gemma-4-26B-A4B-MeroMero","name":"Gemma 4 26B A4B MeroMero","description":"Gemma 4 26B A4B MeroMero is an NVFP4 multimodal mixture-of-experts fine-tune for emotive dialogue, relationship scenes, creative writing, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"qwen-max":{"id":"qwen-max","name":"Qwen 2.5 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":1.5997,"output":6.392,"cache_read":0.79985}},"claw-low":{"id":"claw-low","name":"Claw Low","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0.08333}},"doubao-seed-2-0-mini-260215":{"id":"doubao-seed-2-0-mini-260215","name":"Doubao Seed 2.0 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32000},"cost":{"input":0.0493,"output":0.4845,"cache_read":0.02465}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.27,"output":2.16,"cache_read":0.135}},"claude-opus-4-1-thinking:1024":{"id":"claude-opus-4-1-thinking:1024","name":"Claude 4.1 Opus Thinking (1K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"gemma-4-31b-it-gemsicle":{"id":"gemma-4-31b-it-gemsicle","name":"Gemsicle","description":"Gemsicle is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04}},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.225,"output":1.8,"cache_read":0.1125}},"claude-haiku-4-5-20251001-thinking":{"id":"claude-haiku-4-5-20251001-thinking","name":"Claude Haiku 4.5 Thinking","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"gemini-2.5-flash-preview-09-2025-thinking":{"id":"gemini-2.5-flash-preview-09-2025-thinking","name":"Gemini 2.5 Flash Preview (09/2025) – Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemma-4-26b-a4b-it-opusdistill":{"id":"gemma-4-26b-a4b-it-opusdistill","name":"Opus Distill","description":"Opus Distill is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"glm-4-plus-0111":{"id":"glm-4-plus-0111","name":"GLM 4 Plus 0111","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":9.996,"output":9.996,"cache_read":4.998}},"gemini-2.0-pro-reasoner":{"id":"gemini-2.0-pro-reasoner","name":"Gemini 2.0 Pro Reasoner","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-05","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":1.292,"output":4.998,"cache_read":0.323}},"Qwen3.5-27B-Queen-Derestricted":{"id":"Qwen3.5-27B-Queen-Derestricted","name":"Qwen3.5 27B Queen Derestricted","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"qwen-3.6-plus":{"id":"qwen-3.6-plus","name":"Qwen 3.6 Plus","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen3.6","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_read":0.0325,"cache_write":0.40625}},"Gemma-4-31B-Cognitive-Unshackled":{"id":"Gemma-4-31B-Cognitive-Unshackled","name":"Gemma 4 31B Cognitive Unshackled","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"Gemini 2.5 Pro Preview 0605","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"claude-sonnet-4-thinking:8192":{"id":"claude-sonnet-4-thinking:8192","name":"Claude 4 Sonnet Thinking (8K)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":8192},"cost":{"input":0.04998,"output":0.2006,"cache_read":0.02499}},"qwen3.7-flash:thinking":{"id":"qwen3.7-flash:thinking","name":"Qwen3.7 Flash Thinking","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038}},"qwen3.5-omni-plus":{"id":"qwen3.5-omni-plus","name":"Qwen3.5 Omni Plus","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"qwen3.5","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0,"output":0}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"asi1-mini":{"id":"asi1-mini","name":"ASI1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1,"output":1,"cache_read":0.5}},"gemini-2.5-pro-preview-03-25":{"id":"gemini-2.5-pro-preview-03-25","name":"Gemini 2.5 Pro Preview 0325","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"claude-sonnet-4-5-20250929-thinking":{"id":"claude-sonnet-4-5-20250929-thinking","name":"Claude Sonnet 4.5 Thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"glm-4-air-0111":{"id":"glm-4-air-0111","name":"GLM 4 Air 0111","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-11","last_updated":"2025-01-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":0.1394,"output":0.1394,"cache_read":0.0697}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"qwen25-vl-72b-instruct":{"id":"qwen25-vl-72b-instruct","name":"Qwen25 VL 72b","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-10","last_updated":"2025-05-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":115200},"cost":{"input":0.69989,"output":0.69989,"cache_read":0.349945}},"qwen3.5-flash:thinking":{"id":"qwen3.5-flash:thinking","name":"Qwen3.5 Flash Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"Cohere Command A (08/2025)","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":8192},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"phi-4-multimodal-instruct":{"id":"phi-4-multimodal-instruct","name":"Phi 4 Multimodal","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.07,"output":0.11,"cache_read":0.035}},"claude-opus-4-thinking:32768":{"id":"claude-opus-4-thinking:32768","name":"Claude 4 Opus Thinking (32K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"mistral-code-agent-latest":{"id":"mistral-code-agent-latest","name":"Mistral Code Agent Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"Qwen3.5-27B-BlueStar-v3-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted","name":"Qwen3.5 27B BlueStar v3 Derestricted","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"input":64000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2}},"gemma-4-e4b-it":{"id":"gemma-4-e4b-it","name":"Gemma 4 E4B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.04,"output":0.2,"cache_read":0.02}},"GLM-4.6-Derestricted-v5":{"id":"GLM-4.6-Derestricted-v5","name":"GLM 4.6 Derestricted v5","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.4,"output":1.5,"cache_read":0.2}},"azure-gpt-4o":{"id":"azure-gpt-4o","name":"Azure gpt-4o","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"doubao-seed-1-6-flash-250615":{"id":"doubao-seed-1-6-flash-250615","name":"Doubao Seed 1.6 Flash","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":16384},"cost":{"input":0.0374,"output":0.374,"cache_read":0.0187}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"Gemini 2.5 Flash Lite Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"claude-opus-4-thinking":{"id":"claude-opus-4-thinking","name":"Claude 4 Opus Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"brave-research":{"id":"brave-research","name":"Brave (Research)","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-10","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":16384},"cost":{"input":5,"output":5}},"doubao-1.5-pro-256k":{"id":"doubao-1.5-pro-256k","name":"Doubao 1.5 Pro 256k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":16384},"cost":{"input":0.799,"output":1.445,"cache_read":0.3995}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"glm-z1-airx":{"id":"glm-z1-airx","name":"GLM Z1 AirX","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"ernie-5.1:thinking":{"id":"ernie-5.1:thinking","name":"ERNIE 5.1 Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2026-05-10","last_updated":"2026-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":119000,"input":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75}},"qwen3.8-max:thinking":{"id":"qwen3.8-max:thinking","name":"Qwen3.8 Max Thinking","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"universal-summarizer":{"id":"universal-summarizer","name":"Universal Summarizer","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-23","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":30,"output":30}},"venice-uncensored":{"id":"venice-uncensored","name":"Venice Uncensored","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"venice","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-10-01","last_updated":"2025-02-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.4}},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"Gemini 2.5 Flash Preview (09/2025)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Claude 4 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"Doubao 1.5 Pro 32k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-11-20","last_updated":"2025-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.1343,"output":0.3349,"cache_read":0.06715}},"gemma-4-26b-a4b-it-moonlight":{"id":"gemma-4-26b-a4b-it-moonlight","name":"Moonlight Dusk","description":"Moonlight Dusk is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"deepseek-chat-cheaper":{"id":"deepseek-chat-cheaper","name":"DeepSeek V3/Chat Cheaper","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05}},"gemma-4-26b-a4b-it-darksoul":{"id":"gemma-4-26b-a4b-it-darksoul","name":"Dark Soul","description":"Dark Soul is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview (09/2025)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"Gemma-4-31B-Queen":{"id":"Gemma-4-31B-Queen","name":"Gemma 4 31B Queen","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"deepseek-r1-sambanova":{"id":"deepseek-r1-sambanova","name":"DeepSeek R1 Fast","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":4.998,"output":6.987,"cache_read":2.499}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.7,"cache_read":0.2}},"perplexity-academic-researcher":{"id":"perplexity-academic-researcher","name":"Perplexity Academic Researcher","description":"Sonar Reasoning Pro with Perplexity's academic search mode. Prioritizes scholarly and peer-reviewed sources from academic repositories and returns cited research synthesis.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2026-07-10","last_updated":"2026-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":115200},"cost":{"input":2,"output":8,"cache_read":1}},"claude-sonnet-4-thinking:64000":{"id":"claude-sonnet-4-thinking:64000","name":"Claude 4 Sonnet Thinking (64K)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"qwen3.7-max:thinking":{"id":"qwen3.7-max:thinking","name":"Qwen3.7 Max Thinking","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"gemma-4-26b-a4b-uncensored":{"id":"gemma-4-26b-a4b-uncensored","name":"Gemma 4 26B A4B Uncensored","description":"Gemma 4 26B A4B Uncensored is an FP8 open-weight multimodal mixture-of-experts model LoRA-tuned for fewer refusals across chat, coding, tool use, and long-context work.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"claude-opus-4-5-20251101:thinking":{"id":"claude-opus-4-5-20251101:thinking","name":"Claude 4.5 Opus Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5}},"qwen3.5-27b:thinking":{"id":"qwen3.5-27b:thinking","name":"Qwen3.5 27B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.27,"output":2.16,"cache_read":0.135}},"qwen3.5-0.8b":{"id":"qwen3.5-0.8b","name":"Qwen3.5 0.8B","description":"Qwen3.5 0.8B is a lightweight open-weight multimodal model from Alibaba for fast reasoning, visual understanding, tool use, and JSON output.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-16","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.06,"output":0.12,"cache_read":0.03}},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"Doubao Seed 2.0 Code Preview","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.782,"output":3.893,"cache_read":0.391}},"ernie-5.1":{"id":"ernie-5.1","name":"ERNIE 5.1","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-05-10","last_updated":"2026-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":119000,"input":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75}},"azure-gpt-4o-mini":{"id":"azure-gpt-4o-mini","name":"Azure gpt-4o-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"gemma-4-26b-a4b-it-chimerax":{"id":"gemma-4-26b-a4b-it-chimerax","name":"Chimera X","description":"Chimera X is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038}},"sarvam-105b":{"id":"sarvam-105b","name":"Sarvam 105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":4096},"cost":{"input":0.045,"output":0.177,"cache_read":0.028}},"deepseek-chat":{"id":"deepseek-chat","name":"DeepSeek V3/Deepseek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05}},"holo3-35b-a3b":{"id":"holo3-35b-a3b","name":"Holo3-35B-A3B","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125}},"hermes-high":{"id":"hermes-high","name":"Hermes High","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"claw-high":{"id":"claw-high","name":"Claw High","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"holo3-35b-a3b:thinking":{"id":"holo3-35b-a3b:thinking","name":"Holo3-35B-A3B Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125}},"qwen3.5-omni-flash":{"id":"qwen3.5-omni-flash","name":"Qwen3.5 Omni Flash","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"qwen3.5","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":49152,"input":49152,"output":16384},"cost":{"input":0,"output":0}},"azure-gpt-4-turbo":{"id":"azure-gpt-4-turbo","name":"Azure gpt-4-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":10,"output":30}},"qwen3.5-35b-a3b:thinking":{"id":"qwen3.5-35b-a3b:thinking","name":"Qwen3.5 35B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.225,"output":1.8,"cache_read":0.1125}},"claude-sonnet-4-thinking:1024":{"id":"claude-sonnet-4-thinking:1024","name":"Claude 4 Sonnet Thinking (1K)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"doubao-1.5-vision-pro-32k":{"id":"doubao-1.5-vision-pro-32k","name":"Doubao 1.5 Vision Pro 32k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-11-20","last_updated":"2025-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.459,"output":1.377,"cache_read":0.2295}},"doubao-seed-2-0-lite-260215":{"id":"doubao-seed-2-0-lite-260215","name":"Doubao Seed 2.0 Lite","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32000},"cost":{"input":0.1462,"output":0.8738,"cache_read":0.0731}},"Gemma-4-26B-A4B-MeroMero:thinking":{"id":"Gemma-4-26B-A4B-MeroMero:thinking","name":"Gemma 4 26B A4B MeroMero Thinking","description":"Gemma 4 26B A4B MeroMero with thinking enabled for more deliberate emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"gemini-2.5-flash-preview-04-17:thinking":{"id":"gemini-2.5-flash-preview-04-17:thinking","name":"Gemini 2.5 Flash Preview Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-04-17","last_updated":"2025-04-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"claw-medium":{"id":"claw-medium","name":"Claw Medium","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"glm-4-long":{"id":"glm-4-long","name":"GLM-4 Long","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":4096},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"Gemma-4-31B-GarnetV2":{"id":"Gemma-4-31B-GarnetV2","name":"Gemma 4 31B Garnet V2","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"gemini-2.5-flash-preview-04-17":{"id":"gemini-2.5-flash-preview-04-17","name":"Gemini 2.5 Flash Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-04-17","last_updated":"2025-04-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{"id":"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled","name":"Gemma 4 31B Claude 4.6 Opus Reasoning Distilled","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"claude","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.0306}},"qwen3.8-27b:thinking":{"id":"qwen3.8-27b:thinking","name":"Qwen3.8 27B Thinking","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":995904,"input":995904,"output":32768},"cost":{"input":0.3995,"output":1.2002,"cache_read":0.19975}},"fastgpt":{"id":"fastgpt","name":"Web Answer","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-23","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":7.5,"output":7.5}},"gemini-2.5-flash-nothinking":{"id":"gemini-2.5-flash-nothinking","name":"Gemini 2.5 Flash (No Thinking)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"yi-medium-200k":{"id":"yi-medium-200k","name":"Yi Medium 200k","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"yi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":4096},"cost":{"input":2.499,"output":2.499,"cache_read":1.2495}},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.437,"output":3.496,"cache_read":0.103788}},"deepseek-reasoner-cheaper":{"id":"deepseek-reasoner-cheaper","name":"Deepseek R1 Cheaper","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2}},"sonar":{"id":"sonar","name":"Perplexity Simple","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"input":127072,"output":114364},"cost":{"input":1,"output":1,"cache_read":0.5}},"gemini-2.5-flash-lite-preview-09-2025-thinking":{"id":"gemini-2.5-flash-lite-preview-09-2025-thinking","name":"Gemini 2.5 Flash Lite Preview (09/2025) – Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"claude-sonnet-4-thinking":{"id":"claude-sonnet-4-thinking","name":"Claude 4 Sonnet Thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"auto-model-standard":{"id":"auto-model-standard","name":"Auto model (Standard)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Gemini 3 Pro Image","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Perplexity Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":115200},"cost":{"input":2,"output":8,"cache_read":1}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax M1","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-08","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.1394,"output":1.3328,"cache_read":0.0697}},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.2,"output":0.5,"cache_read":0.1}},"Gemma-4-31B-DarkIdol":{"id":"Gemma-4-31B-DarkIdol","name":"Gemma 4 31B DarkIdol","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"qwen3.7-plus:thinking":{"id":"qwen3.7-plus:thinking","name":"Qwen3.7 Plus Thinking","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"auto-model":{"id":"auto-model","name":"Auto model","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":0,"output":0}},"gemma-4-31b-it-darkidol":{"id":"gemma-4-31b-it-darkidol","name":"DarkIdol","description":"DarkIdol is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"claude-opus-4-1-thinking":{"id":"claude-opus-4-1-thinking","name":"Claude 4.1 Opus Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"glm-4.1v-thinking-flash":{"id":"glm-4.1v-thinking-flash","name":"GLM 4.1V Thinking Flash","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"input":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"qwen3.5-4b":{"id":"qwen3.5-4b","name":"Qwen3.5 4B","description":"Qwen3.5 4B is a compact open-weight multimodal model from Alibaba for reasoning, coding, visual understanding, tool use, and structured output.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-16","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"claude-opus-4-1-thinking:32768":{"id":"claude-opus-4-1-thinking:32768","name":"Claude 4.1 Opus Thinking (32K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"mistral-small-31-24b-instruct":{"id":"mistral-small-31-24b-instruct","name":"Mistral Small 31 24b Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":102400},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"gemma-4-31b-it-fabled":{"id":"gemma-4-31b-it-fabled","name":"Fabled","description":"Fabled is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"qwen3-vl-235b-a22b-instruct-original":{"id":"qwen3-vl-235b-a22b-instruct-original","name":"Qwen3 VL 235B A22B Instruct Original","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.25}},"azure-o3-mini":{"id":"azure-o3-mini","name":"Azure o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":65536},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":245760,"input":245760,"output":65536},"cost":{"input":1.04,"output":6.24,"cache_read":0.52}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"Gemini 2.5 Flash 0520","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"input":1048000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"gemma-4-31b-it-gembrain":{"id":"gemma-4-31b-it-gembrain","name":"Gembrain","description":"Gembrain is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"claude-opus-4-thinking:1024":{"id":"claude-opus-4-thinking:1024","name":"Claude 4 Opus Thinking (1K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"longcat-2.0:thinking":{"id":"longcat-2.0:thinking","name":"LongCat 2.0 Thinking","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":262144},"cost":{"input":0.75,"output":3,"cache_read":0.015}},"qwen3-vl-235b-a22b-thinking":{"id":"qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.5,"output":6,"cache_read":0.25}},"celeris-1":{"id":"celeris-1","name":"Celeris 1","description":"Celeris 1 is a diffusion language model built for ultra-low-latency classification, extraction, judging, query rewriting, and other short structured responses.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-07-25","last_updated":"2026-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":2,"output":6,"cache_read":1}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"DeepSeek Chat 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2,"output":0.77,"cache_read":0.135}},"brave-pro":{"id":"brave-pro","name":"Brave (Pro)","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-10","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":5,"output":5}},"gemma-4-31b-it-novelist":{"id":"gemma-4-31b-it-novelist","name":"Novelist","description":"Novelist is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemma-4-12b-it":{"id":"gemma-4-12b-it","name":"Gemma 4 12B Instruct","description":"Google's Gemma 4 12B Instruct is an open-weight multimodal model for text, image, audio, and video understanding, with tool calling and structured output support.","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-08-01","last_updated":"2026-08-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025}},"sonar-pro":{"id":"sonar-pro","name":"Perplexity Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":3,"output":15,"cache_read":1.5}},"qwen3.5-2b":{"id":"qwen3.5-2b","name":"Qwen3.5 2B","description":"Qwen3.5 2B is a small open-weight multimodal model from Alibaba for efficient reasoning, coding, visual understanding, tool use, and JSON output.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-16","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.08,"output":0.16,"cache_read":0.04}},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"Doubao Seed 2.0 Pro","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.782,"output":3.876,"cache_read":0.391}},"Gemma-4-31B-MeroMero-v2:thinking":{"id":"Gemma-4-31B-MeroMero-v2:thinking","name":"Gemma 4 31B MeroMero v2 Thinking","description":"Gemma 4 31B MeroMero v2 with thinking enabled for more deliberate emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"sonar-deep-research":{"id":"sonar-deep-research","name":"Perplexity Deep Research","description":"Sonar search model for autonomous research and citation-backed long-form reports","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":115200},"cost":{"input":3.4,"output":13.6,"cache_read":1.7}},"kimi-k2-instruct-fast":{"id":"kimi-k2-instruct-fast","name":"Kimi K2 0711 Fast","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-12-15","last_updated":"2025-07-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"Gemma-4-31B-MeroMero-v2":{"id":"Gemma-4-31B-MeroMero-v2","name":"Gemma 4 31B MeroMero v2","description":"Gemma 4 31B MeroMero v2 is a LoRA finetune for emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"auto-model-basic":{"id":"auto-model-basic","name":"Auto model (Basic)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375}},"gemini-2.5-flash-preview-05-20:thinking":{"id":"gemini-2.5-flash-preview-05-20:thinking","name":"Gemini 2.5 Flash 0520 Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"input":1048000,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015}},"gemini-2.5-pro-exp-03-25":{"id":"gemini-2.5-pro-exp-03-25","name":"Gemini 2.5 Pro Experimental 0325","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Claude 4 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"qwen-long":{"id":"qwen-long","name":"Qwen Long 10M","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-08-01","last_updated":"2025-01-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"input":10000000,"output":8192},"cost":{"input":0.1003,"output":0.408,"cache_read":0.05015}},"phi-4-mini-instruct":{"id":"phi-4-mini-instruct","name":"Phi 4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.17,"output":0.68,"cache_read":0.085}},"hermes-low":{"id":"hermes-low","name":"Hermes Low","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0.08333}},"azure-o1":{"id":"azure-o1","name":"Azure o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"nano-gpt-help":{"id":"nano-gpt-help","name":"NanoGPT Help","description":"Text-only NanoGPT support assistant. Questions are processed by the Help inference provider; do not paste secrets or account credentials. Covers the website, models, API, pricing, memory, media generation, and support.","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-06","last_updated":"2026-06-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":6000,"input":6000,"output":512},"cost":{"input":0,"output":0}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max 2026-01-23","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-01-26","last_updated":"2026-01-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001}},"gemini-2.5-pro-preview-05-06":{"id":"gemini-2.5-pro-preview-05-06","name":"Gemini 2.5 Pro Preview 0506","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-05-06","last_updated":"2025-05-06","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"brave":{"id":"brave","name":"Brave (Answers)","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-13","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":5,"output":5}},"gemma-4-26b-a4b-uncensored:thinking":{"id":"gemma-4-26b-a4b-uncensored:thinking","name":"Gemma 4 26B A4B Uncensored Thinking","description":"Gemma 4 26B A4B Uncensored with thinking enabled for more deliberate coding, multimodal analysis, tool use, and long-context problem solving.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"pokee-isaac":{"id":"pokee-isaac","name":"Pokee-Isaac 28B","description":"Pokee-Isaac is a 28B agentic model with a roughly 10-million-token context window, function calling, and OpenAI-compatible structured output. Pokee bills in $0.01 increments, rounding each non-zero request up to the next cent.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-04","last_updated":"2026-08-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"input":10000000,"output":60000},"cost":{"input":0.15,"output":1,"cache_read":0.075}},"claude-opus-4-1-thinking:8192":{"id":"claude-opus-4-1-thinking:8192","name":"Claude 4.1 Opus Thinking (8K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5}},"ernie-x1.1-preview":{"id":"ernie-x1.1-preview","name":"ERNIE X1.1","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-10","last_updated":"2025-09-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"input":64000,"output":8192},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"gemma-4-e2b-it":{"id":"gemma-4-e2b-it","name":"Gemma 4 E2B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.02,"output":0.1,"cache_read":0.01}},"gemini-exp-1206":{"id":"gemini-exp-1206","name":"Gemini 2.0 Pro 1206","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2097152,"input":2097152,"output":8192},"cost":{"input":1.258,"output":4.998,"cache_read":0.629}},"gemma-4-31b-it-isometry":{"id":"gemma-4-31b-it-isometry","name":"Isometry","description":"Isometry is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemma-4-26b-a4b-it-musica":{"id":"gemma-4-26b-a4b-it-musica","name":"Musica","description":"Musica is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"yi-large":{"id":"yi-large","name":"Yi Large","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"yi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":4096},"cost":{"input":3.196,"output":3.196,"cache_read":1.598}},"hermes-medium":{"id":"hermes-medium","name":"Hermes Medium","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude 4.5 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5}},"deepclaude":{"id":"deepclaude","name":"DeepClaude","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-10","last_updated":"2025-02-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3}},"qvq-max":{"id":"qvq-max","name":"Qwen: QvQ Max","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-28","last_updated":"2025-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":1.2,"output":4.8,"cache_read":0.6}},"LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{"id":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","name":"Llama 3.3 70B Wayfarer","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"qwen/qwen3.5-397b-a17b-thinking":{"id":"qwen/qwen3.5-397b-a17b-thinking","name":"Qwen3.5 397B A17B Thinking","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":258048,"input":258048,"output":65536},"cost":{"input":0.6,"output":3.6,"cache_read":0.3}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":1,"output":5,"cache_read":0.5}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.15,"output":0.65,"cache_read":0.075}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.05,"output":0.15,"cache_read":0.025}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.15}},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen 3 14b","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.08,"output":0.24,"cache_read":0.04}},"qwen/Qwen3-8B":{"id":"qwen/Qwen3-8B","name":"Qwen 3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.47,"output":0.47,"cache_read":0.235}},"qwen/qwen3.8-27b-obliterated":{"id":"qwen/qwen3.8-27b-obliterated","name":"Qwen 3.8 27B Obliterated","description":"Qwen 3.8 27B Obliterated is an open-weight multimodal model LoRA-tuned for fewer refusals across chat, coding, reasoning, tool use, and long-context work.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3.5-plus-thinking":{"id":"qwen/qwen3.5-plus-thinking","name":"Qwen3.5 Plus Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen 3 32b","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen 3 Coder 480B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"input":262000,"output":65536},"cost":{"input":0.13,"output":0.5,"cache_read":0.065}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.2,"output":1.5,"cache_read":0.1}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":258048,"input":258048,"output":65536},"cost":{"input":0.6,"output":3.6,"cache_read":0.3}},"qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen 3 235b A22B 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.13,"output":0.5,"cache_read":0.065}},"qwen/qwen3.6-35b-a3b-uncensored:thinking":{"id":"qwen/qwen3.6-35b-a3b-uncensored:thinking","name":"Qwen 3.6 35B A3B Uncensored Thinking","description":"Qwen 3.6 35B A3B Uncensored with thinking enabled for more deliberate coding, multimodal analysis, tool use, and complex chat tasks.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.95,"cache_read":0.075}},"qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"qwen/qwen3.8-27b-fable":{"id":"qwen/qwen3.8-27b-fable","name":"Qwen 3.8 27B Fable","description":"Qwen 3.8 27B Fable is an open-weight multimodal creative finetune for expressive dialogue, long-form storytelling, character work, and roleplay.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001}},"qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3 Next 80B A3B (Instruct)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.15,"output":0.65,"cache_read":0.075}},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B (Max)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":991000,"input":991000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen3.8-27b-uncensored":{"id":"qwen/qwen3.8-27b-uncensored","name":"Qwen 3.8 27B Uncensored","description":"Qwen 3.8 27B Uncensored is an NVFP4 open-weight multimodal model LoRA-tuned for fewer refusals across chat, coding, reasoning, tool use, and long-context work.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen 3 235b A22B 2507 Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-09-11","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"qwen/qwen3.6-35b-a3b-uncensored":{"id":"qwen/qwen3.6-35b-a3b-uncensored","name":"Qwen 3.6 35B A3B Uncensored","description":"Qwen 3.6 35B A3B Uncensored is an NVFP4 open-weight mixture-of-experts model LoRA-tuned for fewer refusals across chat, coding, tool use, and multimodal tasks.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.95,"cache_read":0.075}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-07-03","last_updated":"2025-07-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.357,"output":0.408,"cache_read":0.1785}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen 3 235b A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"qwen/Qwen3.6-35B-A3B":{"id":"qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056}},"qwen/Qwen3.6-35B-A3B:thinking":{"id":"qwen/Qwen3.6-35B-A3B:thinking","name":"Qwen3.6 35B A3B Thinking","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056}},"qwen/qwen3.8-27b-uncensored:thinking":{"id":"qwen/qwen3.8-27b-uncensored:thinking","name":"Qwen 3.8 27B Uncensored Thinking","description":"Qwen 3.8 27B Uncensored with thinking enabled for more deliberate creative work, coding, multimodal analysis, tool use, and long-context problem solving.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04}},"qwen/qwen3.8-27b-obliterated:thinking":{"id":"qwen/qwen3.8-27b-obliterated:thinking","name":"Qwen 3.8 27B Obliterated Thinking","description":"Qwen 3.8 27B Obliterated with thinking enabled for more deliberate creative work, coding, multimodal analysis, tool use, and long-context problem solving.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/Qwen2.5-Coder-32B-Instruct":{"id":"qwen/Qwen2.5-Coder-32B-Instruct","name":"Qwen 2.5 Coder 32b","description":"Open coding-focused Qwen model for code generation, repair, and repository reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"MarinaraSpaghetti/NemoMix-Unleashed-12B":{"id":"MarinaraSpaghetti/NemoMix-Unleashed-12B","name":"NemoMix 12B Unleashed","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"Llama 3.1 8b (uncensored)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.8,"output":1.6,"cache_read":0.4}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion 3.0","description":"Aion 3.0 is a GLM-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion 3.0 Mini","description":"Aion 3.0 Mini is a DeepSeek-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{"id":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","name":"Llama 3.1 70B Celeste v0.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"ornith-ai/ornith-1.5-35b-a3b":{"id":"ornith-ai/ornith-1.5-35b-a3b","name":"Ornith 1.5 35B","description":"Ornith 1.5 35B A3B is an open-weight mixture-of-experts model for agentic coding, tool use, image understanding, and long-context work. This variant disables thinking for faster direct responses.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"ornith-ai/ornith-1.5-35b-a3b:thinking":{"id":"ornith-ai/ornith-1.5-35b-a3b:thinking","name":"Ornith 1.5 35B Thinking","description":"Ornith 1.5 35B A3B is an open-weight mixture-of-experts model for agentic coding, reasoning, tool use, image understanding, and long-context work. This variant enables thinking by default.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"ornith-ai/ornith-1.5-9b:thinking":{"id":"ornith-ai/ornith-1.5-9b:thinking","name":"Ornith 1.5 9B Thinking","description":"Ornith 1.5 9B with thinking enabled for more deliberate agentic coding, tool use, visual understanding, and long-context work.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"ornith-ai/ornith-1.5-9b":{"id":"ornith-ai/ornith-1.5-9b","name":"Ornith 1.5 9B","description":"Ornith 1.5 9B is an FP8 dense open-weight model built for agentic coding, tool use, visual understanding, and efficient long-context work. This variant disables thinking for faster direct responses.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"abliteration-ai/abliterated-model-large":{"id":"abliteration-ai/abliterated-model-large","name":"Abliterated Model Large","description":"Abliteration.ai's large text reasoning model is derived from GLM-5.2 and supports native tool calling, structured output, automatic prompt caching, and a one-million-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}},"abliteration-ai/abliterated-model-large-v2":{"id":"abliteration-ai/abliterated-model-large-v2","name":"Abliterated Model Large V2","description":"Abliteration.ai's default large text reasoning model is derived from GLM-5.3 for harder reasoning and evaluation workloads, with automatic prompt caching and a one-million-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}},"abliteration-ai/abliterated-model":{"id":"abliteration-ai/abliterated-model","name":"Abliterated Model","description":"Abliteration.ai's multimodal reasoning model supports text and image input, structured output, automatic prompt caching, and a 262K-token context window.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":262134},"cost":{"input":3,"output":3,"cache_read":0.3}},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":6144,"input":6144,"output":4096},"cost":{"input":0.799,"output":1.207,"cache_read":0.3995}},"chutesai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"chutesai/Mistral-Small-3.2-24B-Instruct-2506","name":"Mistral Small 3.2 24b Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"chutesai","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.2,"output":0.4,"cache_read":0.1}},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"stepfun-ai/step-3.5-flash-2603":{"id":"stepfun-ai/step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"pamanseau/OpenReasoning-Nemotron-32B":{"id":"pamanseau/OpenReasoning-Nemotron-32B","name":"OpenReasoning Nemotron 32B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"deepseek-ai/DeepSeek-V3.1:thinking":{"id":"deepseek-ai/DeepSeek-V3.1:thinking","name":"DeepSeek V3.1 Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1}},"deepseek-ai/deepseek-v3.2-exp-thinking":{"id":"deepseek-ai/deepseek-v3.2-exp-thinking","name":"DeepSeek V3.2 Exp Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1}},"deepseek-ai/DeepSeek-V3.1-Terminus:thinking":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus:thinking","name":"DeepSeek V3.1 Terminus (Thinking)","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":32768},"cost":{"input":0.4,"output":1.7,"cache_read":0.2}},"deepseek-ai/deepseek-v3.2-exp":{"id":"deepseek-ai/deepseek-v3.2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125}},"VongolaChouko/Starcannon-Unleashed-12B-v1.0":{"id":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","name":"Mistral Nemo Starcannon 12b v1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"poolside/laguna-s-2.1:thinking":{"id":"poolside/laguna-s-2.1:thinking","name":"Laguna S 2.1 Thinking","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01}},"featherless-ai/Qwerky-72B":{"id":"featherless-ai/Qwerky-72B","name":"Qwerky 72B","description":"General-purpose chat model for instruction following, writing, and analysis","family":"qwerky","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"stepfun/step-3.7-flash:thinking":{"id":"stepfun/step-3.7-flash:thinking","name":"Step 3.7 Flash Thinking","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"mlabonne/NeuralDaredevil-8B-abliterated":{"id":"mlabonne/NeuralDaredevil-8B-abliterated","name":"Neural Daredevil 8B abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.44,"output":0.44,"cache_read":0.22}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large 2411","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":102400},"cost":{"input":2.006,"output":6.001,"cache_read":0.2}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Codestral 2508","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-01","last_updated":"2025-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15}},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-25","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":256000},"cost":{"input":1,"output":3,"cache_read":0.5}},"mistralai/Devstral-Small-2505":{"id":"mistralai/Devstral-Small-2505","name":"Mistral Devstral Small 2505","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.06,"output":0.06,"cache_read":0.03}},"mistralai/devstral-2-123b-instruct-2512":{"id":"mistralai/devstral-2-123b-instruct-2512","name":"Devstral 2 123B","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":26214},"cost":{"input":0.1989,"output":0.595,"cache_read":0.09945}},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"mistralai/mistral-small-4-119b-2603:thinking":{"id":"mistralai/mistral-small-4-119b-2603:thinking","name":"Mistral Small 4 119B Thinking","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"Mistral Small 4 119B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.05}},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"mistralai/mixtral-8x22b-instruct-v0.1":{"id":"mistralai/mixtral-8x22b-instruct-v0.1","name":"Mixtral 8x22B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Ministral 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.075}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{"id":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","name":"Omega Directive 24B Unslop v2.0","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","name":"DeepSeek R1 Llama 70B Abliterated","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","name":"DeepSeek R1 Qwen Abliterated","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":1.4,"output":1.4,"cache_read":0.7}},"huihui-ai/Llama-3.3-70B-Instruct-abliterated":{"id":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","name":"Llama 3.3 70B Instruct abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"huihui-ai/Qwen2.5-32B-Instruct-abliterated":{"id":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","name":"Qwen 2.5 32B Abliterated","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-06","last_updated":"2025-01-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"xiaomi/mimo-v2.5-pro-crof":{"id":"xiaomi/mimo-v2.5-pro-crof","name":"MiMo V2.5 Pro (Crof)","description":"MiMo V2.5 Pro is Xiaomi's long-context flagship general model for coding and agentic orchestration. This separately served variant is intended for users concerned about censorship on the regular Xiaomi MiMo V2.5 Pro, and it is included in the NanoGPT subscription.","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.4,"output":0.8,"cache_read":0.003}},"xiaomi/mimo-v2.5:thinking":{"id":"xiaomi/mimo-v2.5:thinking","name":"MiMo V2.5 Thinking","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0}},"xiaomi/mimo-v2.5-pro-crof:thinking":{"id":"xiaomi/mimo-v2.5-pro-crof:thinking","name":"MiMo V2.5 Pro Thinking (Crof)","description":"MiMo V2.5 Pro with Xiaomi thinking enabled for coding, long-context reasoning, and agentic orchestration. This separately served thinking variant is intended for users concerned about censorship on the regular Xiaomi MiMo V2.5 Pro, and it is included in the NanoGPT subscription.","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.4,"output":0.8,"cache_read":0.003}},"xiaomi/mimo-v2.5-pro:thinking":{"id":"xiaomi/mimo-v2.5-pro:thinking","name":"MiMo V2.5 Pro Thinking","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0}},"shisa-ai/shisa-v2-llama3.3-70b":{"id":"shisa-ai/shisa-v2-llama3.3-70b","name":"Shisa V2 Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"shisa-ai/shisa-v2.1-llama3.3-70b":{"id":"shisa-ai/shisa-v2.1-llama3.3-70b","name":"Shisa V2.1 Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"minimax/minimax-m3:thinking":{"id":"minimax/minimax-m3:thinking","name":"MiniMax M3 Thinking","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.165}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.315,"output":1.26,"cache_read":0.1575}},"minimax/minimax-m2.7-turbo":{"id":"minimax/minimax-m2.7-turbo","name":"MiniMax M2.7 Turbo","description":"Efficient MiniMax model for quick assistance, coding, and routine automation","family":"minimax-m2.7","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.3}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax M2-her","description":"MiniMax M2 variant tuned for conversational and character-driven agent interactions","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65532,"input":65532,"output":2048},"cost":{"input":0.302,"output":1.207,"cache_read":0.151}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax 01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000192,"input":1000192,"output":16384},"cost":{"input":0.1394,"output":1.122,"cache_read":0.0697}},"minimax/minimax-latest":{"id":"minimax/minimax-latest","name":"MiniMax Latest","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"Sao10K/L3-8B-Stheno-v3.2":{"id":"Sao10K/L3-8B-Stheno-v3.2","name":"Sao10K Stheno 8b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-11-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"Sao10K/L3.3-70B-Euryale-v2.3":{"id":"Sao10K/L3.3-70B-Euryale-v2.3","name":"Llama 3.3 70B Euryale","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":20480,"input":20480,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Sao10K/L3.1-70B-Euryale-v2.2":{"id":"Sao10K/L3.1-70B-Euryale-v2.2","name":"Llama 3.1 70B Euryale","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":20480,"input":20480,"output":16384},"cost":{"input":0.306,"output":0.357,"cache_read":0.153}},"Sao10K/L3.1-70B-Hanami-x1":{"id":"Sao10K/L3.1-70B-Hanami-x1","name":"Llama 3.1 70B Hanami","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"alibaba/qwen3.6-27b:thinking":{"id":"alibaba/qwen3.6-27b:thinking","name":"Qwen3.6 27B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":131072}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015}},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015}},"alibaba/qwen3.8-max-0902":{"id":"alibaba/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.17,"cache_write":2.5}},"alibaba/qwen3.6-flash":{"id":"alibaba/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.19,"output":1.16,"cache_read":0.02,"cache_write":0.24}},"alibaba/qwen3.8-flash":{"id":"alibaba/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"nvidia/nemotron-3-ultra-550b-a55b:thinking":{"id":"nvidia/nemotron-3-ultra-550b-a55b:thinking","name":"Nvidia Nemotron 3 Ultra 550B Thinking","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nvidia Nemotron 3.5 Lightning","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nvidia Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.105,"output":0.42,"cache_read":0.0525}},"nvidia/nemotron-3-super-120b-a12b:thinking":{"id":"nvidia/nemotron-3-super-120b-a12b:thinking","name":"Nvidia Nemotron 3 Super 120B Thinking","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025}},"nvidia/nemotron-3.5-lightning:thinking":{"id":"nvidia/nemotron-3.5-lightning:thinking","name":"Nvidia Nemotron 3.5 Lightning Thinking","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nvidia Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025}},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{"id":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","name":"Nvidia Nemotron 70b","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.357,"output":0.408,"cache_read":0.1785}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nvidia Nemotron 3 Ultra 550B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"nvidia/Llama-3.3-Nemotron-Super-49B-v1":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","name":"Nvidia Nemotron Super 49B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.15,"output":0.15,"cache_read":0.075}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nvidia Nemotron 3 Nano 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.17,"output":0.68,"cache_read":0.085}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4.6:thinking":{"id":"anthropic/claude-opus-4.6:thinking","name":"Claude 4.6 Opus Thinking","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-fable-latest":{"id":"anthropic/claude-fable-latest","name":"Claude Fable Latest","description":"Compatibility alias for Claude Fable.","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude 4.7 Opus","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4.6:thinking:low":{"id":"anthropic/claude-opus-4.6:thinking:low","name":"Claude 4.6 Opus Thinking Low","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.6:thinking:medium":{"id":"anthropic/claude-opus-4.6:thinking:medium","name":"Claude 4.6 Opus Thinking Medium","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-sonnet-5:thinking":{"id":"anthropic/claude-sonnet-5:thinking","name":"Claude Sonnet 5 Thinking","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude 4.6 Opus","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-haiku-latest":{"id":"anthropic/claude-haiku-latest","name":"Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"anthropic/claude-sonnet-4.6:thinking":{"id":"anthropic/claude-sonnet-4.6:thinking","name":"Claude Sonnet 4.6 Thinking","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4.8:thinking":{"id":"anthropic/claude-opus-4.8:thinking","name":"Claude Opus 4.8 Thinking","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4.6:thinking:max":{"id":"anthropic/claude-opus-4.6:thinking:max","name":"Claude 4.6 Opus Thinking Max","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4.7:thinking":{"id":"anthropic/claude-opus-4.7:thinking","name":"Claude 4.7 Opus Thinking","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.5-flash-thinking":{"id":"google/gemini-3.5-flash-thinking","name":"Gemini 3.5 Flash Thinking","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333}},"google/gemini-3-flash-preview-thinking":{"id":"google/gemini-3-flash-preview-thinking","name":"Gemini 3 Flash Thinking","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro (Preview Custom Tools)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333}},"google/gemini-3.1-pro-preview-high":{"id":"google/gemini-3.1-pro-preview-high","name":"Gemini 3.1 Pro (Preview High)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-21","last_updated":"2026-02-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333}},"google/gemma-4-31b-it:thinking":{"id":"google/gemma-4-31b-it:thinking","name":"Gemma 4 31B Thinking","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.1,"output":0.35,"cache_read":0.05}},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"google/gemma-4-26b-a4b-it:thinking":{"id":"google/gemma-4-26b-a4b-it:thinking","name":"Gemma 4 26B A4B Thinking","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.13,"output":0.4,"cache_read":0.065}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.075}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.075}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.075}},"google/gemini-3.1-pro-preview-low":{"id":"google/gemini-3.1-pro-preview-low","name":"Gemini 3.1 Pro (Preview Low)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-21","last_updated":"2026-02-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"input":1048756,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"baseten/Kimi-K2-Instruct-FP4":{"id":"baseten/Kimi-K2-Instruct-FP4","name":"Kimi K2 0711 Instruct FP4","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":131072},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"crofai/greg-2-super":{"id":"crofai/greg-2-super","name":"Greg 2 Super","description":"Greg 2 Super is CrofAI's balanced Greg 2 model for strong UI design, frontend iteration, coding, writing, and everyday agent tasks at a lower cost than Ultra.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-19","last_updated":"2026-06-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"input":229376,"output":229376},"cost":{"input":1.5,"output":5,"cache_read":0.25}},"crofai/greg-2-ultra":{"id":"crofai/greg-2-ultra","name":"Greg 2 Ultra","description":"Greg 2 Ultra is CrofAI's most capable Greg 2 model, tuned for premium UI design, agentic coding, creative writing, and higher-end general reasoning tasks.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-19","last_updated":"2026-06-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"input":229376,"output":229376},"cost":{"input":3,"output":10,"cache_read":0.5}},"nex-agi/nex-n2-mini":{"id":"nex-agi/nex-n2-mini","name":"Nex N2 Mini","description":"Nex AGI's open-source agentic mixture-of-experts model in the Nex N2 family. It accepts text and image input and is built for coding, tool use, structured outputs, and optional reasoning with a 256K context window.","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-06-24","last_updated":"2026-06-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025}},"nex-agi/nex-n2-pro":{"id":"nex-agi/nex-n2-pro","name":"Nex N2 Pro","description":"Nex AGI's open-source agentic reasoning model, post-trained on Qwen3.5-397B-A17B. It is built for agentic coding, software engineering, deep research, tool use, and long-horizon tasks with a 256K context window.","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"thinkingmachines/inkling:thinking":{"id":"thinkingmachines/inkling:thinking","name":"Inkling Thinking","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"input":1048000,"output":32768},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"input":1048000,"output":32768},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"thinkingmachines/Inkling-Small:thinking":{"id":"thinkingmachines/Inkling-Small:thinking","name":"Inkling Small Thinking","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor (Data Used for Training)","description":"A much cheaper opt-in version of Muse Spark 1.2 with the same multimodal coding and agentic capabilities. Prompts and outputs sent to this Contributor model may be used by Meta for training and to improve its products; use the standard Muse Spark 1.2 model if you do not want your data used for training.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Meta's Muse Spark 1.3 Contributor is a frontier multimodal reasoning model for long-horizon coding and agentic workflows, with strong gains in computer use, browsing, professional tool use, codebase understanding, and million-token retrieval. It accepts text, images, audio, video, and files, supports tool calling and structured output, and always reasons before answering. Prompts and outputs may be used by Meta for training and to improve its products.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.15,"output":1.5,"cache_read":0.075}},"Steelskull/L3.3-Cu-Mai-R1-70b":{"id":"Steelskull/L3.3-Cu-Mai-R1-70b","name":"Llama 3.3 70B Cu Mai","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Steelskull/L3.3-Electra-R1-70b":{"id":"Steelskull/L3.3-Electra-R1-70b","name":"Steelskull Electra R1 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.69989,"output":0.69989,"cache_read":0.349945}},"Steelskull/L3.3-Nevoria-R1-70b":{"id":"Steelskull/L3.3-Nevoria-R1-70b","name":"Steelskull Nevoria R1 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Steelskull/L3.3-MS-Nevoria-70b":{"id":"Steelskull/L3.3-MS-Nevoria-70b","name":"Steelskull Nevoria 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"bytedance/doubao-seed-2.1-turbo":{"id":"bytedance/doubao-seed-2.1-turbo","name":"Doubao Seed 2.1 Turbo","description":"Fast, lower-cost model in the Doubao Seed 2.1 family for everyday chat, coding assistance, document work, and high-throughput productivity tasks. Supports a 256k context window and up to 128k output tokens. Note: privacy and logging guarantees may be limited.","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"bytedance/doubao-seed-2.1-pro":{"id":"bytedance/doubao-seed-2.1-pro","name":"Doubao Seed 2.1 Pro","description":"Higher-capability model in the Doubao Seed 2.1 family for agentic coding, long-context analysis, complex instruction following, and productivity workflows. Supports a 256k context window and up to 128k output tokens. Note: privacy and logging guarantees may be limited.","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":1,"output":5,"cache_read":0.5}},"bytedance/doubao-seed-character":{"id":"bytedance/doubao-seed-character","name":"Doubao Seed Character","description":"ByteDance's character-focused Doubao Seed model for roleplay, persona consistency, dialogue, and creative character interactions. It supports text and image input with a 128k context window. Requests route through ZenMux to ByteDance; ZenMux does not publish a model-API zero-retention or training guarantee, so avoid sensitive data.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"release_date":"2026-07-18","last_updated":"2026-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.1179,"output":0.2947,"cache_read":0.0236,"cache_write":0.0025}},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"ByteDance Seed 2.1 Turbo","description":"ByteDance Seed 2.1 Turbo is a multimodal model for coding and long-horizon agent workflows, including end-to-end software delivery and multi-step task execution. It supports text, image, and video input with a 262k context window.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"ByteDance Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.25}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"ByteDance Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.25,"output":2,"cache_read":0.125}},"NeverSleep/Lumimaid-v0.2-70B":{"id":"NeverSleep/Lumimaid-v0.2-70B","name":"Lumimaid v0.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":1,"output":1.5,"cache_read":0.5}},"TEE/qwen3.5-27b":{"id":"TEE/qwen3.5-27b","name":"Qwen3.5 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.3,"output":2.4,"cache_read":0.15}},"TEE/qwen3.8-27b":{"id":"TEE/qwen3.8-27b","name":"Qwen3.8 27B TEE","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15}},"TEE/kimi-k2.6":{"id":"TEE/kimi-k2.6","name":"Kimi K2.6 TEE","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":1.5,"output":5.25,"cache_read":0.375}},"TEE/glm-5.2":{"id":"TEE/glm-5.2","name":"GLM 5.2 TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.6,"cache_read":0.5}},"TEE/gemma4-31b":{"id":"TEE/gemma4-31b","name":"Gemma 4 31B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-04","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4}},"TEE/deepseek-v4-flash":{"id":"TEE/deepseek-v4-flash","name":"DeepSeek V4 Flash TEE","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":393216},"cost":{"input":0.2,"output":0.4,"cache_read":0.04}},"TEE/kimi-k2.7-code":{"id":"TEE/kimi-k2.7-code","name":"Kimi K2.7 Code TEE","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"TEE/gpt-oss-20b":{"id":"TEE/gpt-oss-20b","name":"GPT-OSS 20B TEE","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.2,"output":0.8,"cache_read":0.1}},"TEE/qwen2.5-vl-72b-instruct":{"id":"TEE/qwen2.5-vl-72b-instruct","name":"Qwen2.5 VL 72B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"TEE/gemma4-31b:thinking":{"id":"TEE/gemma4-31b:thinking","name":"Gemma 4 31B Thinking TEE","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-02","last_updated":"2026-05-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4}},"TEE/qwen3.5-397b-a17b":{"id":"TEE/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B TEE","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.55,"output":3.5,"cache_read":0.275}},"TEE/gemma-4-26b-a4b-uncensored":{"id":"TEE/gemma-4-26b-a4b-uncensored","name":"Gemma 4 26B A4B Uncensored TEE","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-23","last_updated":"2026-05-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":65536},"cost":{"input":0.15,"output":0.7,"cache_read":0.075}},"TEE/qwen3.6-27b":{"id":"TEE/qwen3.6-27b","name":"Qwen3.6 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.32,"output":2.7,"cache_read":0.16}},"TEE/kimi-k3":{"id":"TEE/kimi-k3","name":"Kimi K3 TEE","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65535},"cost":{"input":3,"output":15,"cache_read":1.5}},"TEE/deepseek-v3.2":{"id":"TEE/deepseek-v3.2","name":"DeepSeek V3.2 TEE","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"input":164000,"output":65536},"cost":{"input":0.5,"output":1,"cache_read":0.25}},"TEE/qwen3.6-35b-a3b":{"id":"TEE/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B TEE","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.2,"output":1.27,"cache_read":0.1}},"TEE/glm-5.3-flash":{"id":"TEE/glm-5.3-flash","name":"GLM 5.3 Flash TEE","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"TEE/muse-glimmer-30b":{"id":"TEE/muse-glimmer-30b","name":"Muse Glimmer 30B TEE","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"TEE/gemma-4-31b-it":{"id":"TEE/gemma-4-31b-it","name":"Gemma 4 31B IT TEE","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.15,"output":0.46,"cache_read":0.075}},"TEE/qwen3.6-35b-a3b-uncensored":{"id":"TEE/qwen3.6-35b-a3b-uncensored","name":"Qwen3.6 35B A3B Uncensored TEE","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":131072}],"tool_call":true,"structured_output":true,"release_date":"2026-05-23","last_updated":"2026-05-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":131072},"cost":{"input":0.3,"output":1.5,"cache_read":0.15}},"TEE/qwen3-8b":{"id":"TEE/qwen3-8b","name":"Qwen3 8B TEE","description":"Qwen3 8B is an open-weight dense language model from Alibaba's Qwen team for efficient dialogue, reasoning, mathematics, coding, and tool use. Running inside a TEE (Trusted Execution Environment), with provider attestation support.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"input":40960,"output":8192},"cost":{"input":0.11,"output":0.45,"cache_read":0.11}},"TEE/glm-5.1":{"id":"TEE/glm-5.1","name":"GLM 5.1 TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":202752,"output":65535},"cost":{"input":1.5,"output":5.25,"cache_read":0.3}},"TEE/glm-5.2:thinking":{"id":"TEE/glm-5.2:thinking","name":"GLM 5.2 Thinking TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.6,"cache_read":0.5}},"TEE/gpt-oss-120b":{"id":"TEE/gpt-oss-120b","name":"GPT-OSS 120B TEE","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":2,"output":2,"cache_read":2}},"TEE/llama3-3-70b":{"id":"TEE/llama3-3-70b","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-03","last_updated":"2025-07-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1.75,"output":2.75,"cache_read":1.75}},"TEE/glm-5.1-thinking":{"id":"TEE/glm-5.1-thinking","name":"GLM 5.1 Thinking TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":202752,"output":65535},"cost":{"input":1.5,"output":5.25,"cache_read":0.3}},"TEE/glm-5.3":{"id":"TEE/glm-5.3","name":"GLM 5.3 TEE","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"meganova-ai/manta-mini-1.0":{"id":"meganova-ai/manta-mini-1.0","name":"Manta Mini 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.02,"output":0.16,"cache_read":0.01}},"meganova-ai/manta-flash-1.0":{"id":"meganova-ai/manta-flash-1.0","name":"Manta Flash 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":16384},"cost":{"input":0.02,"output":0.16,"cache_read":0.01}},"meganova-ai/manta-pro-1.0":{"id":"meganova-ai/manta-pro-1.0","name":"Manta Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"input":65536,"output":32768},"cost":{"input":0.06,"output":0.5,"cache_read":0.03}},"inception/mercury-2.5-preview":{"id":"inception/mercury-2.5-preview","name":"Mercury 2.5 Preview","description":"Mercury 2.5 Preview is Inception's latest and most intelligent diffusion language model. Instead of generating tokens strictly one at a time, it produces and refines multiple tokens in parallel, reaching up to 1,107 tokens per second on standard GPUs. It delivers a 10+ point intelligence gain over Mercury 2, with tunable reasoning, parallel tool calls, schema-aligned JSON output, and a 260K context window. It is built for latency-sensitive production work such as search agents, voice pipelines, customer support, rapid coding iteration, and coding subagents.","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"input":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"unsloth/gemma-3-4b-it":{"id":"unsloth/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"unsloth/gemma-3-27b-it":{"id":"unsloth/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":96000},"cost":{"input":0.2992,"output":0.2992,"cache_read":0.1496}},"unsloth/gemma-3-12b-it":{"id":"unsloth/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.272,"output":0.272,"cache_read":0.136}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"inflatebot/MN-12B-Mag-Mell-R1":{"id":"inflatebot/MN-12B-Mag-Mell-R1","name":"Mag Mell R1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"deepcogito/cogito-v1-preview-qwen-32B":{"id":"deepcogito/cogito-v1-preview-qwen-32B","name":"Cogito v1 Preview Qwen 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-10","last_updated":"2025-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":1.8,"output":1.8,"cache_read":0.9}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":16384},"cost":{"input":5.25,"output":31.5,"cache_read":0.525}},"sakana/fugu-ultra-v1.1":{"id":"sakana/fugu-ultra-v1.1","name":"Fugu Ultra v1.1","description":"Sakana AI's upgraded Fugu Ultra release with stronger coding, agentic task execution, and advanced reasoning through dynamic orchestration of frontier models.","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":16384},"cost":{"input":5.25,"output":31.5,"cache_read":0.525}},"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{"id":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","name":"Nemotron Tenyxchat Storybreaker 70b","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{"id":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","name":"Llama 3.05 Storybreaker Ministral 70b","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"NousResearch/hermes-3-llama-3.1-70b":{"id":"NousResearch/hermes-3-llama-3.1-70b","name":"Hermes 3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-01-07","last_updated":"2026-01-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.408,"output":0.408,"cache_read":0.204}},"NousResearch/Hermes-4-70B:thinking":{"id":"NousResearch/Hermes-4-70B:thinking","name":"Hermes 4 (Thinking)","description":"General-purpose chat model for instruction following, writing, and analysis","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-17","last_updated":"2025-09-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2006,"output":0.3995,"cache_read":0.1003}},"NousResearch/hermes-4-405b":{"id":"NousResearch/hermes-4-405b","name":"Hermes 4 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"NousResearch/hermes-4-405b:thinking":{"id":"NousResearch/hermes-4-405b:thinking","name":"Hermes 4 Large (Thinking)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{"id":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","name":"Llama 3 70B abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"GalrionSoftworks/MN-LooseCannon-12B-v1":{"id":"GalrionSoftworks/MN-LooseCannon-12B-v1","name":"MN-LooseCannon-12B-v1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"Granite 4.1 8B","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.05,"output":0.1,"cache_read":0.05}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"IBM Granite 4.2 8B is an Apache 2.0-licensed dense model with native step-by-step reasoning and specialized training for agentic work. It can plan before acting, sequence tools, navigate codebases, work in terminals, and verify results across coding, search, mathematics, science, and complex instruction-following tasks.","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.1,"output":0.15,"cache_read":0.05}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.014}},"deepseek/deepseek-v4-flash-latest":{"id":"deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Compatibility alias that routes to the newest dated DeepSeek V4 Flash release. Currently routes to DeepSeek V4 Flash 0731. ⚠️ This route goes directly to DeepSeek, so privacy and logging guarantees are limited.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.014}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek/deepseek-v4-flash-0731:thinking":{"id":"deepseek/deepseek-v4-flash-0731:thinking","name":"DeepSeek V4 Flash 0731 (Thinking)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.014}},"deepseek/deepseek-v4-flash:thinking":{"id":"deepseek/deepseek-v4-flash:thinking","name":"DeepSeek V4 Flash (Thinking)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek/deepseek-v4-pro-0813:thinking":{"id":"deepseek/deepseek-v4-pro-0813:thinking","name":"DeepSeek V4 Pro 0813 Thinking","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04}},"deepseek/deepseek-v4-pro:thinking":{"id":"deepseek/deepseek-v4-pro:thinking","name":"DeepSeek V4 Pro (Thinking)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163000,"input":163000,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"deepseek/deepseek-latest":{"id":"deepseek/deepseek-latest","name":"DeepSeek Latest","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"deepseek/deepseek-v3.2:thinking":{"id":"deepseek/deepseek-v3.2:thinking","name":"DeepSeek V3.2 Thinking","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163000,"input":163000,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","name":"EVA Llama 3.33 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003}},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","name":"EVA-LLaMA-3.33-70B-v0.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003}},"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","name":"EVA-Qwen2.5-32B-v0.2","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995}},"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","name":"EVA-Qwen2.5-72B-v0.2","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon Nova 2 Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65535},"cost":{"input":0.51,"output":4.25,"cache_read":0.255}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"input":300000,"output":32000},"cost":{"input":0.799,"output":3.196,"cache_read":0.3995}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"input":300000,"output":5120},"cost":{"input":0.0595,"output":0.238,"cache_read":0.02975}},"LLM360/K2-Think":{"id":"LLM360/K2-Think","name":"K2-Think","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.17,"output":0.68,"cache_read":0.085}},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Ling-3.0-flash is a 124B-parameter Mixture-of-Experts model with approximately 5.1B parameters active per token. It prioritizes token efficiency and production-scale agentic inference, helping coding and tool-using agents complete more work within constrained latency and serving budgets.","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"inclusionai/ling-3.0-flash:thinking":{"id":"inclusionai/ling-3.0-flash:thinking","name":"Ling 3.0 Flash Thinking","description":"Ling-3.0-flash Thinking enables visible reasoning on inclusionAI's token-efficient 124B-parameter Mixture-of-Experts model for harder coding, tool use, planning, and production-scale agent workflows.","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"MiniMaxAI/MiniMax-M1-80k":{"id":"MiniMaxAI/MiniMax-M1-80k","name":"MiniMax M1 80K","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-08","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.6052,"output":2.4225,"cache_read":0.3026}},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003}},"anthracite-org/magnum-v2-72b":{"id":"anthracite-org/magnum-v2-72b","name":"Magnum V2 72B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003}},"Salesforce/Llama-xLAM-2-70b-fc-r":{"id":"Salesforce/Llama-xLAM-2-70b-fc-r","name":"Llama-xLAM-2 70B fc-r","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-13","last_updated":"2025-04-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":2.5,"cache_read":1.25}},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"input":2000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":1}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"input":2000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":1}},"x-ai/grok-latest":{"id":"x-ai/grok-latest","name":"Grok Latest","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama 3.1 8b Instruct","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.0544,"output":0.085,"cache_read":0.0272}},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Llama 3.2 3b Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-09-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.0306,"output":0.0493,"cache_read":0.0153}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":328000,"input":328000,"output":65536},"cost":{"input":0.085,"output":0.46,"cache_read":0.0425}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.05,"output":0.23,"cache_read":0.025}},"abacusai/Dracarys-72B-Instruct":{"id":"abacusai/Dracarys-72B-Instruct","name":"Llama 3.1 70B Dracarys 2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Gryphe/MythoMax-L2-13b":{"id":"Gryphe/MythoMax-L2-13b","name":"MythoMax 13B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"input":4096,"output":3686},"cost":{"input":0.1003,"output":0.1003,"cache_read":0.05015}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI o4-mini high","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-12-04","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT 5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/o3-mini-low":{"id":"openai/o3-mini-low","name":"OpenAI o3-mini (Low)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-01-31","last_updated":"2025-01-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3-pro-2025-06-10":{"id":"openai/o3-pro-2025-06-10","name":"OpenAI o3-pro (2025-06-10)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":22,"output":88,"cache_read":11}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT 4.1 Nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT 5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":15,"output":120,"cache_read":1.5}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI o3-mini (High)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-01-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT 5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT 5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT 5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT 5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.1-2025-11-13":{"id":"openai/gpt-5.1-2025-11-13","name":"GPT-5.1 (2025-11-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":32768},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"GPT Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT 5.6 Luna Pro","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT 4.1 Mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT 5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":922000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.2,"output":0.3}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT 5.6 Sol Pro","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2026-02-23","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.075,"output":0.3}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT 5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT 5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25}},"openai/o1":{"id":"openai/o1","name":"OpenAI o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT 5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT 5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o1-pro":{"id":"openai/o1-pro","name":"OpenAI o1 Pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":150,"output":600,"cache_read":75}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT 4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT 5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT 5.6 Terra Pro","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT 5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"input":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT 5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.35,"output":0.75}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT 5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT 5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT 5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"OpenAI o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3-mini":{"id":"openai/o3-mini","name":"OpenAI o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"OpenAI o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":1}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT 5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"moonshotai/kimi-latest":{"id":"moonshotai/kimi-latest","name":"Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.2}},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code High-Speed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":1.9,"output":8,"cache_read":0.32}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.5,"output":2.6,"cache_read":0.125}},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":100352},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.2}},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.3,"output":1.9,"cache_read":0.15}},"moonshotai/kimi-k2.6:thinking":{"id":"moonshotai/kimi-k2.6:thinking","name":"Kimi K2.6 Thinking","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.5,"output":2.6,"cache_read":0.125}},"moonshotai/kimi-k2-instruct-0711":{"id":"moonshotai/kimi-k2-instruct-0711","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"moonshotai/kimi-k2.5:thinking":{"id":"moonshotai/kimi-k2.5:thinking","name":"Kimi K2.5 Thinking","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65536},"cost":{"input":0.3,"output":1.9,"cache_read":0.15}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":2.856,"output":14.246,"cache_read":1.428}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006}},"upstage/solar-pro4:thinking":{"id":"upstage/solar-pro4:thinking","name":"Solar Pro 4 Thinking","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":80000},"cost":{"input":0.25,"output":0.9,"cache_read":0.125}},"tencent/hy3":{"id":"tencent/hy3","name":"Tencent Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":128000},"cost":{"input":0.066,"output":0.26,"cache_read":0.029}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Tencent Hy4 Preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"TheDrummer/skyfall-36b-v2":{"id":"TheDrummer/skyfall-36b-v2","name":"TheDrummer Skyfall 36B V2","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"TheDrummer/UnslopNemo-12B-v4.1":{"id":"TheDrummer/UnslopNemo-12B-v4.1","name":"UnslopNemo 12b v4","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":26214},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"TheDrummer/Cydonia-24B-v4.3":{"id":"TheDrummer/Cydonia-24B-v4.3","name":"The Drummer Cydonia 24B v4.3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-25","last_updated":"2025-12-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.12,"output":0.15,"cache_read":0.06}},"TheDrummer/Cydonia-24B-v2":{"id":"TheDrummer/Cydonia-24B-v2","name":"The Drummer Cydonia 24B v2","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"TheDrummer/Cydonia-24B-v4":{"id":"TheDrummer/Cydonia-24B-v4","name":"The Drummer Cydonia 24B v4","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.2006,"output":0.2414,"cache_read":0.1003}},"TheDrummer/Anubis-70B-v1.1":{"id":"TheDrummer/Anubis-70B-v1.1","name":"Anubis 70B v1.1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155}},"TheDrummer/Magidonia-24B-v4.3":{"id":"TheDrummer/Magidonia-24B-v4.3","name":"The Drummer Magidonia 24B v4.3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-25","last_updated":"2025-12-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"TheDrummer/Cydonia-24B-v4.1":{"id":"TheDrummer/Cydonia-24B-v4.1","name":"The Drummer Cydonia 24B v4.1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.35,"output":0.55,"cache_read":0.16}},"TheDrummer/Anubis-70B-v1":{"id":"TheDrummer/Anubis-70B-v1","name":"Anubis 70B v1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155}},"TheDrummer/Rocinante-12B-v1.1":{"id":"TheDrummer/Rocinante-12B-v1.1","name":"Rocinante 12b","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.408,"output":0.595,"cache_read":0.204}},"soob3123/Veiled-Calla-12B":{"id":"soob3123/Veiled-Calla-12B","name":"Veiled Calla 12B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-13","last_updated":"2025-04-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"soob3123/amoral-gemma3-27B-v2":{"id":"soob3123/amoral-gemma3-27B-v2","name":"Amoral Gemma3 27B v2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-23","last_updated":"2025-05-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"soob3123/GrayLine-Qwen3-8B":{"id":"soob3123/GrayLine-Qwen3-8B","name":"Grayline Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"mistral/mistral-medium-3.5:thinking":{"id":"mistral/mistral-medium-3.5:thinking","name":"Mistral Medium 3.5 Thinking","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75}},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75}},"nanogpt/coding-router:low":{"id":"nanogpt/coding-router:low","name":"Coding Router Low","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"nanogpt/coding-router:high":{"id":"nanogpt/coding-router:high","name":"Coding Router High","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"nanogpt/coding-router":{"id":"nanogpt/coding-router","name":"Coding Router","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"nanogpt/coding-router:max":{"id":"nanogpt/coding-router:max","name":"Coding Router Max","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"nanogpt/coding-router:medium":{"id":"nanogpt/coding-router:medium","name":"Coding Router Medium","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"liquid/lfm-2.5-2.6b":{"id":"liquid/lfm-2.5-2.6b","name":"LFM2.5 2.6B","description":"Liquid AI's compact 2.6B reasoning model for agent workflows, data extraction, RAG, and long-context processing. It supports tool calling and structured output, but Liquid advises against using it for agentic coding. Warning: prompts and responses may be logged and used for model training or service improvement; do not send sensitive data.","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.2,"output":0.8,"cache_read":0.1}},"z-ai/glm-4.5v:thinking":{"id":"z-ai/glm-4.5v:thinking","name":"GLM 4.5V Thinking","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":24000},"cost":{"input":0.3,"output":0.9,"cache_read":0.15}},"z-ai/glm-4.6v-original":{"id":"z-ai/glm-4.6v-original","name":"GLM 4.6V Original","description":"GLM-4.6V scales its context window to 128k tokens in training, and achieves SoTA performance in visual understanding among models of similar parameter scales. Integrates native Function Calling capabilities, bridging 'visual perception' and 'executable action' for multimodal agents. Direct via Z-AI (Zhipu).","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":24000},"cost":{"input":0.6,"output":0.9,"cache_read":0.3}},"z-ai/glm-5.3:thinking":{"id":"z-ai/glm-5.3:thinking","name":"GLM 5.3 Thinking","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/GLM-4.6-turbo":{"id":"z-ai/GLM-4.6-turbo","name":"GLM 4.6 Turbo","description":"Fast variant of GLM 4.6 for general chat, coding, and analysis with improved latency and strong reasoning.","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5}},"z-ai/GLM-4.5-Air:thinking":{"id":"z-ai/GLM-4.5-Air:thinking","name":"GLM 4.5 Air (Thinking)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06}},"z-ai/glm-4.6:thinking":{"id":"z-ai/glm-4.6:thinking","name":"GLM 4.6 Thinking","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078}},"z-ai/glm-4.7-original":{"id":"z-ai/glm-4.7-original","name":"GLM 4.7 Original","description":"GLM-4.7 is a next-gen GLM series text model with stronger reasoning, long-context chat, and reliable tool use. Routed directly via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.7-flash:thinking":{"id":"z-ai/glm-4.7-flash:thinking","name":"GLM 4.7 Flash Thinking","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"z-ai/glm-4.7:thinking":{"id":"z-ai/glm-4.7:thinking","name":"GLM 4.7 Thinking","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.2,"output":0.8,"cache_read":0.1}},"z-ai/glm-5v-turbo:thinking":{"id":"z-ai/glm-5v-turbo:thinking","name":"GLM 5V Turbo Thinking","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-4.7-flash-original":{"id":"z-ai/glm-4.7-flash-original","name":"GLM 4.7 Flash Original","description":"GLM-4.7-Flash is a lightweight 30B model optimized for coding and agentic tasks. Balances high performance with efficiency, perfect for local deployment.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"z-ai/GLM-4.5:thinking":{"id":"z-ai/GLM-4.5:thinking","name":"GLM 4.5 (Thinking)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15}},"z-ai/glm-5-original:thinking":{"id":"z-ai/glm-5-original:thinking","name":"GLM 5 Original Thinking","description":"GLM-5 original with extended thinking capabilities for complex reasoning.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15}},"z-ai/GLM-4.5-Air":{"id":"z-ai/GLM-4.5-Air","name":"GLM 4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06}},"z-ai/glm-4.7-original:thinking":{"id":"z-ai/glm-4.7-original:thinking","name":"GLM 4.7 Original Thinking","description":"GLM-4.7 original with extended thinking capabilities for complex reasoning.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3}},"z-ai/glm-5.1:thinking":{"id":"z-ai/glm-5.1:thinking","name":"GLM 5.1 Thinking","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.75,"output":2.6,"cache_read":0.15}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.5,"output":2.55,"cache_read":0.13}},"z-ai/GLM-4.6-turbo:thinking":{"id":"z-ai/GLM-4.6-turbo:thinking","name":"GLM 4.6 Turbo (Thinking)","description":"GLM 4.6 Turbo with thinking mode enabled for enhanced reasoning; shows internal reasoning and supports long context.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.75,"output":2.6,"cache_read":0.15}},"z-ai/glm-5.2:thinking":{"id":"z-ai/glm-5.2:thinking","name":"GLM 5.2 Thinking","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078}},"z-ai/glm-latest":{"id":"z-ai/glm-latest","name":"GLM Latest","description":"Compatibility alias that routes to the newest thinking GLM model. Currently routes to GLM 5.2 Thinking.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-4.7-flash-original:thinking":{"id":"z-ai/glm-4.7-flash-original:thinking","name":"GLM 4.7 Flash Original Thinking","description":"GLM-4.7-Flash with extended thinking capabilities for complex reasoning. Lightweight 30B model optimized for coding and agentic tasks.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"z-ai/glm-5-original":{"id":"z-ai/glm-5-original","name":"GLM 5 Original","description":"GLM-5 is Zhipu's latest flagship model with advanced reasoning and instruction following. Routed directly via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-5.3-flash-uncensored":{"id":"z-ai/glm-5.3-flash-uncensored","name":"GLM 5.3 Flash Uncensored","description":"GLM 5.3 Flash Uncensored is an uncensored fine-tune of the efficient 320B mixture-of-experts reasoning model, built for unrestricted chat, creative writing, coding, agentic work, tool use, and long-context tasks.","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":32768},"cost":{"input":0.35,"output":1.4,"cache_read":0.175}},"z-ai/glm-4.6-original":{"id":"z-ai/glm-4.6-original","name":"GLM 4.6 Original","description":"GLM-4.6, Zhipu's flagship text model with 256K context window and advanced reasoning capabilities. Direct via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175}},"z-ai/glm-5:thinking":{"id":"z-ai/glm-5:thinking","name":"GLM 5 Thinking","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.5,"output":2.55,"cache_read":0.13}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{"id":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","name":"MS3.2 24B Magnum Diamond","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"THUDM/GLM-4-9B-0414":{"id":"THUDM/GLM-4-9B-0414","name":"GLM 4 9B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"THUDM/GLM-Z1-9B-0414":{"id":"THUDM/GLM-Z1-9B-0414","name":"GLM Z1 9B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm-z","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"THUDM/GLM-4-32B-0414":{"id":"THUDM/GLM-4-32B-0414","name":"GLM 4 32B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}}}},"watsonx":{"id":"watsonx","env":["WATSONX_AI_APIKEY","WATSONX_AI_PROJECT_ID"],"npm":"watsonx-ai-provider","name":"watsonx.ai","doc":"https://www.ibm.com/docs/en/watsonx/saas?topic=solutions-supported-foundation-models","models":{"mistralai/mistral-small-3-1-24b-instruct-2503":{"id":"mistralai/mistral-small-3-1-24b-instruct-2503","name":"Mistral Small 3.1 24B","description":"Efficient multimodal model for instruction following, coding, reasoning, and function calling","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.106,"output":0.318}},"ibm/granite-4-h-small":{"id":"ibm/granite-4-h-small","name":"Granite-4.0-H-Small","description":"Open-weight hybrid model for enterprise chat, coding, retrieval-augmented generation, and tool-calling workloads","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0636,"output":0.265}},"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"id":"meta-llama/llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.371,"output":1.484}},"meta-llama/llama-3-3-70b-instruct":{"id":"meta-llama/llama-3-3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.7526,"output":0.7526}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.159,"output":0.636}}}},"digitalocean":{"id":"digitalocean","env":["DIGITALOCEAN_ACCESS_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.do-ai.run/v1","name":"DigitalOcean","doc":"https://docs.digitalocean.com/products/gradient-ai-platform/details/models/","models":{"openai-gpt-4o":{"id":"openai-gpt-4o","name":"OpenAI GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai-gpt-5.2-pro":{"id":"openai-gpt-5.2-pro","name":"OpenAI GPT-5.2 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168}},"bge-reranker-v2-m3":{"id":"bge-reranker-v2-m3","name":"BGE Reranker v2 M3","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-12","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1},"cost":{"input":0.01,"output":0}},"anthropic-claude-opus-4.6":{"id":"anthropic-claude-opus-4.6","name":"Anthropic Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"openai-o3":{"id":"openai-o3","name":"OpenAI o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.08,"output":0.252,"cache_read":0.0252}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":131072}},"qwen-2.5-14b-instruct":{"id":"qwen-2.5-14b-instruct","name":"Qwen 2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072}},"nvidia-nemotron-3-super-120b":{"id":"nvidia-nemotron-3-super-120b","name":"NVIDIA Nemotron 3 Super 120B (Public Preview)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.3,"output":0.65,"cache_read":0.06}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":1.7,"cache_read":0.09}},"openai-gpt-5.6-terra":{"id":"openai-gpt-5.6-terra","name":"OpenAI GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemma-4-31B-it":{"id":"gemma-4-31B-it","name":"Gemma 4","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.18,"output":0.5,"cache_read":0.036}},"alibaba-qwen3-32b":{"id":"alibaba-qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.55}},"openai-gpt-image-1.5":{"id":"openai-gpt-image-1.5","name":"OpenAI GPT Image 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["image","text"]},"open_weights":false,"limit":{"context":0,"output":16384},"cost":{"input":5,"output":10,"cache_read":1}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"anthropic-claude-opus-4":{"id":"anthropic-claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":2.2,"cache_read":0.105}},"arcee-trinity-large-thinking":{"id":"arcee-trinity-large-thinking","name":"Arcee Trinity Large Thinking (Public Preview)","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.25,"output":0.9,"cache_read":0.06}},"anthropic-claude-opus-4.7":{"id":"anthropic-claude-opus-4.7","name":"Anthropic Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic-claude-fable-5":{"id":"anthropic-claude-fable-5","name":"Anthropic Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic-claude-3.5-sonnet":{"id":"anthropic-claude-3.5-sonnet","name":"Claude 3.5 Sonnet","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-06-20","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax M2.5 (Public Preview)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-m2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-12","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"openai-gpt-4.1":{"id":"openai-gpt-4.1","name":"OpenAI GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai-gpt-5.3-codex":{"id":"openai-gpt-5.3-codex","name":"OpenAI GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai-gpt-oss-120b":{"id":"openai-gpt-oss-120b","name":"OpenAI GPT-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.055,"output":0.385,"cache_read":0.02}},"openai-gpt-5.2":{"id":"openai-gpt-5.2","name":"OpenAI GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"anthropic-claude-4.5-haiku":{"id":"anthropic-claude-4.5-haiku","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":1,"cache_write":1.25}},"e5-large-v2":{"id":"e5-large-v2","name":"E5 Large v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-05-19","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.02,"output":0}},"openai-gpt-5.6-luna":{"id":"openai-gpt-5.6-luna","name":"OpenAI GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04}}},"anthropic-claude-5-sonnet":{"id":"anthropic-claude-5-sonnet","name":"Anthropic Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai-gpt-oss-20b":{"id":"openai-gpt-oss-20b","name":"OpenAI GPT-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.45}},"deepseek-3.2":{"id":"deepseek-3.2","name":"Deepseek 3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-12-02","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":0.8,"cache_read":0.075}},"multi-qa-mpnet-base-dot-v1":{"id":"multi-qa-mpnet-base-dot-v1","name":"Multi-QA-mpnet-base-dot-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":768},"cost":{"input":0.009,"output":0}},"anthropic-claude-3.7-sonnet":{"id":"anthropic-claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"nemotron-3-nano-30b":{"id":"nemotron-3-nano-30b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"gte-large-en-v1.5":{"id":"gte-large-en-v1.5","name":"GTE Large (v1.5)","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-27","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0.09,"output":0}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen 3.5 397B A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.55,"output":3.5,"cache_read":0.111}},"openai-gpt-5":{"id":"openai-gpt-5","name":"OpenAI GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"llama-4-maverick":{"id":"llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.696}},"llama3.3-70b-instruct":{"id":"llama3.3-70b-instruct","name":"Llama 3.3 Instruct (70B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.65,"output":0.65}},"all-mini-lm-l6-v2":{"id":"all-mini-lm-l6-v2","name":"All-MiniLM-L6-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256,"output":384},"cost":{"input":0.009,"output":0}},"anthropic-claude-sonnet-4":{"id":"anthropic-claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.3,"cache_write":3.75,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.3,"cache_write":3.75}}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.85,"output":14.25,"cache_read":0.285}},"openai-gpt-5.4-mini":{"id":"openai-gpt-5.4-mini","name":"OpenAI GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"anthropic-claude-opus-4.8":{"id":"anthropic-claude-opus-4.8","name":"Anthropic Claude Opus 4.8","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"openai-gpt-5.4-pro":{"id":"openai-gpt-5.4-pro","name":"OpenAI GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"deepseek-4-flash":{"id":"deepseek-4-flash","name":"Deepseek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-05-27","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.0679,"output":0.168,"cache_read":0.0168}},"openai-gpt-5.6-sol":{"id":"openai-gpt-5.6-sol","name":"OpenAI GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"tiers":[{"input":8,"output":30,"cache_read":0.8,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8}}},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"Mistral Nemo Instruct","description":"Legacy model retained for compatibility with older integrations","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.3,"output":0.3}},"nemotron-3-ultra-550b":{"id":"nemotron-3-ultra-550b","name":"Nemotron 3 Ultra","description":"Flagship Nemotron model for high-throughput reasoning and complex agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.9,"output":1.7}},"anthropic-claude-fable-5.1":{"id":"anthropic-claude-fable-5.1","name":"Anthropic Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"nemotron-nano-12b-v2-vl":{"id":"nemotron-nano-12b-v2-vl","name":"Nemotron-nano 12b v2-vl","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.6}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32678,"output":8192},"cost":{"input":0.99,"output":0.99}},"openai-o3-mini":{"id":"openai-o3-mini","name":"OpenAI o3 mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai-gpt-5.1-codex-max":{"id":"openai-gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"nemotron-3-nano-omni":{"id":"nemotron-3-nano-omni","name":"Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":0.9}},"openai-gpt-5.4":{"id":"openai-gpt-5.4","name":"OpenAI GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai-gpt-5-nano":{"id":"openai-gpt-5-nano","name":"OpenAI GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"anthropic-claude-4.5-sonnet":{"id":"anthropic-claude-4.5-sonnet","name":"Anthropic Claude 4.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"Mistral 7B Instruct v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-05-22","last_updated":"2024-05-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768}},"ministral-3-8b-instruct-2512":{"id":"ministral-3-8b-instruct-2512","name":"Ministral 3 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"openai-gpt-5.5":{"id":"openai-gpt-5.5","name":"OpenAI GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"glm-5":{"id":"glm-5","name":"GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":64000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"openai-gpt-5-mini":{"id":"openai-gpt-5-mini","name":"OpenAI GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"anthropic-claude-3.5-haiku":{"id":"anthropic-claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-11-05","last_updated":"2024-11-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8-Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.7,"cache_read":0.203}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":1.3,"output":4.3,"cache_read":0.26}},"mistral-3-14B":{"id":"mistral-3-14B","name":"Ministral 3 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.2,"output":0.2}},"qwen3-tts-voicedesign":{"id":"qwen3-tts-voicedesign","name":"Qwen3 TTS VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":32768,"output":1}},"bge-m3":{"id":"bge-m3","name":"BGE M3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0.02,"output":0}},"qwen3-embedding-0.6b":{"id":"qwen3-embedding-0.6b","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":1024},"status":"beta","cost":{"input":0.04,"output":0}},"openai-o1":{"id":"openai-o1","name":"OpenAI o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"wan2-2-t2v-a14b":{"id":"wan2-2-t2v-a14b","name":"Wan2.2-T2V-A14B","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-07-28","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["video"]},"open_weights":true,"limit":{"context":100,"output":1},"cost":{"input":0.6,"output":0}},"anthropic-claude-3-opus":{"id":"anthropic-claude-3-opus","name":"Claude 3 Opus","description":"Legacy model retained for compatibility with older integrations","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08","release_date":"2024-02-29","last_updated":"2024-02-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic-claude-4.1-opus":{"id":"anthropic-claude-4.1-opus","name":"Anthropic Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"openai-gpt-image-1":{"id":"openai-gpt-image-1","name":"GPT Image 1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"Deepseek V4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.87,"output":1.74,"cache_read":0.174}},"stable-diffusion-3.5-large":{"id":"stable-diffusion-3.5-large","name":"Stable Diffusion 3.5 Large","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-10-22","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":256,"output":1},"cost":{"input":0.08,"output":0}},"anthropic-claude-opus-4.5":{"id":"anthropic-claude-opus-4.5","name":"Anthropic Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"llama3-8b-instruct":{"id":"llama3-8b-instruct","name":"Llama 3.1 Instruct (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.198,"output":0.198}},"glm-5.3":{"id":"glm-5.3","name":"GLM5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"anthropic-claude-opus-5":{"id":"anthropic-claude-opus-5","name":"Anthropic Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"openai-gpt-5.4-nano":{"id":"openai-gpt-5.4-nano","name":"OpenAI GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"anthropic-claude-4.6-sonnet":{"id":"anthropic-claude-4.6-sonnet","name":"Anthropic Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic-claude-haiku-4.5":{"id":"anthropic-claude-haiku-4.5","name":"Anthropic Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":1.5,"cache_read":0.08}},"openai-gpt-image-2":{"id":"openai-gpt-image-2","name":"OpenAI GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image","text"]},"open_weights":false,"limit":{"context":0,"output":16384},"cost":{"input":8,"output":30}},"openai-gpt-4o-mini":{"id":"openai-gpt-4o-mini","name":"OpenAI GPT-4o mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"fal-ai/fast-sdxl":{"id":"fal-ai/fast-sdxl","name":"Fast SDXL","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-07-26","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":0,"output":0}},"fal-ai/elevenlabs/tts/multilingual-v2":{"id":"fal-ai/elevenlabs/tts/multilingual-v2","name":"ElevenLabs Multilingual TTS v2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-08-22","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fal-ai/stable-audio-25/text-to-audio":{"id":"fal-ai/stable-audio-25/text-to-audio","name":"Stable Audio 2.5 (Text-to-Audio)","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-08","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fal-ai/flux/schnell":{"id":"fal-ai/flux/schnell","name":"FLUX.1 [schnell]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-01","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":0,"output":0}}}},"vivgrid":{"id":"vivgrid","env":["VIVGRID_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.vivgrid.com/v1","name":"Vivgrid","doc":"https://docs.vivgrid.com/models","models":{"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT 5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.2,"cache_read":0.3}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.3,"reasoning":0.3,"cache_read":0.03}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT 5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.28,"output":0.42}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.04}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT 5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}}}},"auriko":{"id":"auriko","env":["AURIKO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.auriko.ai/v1","name":"Auriko","doc":"https://docs.auriko.ai","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_write":0.375}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"qwen-3.6-plus":{"id":"qwen-3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_write":0.375}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}}}},"siliconflow-cn":{"id":"siliconflow-cn","env":["SILICONFLOW_CN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.siliconflow.cn/v1","name":"SiliconFlow (China)","doc":"https://cloud.siliconflow.com/models","models":{"baidu/ERNIE-4.5-300B-A47B":{"id":"baidu/ERNIE-4.5-300B-A47B","name":"baidu/ERNIE-4.5-300B-A47B","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-02","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.28,"output":1.1}},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"stepfun-ai/Step-3.5-Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","family":"step","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.003}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-OCR":{"id":"deepseek-ai/DeepSeek-OCR","name":"deepseek-ai/DeepSeek-OCR","description":"OCR model for extracting structured text from documents and screenshots","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"deepseek-ai/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"deepseek-ai/DeepSeek-V4-Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":393000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"deepseek-ai/DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"inclusionAI/Ling-flash-2.0":{"id":"inclusionAI/Ling-flash-2.0","name":"inclusionAI/Ling-flash-2.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen/Qwen3.5-27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.09}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06}},"Qwen/Qwen3-14B":{"id":"Qwen/Qwen3-14B","name":"Qwen/Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3.5-4B":{"id":"Qwen/Qwen3.5-4B","name":"Qwen/Qwen3.5-4B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen/Qwen3.5-9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.74}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen/Qwen3.5-122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.32}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen/Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.74}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen/Qwen3.5-35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen/Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.13,"output":0.6}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen/Qwen3.6-35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86}},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen/Qwen3-VL-30B-A3B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen/Qwen3-VL-235B-A22B-Thinking","name":"Qwen/Qwen3-VL-235B-A22B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":3.5}},"Qwen/Qwen3-VL-8B-Instruct":{"id":"Qwen/Qwen3-VL-8B-Instruct","name":"Qwen/Qwen3-VL-8B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68}},"Qwen/Qwen3-VL-32B-Instruct":{"id":"Qwen/Qwen3-VL-32B-Instruct","name":"Qwen/Qwen3-VL-32B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen/Qwen2.5-72B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59}},"Qwen/Qwen2.5-7B-Instruct":{"id":"Qwen/Qwen2.5-7B-Instruct","name":"Qwen/Qwen2.5-7B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.3,"output":1.5}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-01","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3-VL-32B-Thinking":{"id":"Qwen/Qwen3-VL-32B-Thinking","name":"Qwen/Qwen3-VL-32B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"id":"Qwen/Qwen3-VL-30B-A3B-Thinking","name":"Qwen/Qwen3-VL-30B-A3B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen/Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3}},"ByteDance-Seed/Seed-OSS-36B-Instruct":{"id":"ByteDance-Seed/Seed-OSS-36B-Instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57}},"Pro/deepseek-ai/DeepSeek-V3":{"id":"Pro/deepseek-ai/DeepSeek-V3","name":"Pro/deepseek-ai/DeepSeek-V3","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"Pro/deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"Pro/deepseek-ai/DeepSeek-V3.1-Terminus","name":"Pro/deepseek-ai/DeepSeek-V3.1-Terminus","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"Pro/deepseek-ai/DeepSeek-R1":{"id":"Pro/deepseek-ai/DeepSeek-R1","name":"Pro/deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"Pro/deepseek-ai/DeepSeek-V3.2":{"id":"Pro/deepseek-ai/DeepSeek-V3.2","name":"Pro/deepseek-ai/DeepSeek-V3.2","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42}},"Pro/zai-org/GLM-5.1":{"id":"Pro/zai-org/GLM-5.1","name":"Pro/zai-org/GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"Pro/zai-org/GLM-5":{"id":"Pro/zai-org/GLM-5","name":"Pro/zai-org/GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":1,"output":3.2}},"Pro/MiniMaxAI/MiniMax-M2.5":{"id":"Pro/MiniMaxAI/MiniMax-M2.5","name":"Pro/MiniMaxAI/MiniMax-M2.5","description":"Frontier MiniMax model for engineering, office tasks, and agentic reasoning","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":131000},"cost":{"input":0.3,"output":1.22}},"Pro/moonshotai/Kimi-K2.5":{"id":"Pro/moonshotai/Kimi-K2.5","name":"Pro/moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"Pro/moonshotai/Kimi-K2.6":{"id":"Pro/moonshotai/Kimi-K2.6","name":"Pro/moonshotai/Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"tencent/Hunyuan-A13B-Instruct":{"id":"tencent/Hunyuan-A13B-Instruct","name":"tencent/Hunyuan-A13B-Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"PaddlePaddle/PaddleOCR-VL-1.5":{"id":"PaddlePaddle/PaddleOCR-VL-1.5","name":"PaddlePaddle/PaddleOCR-VL-1.5","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-29","last_updated":"2026-01-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0,"output":0}}}},"nova":{"id":"nova","env":["NOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.nova.amazon.com/v1","name":"Nova","doc":"https://nova.amazon.com/dev/documentation","models":{"nova-2-lite-v1":{"id":"nova-2-lite-v1","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0}},"nova-2-pro-v1":{"id":"nova-2-pro-v1","name":"Nova 2 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2026-01-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0}}}},"inceptron":{"id":"inceptron","env":["INCEPTRON_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inceptron.io/v1","name":"Inceptron","doc":"https://docs.inceptron.io","models":{"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.13,"output":0.28,"cache_read":0.03,"cache_write":0}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.71,"output":2.35,"cache_read":0.12,"cache_write":0}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.66,"output":3.4,"cache_read":0.18,"cache_write":0}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.53,"output":3.39,"cache_read":0.17,"cache_write":0}}}},"vultr":{"id":"vultr","env":["VULTR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.vultrinference.com/v1","name":"Vultr","doc":"https://api.vultrinference.com/","models":{"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1}},"nvidia/DeepSeek-V3.2-NVFP4":{"id":"nvidia/DeepSeek-V3.2-NVFP4","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.55,"output":1.65}},"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16":{"id":"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16","name":"NVIDIA Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.13,"output":0.38}},"nvidia/Nemotron-Cascade-2-30B-A3B":{"id":"nvidia/Nemotron-Cascade-2-30B-A3B","name":"NVIDIA Nemotron Cascade 2","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6}},"zai-org/GLM-5.2-FP8":{"id":"zai-org/GLM-5.2-FP8","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":393216,"output":131072},"cost":{"input":0.85,"output":3.1}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":1.2}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.55,"output":1.65}}}},"ollama-cloud":{"id":"ollama-cloud","env":["OLLAMA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ollama.com/v1","name":"Ollama Cloud","doc":"https://docs.ollama.com/cloud","models":{"gpt-oss:20b":{"id":"gpt-oss:20b","name":"gpt-oss:20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768}},"deepseek-v4-flash:0731":{"id":"deepseek-v4-flash:0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576}},"minimax-m2.7":{"id":"minimax-m2.7","name":"minimax-m2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608}},"kimi-k2.6":{"id":"kimi-k2.6","name":"kimi-k2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":976000,"output":131072}},"minimax-m2.5":{"id":"minimax-m2.5","name":"minimax-m2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072}},"minimax-m3":{"id":"minimax-m3","name":"minimax-m3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":131072}},"qwen3.5:397b":{"id":"qwen3.5:397b","name":"qwen3.5:397b","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"release_date":"2026-02-15","last_updated":"2026-02-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"deepseek-v4-flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"kimi-k2.7-code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"gpt-oss:120b":{"id":"gpt-oss:120b","name":"gpt-oss:120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768}},"nemotron-3-ultra":{"id":"nemotron-3-ultra","name":"nemotron-3-ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000}},"nemotron-3-nano:30b":{"id":"nemotron-3-nano:30b","name":"nemotron-3-nano:30b","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072}},"mistral-large-3:675b":{"id":"mistral-large-3:675b","name":"mistral-large-3:675b","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-12-02","last_updated":"2026-01-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"kimi-k3":{"id":"kimi-k3","name":"kimi-k3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072}},"gemma4:31b":{"id":"gemma4:31b","name":"gemma4:31b","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"kimi-k2.5":{"id":"kimi-k2.5","name":"kimi-k2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"glm-5.1":{"id":"glm-5.1","name":"glm-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-03-27","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"deepseek-v4-pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072}},"nemotron-3-super":{"id":"nemotron-3-super","name":"nemotron-3-super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536}}}},"freemodel":{"id":"freemodel","env":["FREEMODEL_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://cc.freemodel.dev/v1","name":"FreeModel","doc":"https://freemodel.dev","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5}}}},"iflowcn":{"id":"iflowcn","env":["IFLOW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://apis.iflow.cn/v1","name":"iFlow","doc":"https://platform.iflow.cn/en/docs","models":{"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3-Coder-Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3-235B-A22B-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"qwen3-235b-a22b-instruct":{"id":"qwen3-235b-a22b-instruct","name":"Qwen3-235B-A22B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-235b":{"id":"qwen3-235b","name":"Qwen3-235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"kimi-k2-0905":{"id":"kimi-k2-0905","name":"Kimi-K2-0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL-Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-max-preview":{"id":"qwen3-max-preview","name":"Qwen3-Max-Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3-Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"kimi-k2":{"id":"kimi-k2","name":"Kimi-K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0}}}},"scx-ai":{"id":"scx-ai","env":["SCX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scx.ai/v1","name":"SCX.ai","doc":"https://platform.scx.ai/docs","models":{"Qwen3.8-Max":{"id":"Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":983616,"output":131072},"cost":{"input":1.815,"output":5.4461,"cache_read":0.17,"cache_write":2.5}},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.55,"output":1.784,"cache_read":0.111}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.17,"output":0.55}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05}}}},"evroc":{"id":"evroc","env":["EVROC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://models.think.evroc.com/v1","name":"evroc","doc":"https://docs.evroc.com/products/think/overview.html","models":{"evroc/roc":{"id":"evroc/roc","name":"roc","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-06-06","last_updated":"2026-06-06","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":2.875,"output":11.516}},"mistralai/Voxtral-Small-24B-2507":{"id":"mistralai/Voxtral-Small-24B-2507","name":"Voxtral Small 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["audio","text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"mistralai/Mistral-Medium-3.5-128B":{"id":"mistralai/Mistral-Medium-3.5-128B","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.725,"output":6.9}},"nvidia/Llama-3.3-70B-Instruct-FP8":{"id":"nvidia/Llama-3.3-70B-Instruct-FP8","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":1.15,"output":1.15}},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.144,"output":0.575}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":1.4375,"output":5.75}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8-27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.87,"output":3.5}},"Qwen/Qwen3-Reranker-4B":{"id":"Qwen/Qwen3-Reranker-4B","name":"Qwen3 Reranker 4B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.0575,"output":0}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.345,"output":1.38}},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":4096},"cost":{"input":0.115,"output":0.115}},"intfloat/multilingual-e5-large-instruct":{"id":"intfloat/multilingual-e5-large-instruct","name":"E5 Multi-Lingual Large Embeddings 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"cost":{"input":0.114,"output":0.114}},"KBLab/kb-whisper-large":{"id":"KBLab/kb-whisper-large","name":"KB Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper 3 Large","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"openai/whisper-large-v3-turbo":{"id":"openai/whisper-large-v3-turbo","name":"Whisper Large v3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.23,"output":0.92}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.4375,"output":5.75}}}},"echo":{"id":"echo","env":["ECHO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://echo.tracerml.ai/v1","name":"Echo","doc":"https://echo.tracerml.ai/docs/api","models":{"echo":{"id":"echo","name":"Echo","description":"Adaptive model for coding, reasoning, and tool-driven agent workflows through one OpenAI-compatible endpoint","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"status":"beta","cost":{"input":10,"output":50}}}},"aixy":{"id":"aixy","env":["AIXY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.aixy-gateway.com/v1","name":"Aixy","doc":"https://docs.aixy-gateway.com/integrations/overview","models":{"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}}}},"impossibl":{"id":"impossibl","env":["IMPOSSIBL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.impossibl.com/v1","name":"Impossibl","doc":"https://impossibl.com/docs/models","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5}},"qwen/qwen3.8-max-preview":{"id":"qwen/qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"tiers":[{"input":1,"output":4,"cache_read":0.2,"tier":{"type":"context","size":262144}}],"context_over_200k":{"input":1,"output":4,"cache_read":0.2}}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":262144}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}}},"groq/gpt-oss-20b":{"id":"groq/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"groq/gpt-oss-120b":{"id":"groq/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51,"cache_read":0.028}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":3}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":3}}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2}},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"fireworks/glm-5.2":{"id":"fireworks/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14}},"fireworks/gpt-oss-20b":{"id":"fireworks/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3,"cache_read":0.035}},"fireworks/gpt-oss-120b":{"id":"fireworks/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75}}}},"llmgateway-providers":{"id":"llmgateway-providers","env":["LLMGATEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmgateway.io/v1","name":"LLM Gateway","doc":"https://llmgateway.io/docs","models":{"vertex-openai/glm-4.7":{"id":"vertex-openai/glm-4.7","name":"GLM-4.7 (Vertex AI (OpenAI-compatible))","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.6,"output":2.2}},"vertex-openai/qwen3-next-80b-a3b-thinking":{"id":"vertex-openai/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking (Vertex AI (OpenAI-compatible))","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"vertex-openai/qwen3-next-80b-a3b-instruct":{"id":"vertex-openai/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct (Vertex AI (OpenAI-compatible))","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"vertex-openai/kimi-k2-thinking":{"id":"vertex-openai/kimi-k2-thinking","name":"Kimi K2 Thinking (Vertex AI (OpenAI-compatible))","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":2.5,"cache_read":0.06}},"vertex-openai/deepseek-v3.2":{"id":"vertex-openai/deepseek-v3.2","name":"DeepSeek V3.2 (Vertex AI (OpenAI-compatible))","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.56,"output":1.68,"cache_read":0.056}},"vertex-openai/glm-5":{"id":"vertex-openai/glm-5","name":"GLM-5 (Vertex AI (OpenAI-compatible))","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":32768},"cost":{"input":1,"output":3.2,"cache_read":0.1}},"vertex-openai/qwen3-235b-a22b-instruct-2507":{"id":"vertex-openai/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (Vertex AI (OpenAI-compatible))","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.22,"output":0.88}},"vertex-openai/grok-4-6":{"id":"vertex-openai/grok-4-6","name":"Grok 4.6 (Vertex AI (OpenAI-compatible))","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"vertex-openai/qwen3-coder-480b-a35b-instruct":{"id":"vertex-openai/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct (Vertex AI (OpenAI-compatible))","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.8,"cache_read":0.022}},"vertex-openai/grok-4-20-non-reasoning":{"id":"vertex-openai/grok-4-20-non-reasoning","name":"Grok 4.20 Non-Reasoning (Vertex AI (OpenAI-compatible))","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"vertex-openai/grok-4-20-reasoning":{"id":"vertex-openai/grok-4-20-reasoning","name":"Grok 4.20 Reasoning (Vertex AI (OpenAI-compatible))","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"baidu/kimi-k2.6":{"id":"baidu/kimi-k2.6","name":"Kimi K2.6 (Baidu)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"baidu/glm-5.2":{"id":"baidu/glm-5.2","name":"GLM-5.2 (Baidu)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"baidu/deepseek-v4-flash":{"id":"baidu/deepseek-v4-flash","name":"DeepSeek V4 Flash (Baidu)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.044}},"baidu/glm-5":{"id":"baidu/glm-5","name":"GLM-5 (Baidu)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"baidu/glm-5.1":{"id":"baidu/glm-5.1","name":"GLM-5.1 (Baidu)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"baidu/deepseek-v4-pro":{"id":"baidu/deepseek-v4-pro","name":"DeepSeek V4 Pro (Baidu)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.132}},"baidu/glm-5.3":{"id":"baidu/glm-5.3","name":"GLM-5.3 (Baidu)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"aws-mantle/gpt-5.6-sol":{"id":"aws-mantle/gpt-5.6-sol","name":"GPT-5.6 Sol (AWS Mantle)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":278528,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55,"cache_write":6.875}},"aws-mantle/gpt-5.6-luna":{"id":"aws-mantle/gpt-5.6-luna","name":"GPT-5.6 Luna (AWS Mantle)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":278528,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275}},"aws-mantle/gpt-5.6-terra":{"id":"aws-mantle/gpt-5.6-terra","name":"GPT-5.6 Terra (AWS Mantle)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":278528,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75}},"gonka24/minimax-m2.7":{"id":"gonka24/minimax-m2.7","name":"MiniMax M2.7 (Gonka24)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.08,"output":0.32,"cache_read":0.017}},"gonka24/kimi-k2.6":{"id":"gonka24/kimi-k2.6","name":"Kimi K2.6 (Gonka24)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.22,"output":1.137,"cache_read":0.048}},"gonka24/deepseek-v4-flash":{"id":"gonka24/deepseek-v4-flash","name":"DeepSeek V4 Flash (Gonka24)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":390000,"output":16384},"cost":{"input":0.051,"output":0.104,"cache_read":0.0097}},"embercloud/glm-4.7":{"id":"embercloud/glm-4.7","name":"GLM-4.7 (EmberCloud)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.38,"output":1.98,"cache_read":0.19}},"embercloud/glm-4.5-air":{"id":"embercloud/glm-4.5-air","name":"GLM-4.5 Air (EmberCloud)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":96000},"cost":{"input":0.13,"output":0.85,"cache_read":0.025}},"embercloud/glm-5.2":{"id":"embercloud/glm-5.2","name":"GLM-5.2 (EmberCloud)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":1.26,"output":3.96,"cache_read":0.234}},"embercloud/qwen3-coder-next":{"id":"embercloud/qwen3-coder-next","name":"Qwen3 Coder Next (EmberCloud)","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.108,"output":0.675,"cache_read":0.06}},"embercloud/glm-4.5":{"id":"embercloud/glm-4.5","name":"GLM-4.5 (EmberCloud)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"embercloud/glm-5":{"id":"embercloud/glm-5","name":"GLM-5 (EmberCloud)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":0.72,"output":2.3,"cache_read":0.144}},"embercloud/kimi-k2.5":{"id":"embercloud/kimi-k2.5","name":"Kimi K2.5 (EmberCloud)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225}},"embercloud/glm-5.1":{"id":"embercloud/glm-5.1","name":"GLM-5.1 (EmberCloud)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":0.931,"output":2.93,"cache_read":0.173}},"embercloud/glm-4.7-flash":{"id":"embercloud/glm-4.7-flash","name":"GLM-4.7 Flash (EmberCloud)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"scx-ai/minimax-m2.7":{"id":"scx-ai/minimax-m2.7","name":"MiniMax M2.7 (SCX.ai (Turbo))","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05}},"scx-ai/qwen3-32b":{"id":"scx-ai/qwen3-32b","name":"Qwen3 32B (SCX.ai (Turbo))","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.36,"output":0.87}},"scx-ai/llama-4-maverick-17b-instruct":{"id":"scx-ai/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (SCX.ai (Turbo))","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.53,"output":1.62}},"scx-ai/gemma-4-31b-it":{"id":"scx-ai/gemma-4-31b-it","name":"Gemma 4 31B IT (SCX.ai (Turbo))","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":0.91}},"scx-ai/gpt-oss-120b":{"id":"scx-ai/gpt-oss-120b","name":"GPT OSS 120B (SCX.ai (Turbo))","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.17,"output":0.55}},"groq/gpt-oss-20b":{"id":"groq/gpt-oss-20b","name":"GPT OSS 20B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32766},"cost":{"input":0.1,"output":0.5}},"groq/gpt-oss-120b":{"id":"groq/gpt-oss-120b","name":"GPT OSS 120B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32766},"cost":{"input":0.15,"output":0.75}},"google-vertex/gemini-3.1-pro-preview":{"id":"google-vertex/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Google Vertex AI)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google-vertex/gemini-2.5-flash-lite":{"id":"google-vertex/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite (Google Vertex AI)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"google-vertex/gemini-3.6-flash":{"id":"google-vertex/gemini-3.6-flash","name":"Gemini 3.6 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-vertex/gemini-3.1-flash-lite":{"id":"google-vertex/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite (Google Vertex AI)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333}},"google-vertex/gemini-3.5-flash":{"id":"google-vertex/gemini-3.5-flash","name":"Gemini 3.5 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333}},"google-vertex/gemini-3.5-flash-lite":{"id":"google-vertex/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333}},"google-vertex/gemini-3-flash-preview":{"id":"google-vertex/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview) (Google Vertex AI)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google-vertex/gemini-3.8-flash":{"id":"google-vertex/gemini-3.8-flash","name":"Gemini 3.8 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-vertex/gemini-3.7-flash":{"id":"google-vertex/gemini-3.7-flash","name":"Gemini 3.7 Flash (Google Vertex AI)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-vertex/gemini-2.5-pro":{"id":"google-vertex/gemini-2.5-pro","name":"Gemini 2.5 Pro (Google Vertex AI)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google-vertex/gemini-2.5-flash":{"id":"google-vertex/gemini-2.5-flash","name":"Gemini 2.5 Flash (Google Vertex AI)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"quartz/gemini-3.1-pro-preview":{"id":"quartz/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Quartz)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"vertex-anthropic/claude-sonnet-4-6":{"id":"vertex-anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Vertex AI (Anthropic))","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"vertex-anthropic/claude-opus-4-6":{"id":"vertex-anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Vertex AI (Anthropic))","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"vertex-anthropic/claude-opus-4-7":{"id":"vertex-anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Vertex AI (Anthropic))","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"vertex-anthropic/claude-haiku-4-5":{"id":"vertex-anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (Vertex AI (Anthropic))","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"vertex-anthropic/claude-sonnet-4-5":{"id":"vertex-anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (Vertex AI (Anthropic))","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"vertex-anthropic/claude-sonnet-5":{"id":"vertex-anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Vertex AI (Anthropic))","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"vertex-anthropic/claude-opus-4-5-20251101":{"id":"vertex-anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (Vertex AI (Anthropic))","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo V2.5 (Xiaomi)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro (Xiaomi)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning (MiniMax)","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1 (MiniMax)","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.27,"output":1.1}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2 (MiniMax)","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 Highspeed (MiniMax)","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7 (MiniMax)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5 (MiniMax)","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3 (MiniMax)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 Highspeed (MiniMax)","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.03}},"minimax/minimax-text-01":{"id":"minimax/minimax-text-01","name":"MiniMax Text 01 (MiniMax)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1}},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen3.7 Max (Alibaba Cloud)","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"alibaba/qwen3-coder-plus":{"id":"alibaba/qwen3-coder-plus","name":"Qwen3 Coder Plus (Alibaba Cloud)","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":66000},"cost":{"input":1,"output":5,"cache_read":0.2,"cache_write":1.25}},"alibaba/qwen35-397b-a17b":{"id":"alibaba/qwen35-397b-a17b","name":"Qwen3.5 397B A17B (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"alibaba/qwen3-coder-flash":{"id":"alibaba/qwen3-coder-flash","name":"Qwen3 Coder Flash (Alibaba Cloud)","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375}},"alibaba/qwen-max":{"id":"alibaba/qwen-max","name":"Qwen Max (Alibaba Cloud)","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4}},"alibaba/qwen3.6-plus":{"id":"alibaba/qwen3.6-plus","name":"Qwen3.6 Plus (Alibaba Cloud)","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"alibaba/qwen-flash":{"id":"alibaba/qwen-flash","name":"Qwen Flash (Alibaba Cloud)","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625}},"alibaba/glm-5.2":{"id":"alibaba/glm-5.2","name":"GLM-5.2 (Alibaba Cloud)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28}},"alibaba/deepseek-v4-flash":{"id":"alibaba/deepseek-v4-flash","name":"DeepSeek V4 Flash (Alibaba Cloud)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.2,"output":0.4,"cache_read":0.04}},"alibaba/qwen3-vl-plus":{"id":"alibaba/qwen3-vl-plus","name":"Qwen3 VL Plus (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"cache_read":0.04,"cache_write":0.25}},"alibaba/qwen-coder-plus":{"id":"alibaba/qwen-coder-plus","name":"Qwen Coder Plus (Alibaba Cloud)","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.502,"output":1.004}},"alibaba/qwen3.7-flash":{"id":"alibaba/qwen3.7-flash","name":"Qwen3.7 Flash (Alibaba Cloud)","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375}},"alibaba/qwen3.6-35b-a3b":{"id":"alibaba/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B (Alibaba Cloud)","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.375,"output":2.25}},"alibaba/qwen3-max":{"id":"alibaba/qwen3-max","name":"Qwen3 Max (Alibaba Cloud)","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32800},"cost":{"input":1.2,"output":6,"cache_read":0.24,"cache_write":1.5}},"alibaba/qwen3-vl-flash":{"id":"alibaba/qwen3-vl-flash","name":"Qwen3 VL Flash (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"alibaba/qwen-plus":{"id":"alibaba/qwen-plus","name":"Qwen Plus (Alibaba Cloud)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5}},"alibaba/qwen3.6-flash":{"id":"alibaba/qwen3.6-flash","name":"Qwen3.6 Flash (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125}},"alibaba/qwen3.8-flash":{"id":"alibaba/qwen3.8-flash","name":"Qwen3.8 Flash (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"alibaba/qwen3.6-max-preview":{"id":"alibaba/qwen3.6-max-preview","name":"Qwen3.6 Max Preview (Alibaba Cloud)","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.3,"output":7.8,"cache_read":0.13}},"alibaba/glm-5":{"id":"alibaba/glm-5","name":"GLM-5 (Alibaba Cloud)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58}},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen3.8 Max (Alibaba Cloud)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"alibaba/kimi-k2.5":{"id":"alibaba/kimi-k2.5","name":"Kimi K2.5 (Alibaba Cloud)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.574,"output":3.011}},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen3.7 Plus (Alibaba Cloud)","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"alibaba/qwen-omni-turbo":{"id":"alibaba/qwen-omni-turbo","name":"Qwen Omni Turbo (Alibaba Cloud)","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.2,"output":0.8}},"alibaba/deepseek-v4-pro":{"id":"alibaba/deepseek-v4-pro","name":"DeepSeek V4 Pro (Alibaba Cloud)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":2.4,"output":4.8,"cache_read":0.2}},"alibaba/qwen-plus-latest":{"id":"alibaba/qwen-plus-latest","name":"Qwen Plus Latest (Alibaba Cloud)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-09-09","last_updated":"2024-09-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5}},"scx-ai-gp/glm-5.2":{"id":"scx-ai-gp/glm-5.2","name":"GLM-5.2 (SCX.ai)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.55,"output":1.784,"cache_read":0.111}},"scx-ai-gp/kimi-k2.7-code":{"id":"scx-ai-gp/kimi-k2.7-code","name":"Kimi K2.7 Code (SCX.ai)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.89,"output":3.71,"cache_read":0.18}},"scx-ai-gp/kimi-k3":{"id":"scx-ai-gp/kimi-k3","name":"Kimi K3 (SCX.ai)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":2.83,"output":14.13,"cache_read":0.28}},"scx-ai-gp/glm-5.2-fast":{"id":"scx-ai-gp/glm-5.2-fast","name":"GLM-5.2 Turbo (SCX.ai)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.99,"output":6.16,"cache_read":0.4}},"scx-ai-gp/glm-5.3-flash":{"id":"scx-ai-gp/glm-5.3-flash","name":"GLM-5.3 Flash (SCX.ai)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.13,"output":0.4,"cache_read":0.024}},"scx-ai-gp/qwen3.8-max":{"id":"scx-ai-gp/qwen3.8-max","name":"Qwen3.8 Max (SCX.ai)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.815,"output":5.4461,"cache_read":0.21,"cache_write":2.5}},"scx-ai-gp/glm-5.3":{"id":"scx-ai-gp/glm-5.3","name":"GLM-5.3 (SCX.ai)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.3,"output":4,"cache_read":0.25}},"aws-bedrock/claude-sonnet-4-6":{"id":"aws-bedrock/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (AWS Bedrock)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"aws-bedrock/llama-4-scout-17b-instruct":{"id":"aws-bedrock/llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct (AWS Bedrock)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.17,"output":0.66}},"aws-bedrock/claude-opus-5":{"id":"aws-bedrock/claude-opus-5","name":"Claude Opus 5 (AWS Bedrock)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"aws-bedrock/claude-opus-4-1-20250805":{"id":"aws-bedrock/claude-opus-4-1-20250805","name":"Claude Opus 4.1 (AWS Bedrock)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"aws-bedrock/claude-opus-4-6":{"id":"aws-bedrock/claude-opus-4-6","name":"Claude Opus 4.6 (AWS Bedrock)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"aws-bedrock/claude-sonnet-4-5-20250929":{"id":"aws-bedrock/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (2025-09-29) (AWS Bedrock)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"aws-bedrock/claude-opus-4-7":{"id":"aws-bedrock/claude-opus-4-7","name":"Claude Opus 4.7 (AWS Bedrock)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"aws-bedrock/claude-haiku-4-5-20251001":{"id":"aws-bedrock/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (2025-10-01) (AWS Bedrock)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"aws-bedrock/claude-fable-5":{"id":"aws-bedrock/claude-fable-5","name":"Claude Fable 5 (AWS Bedrock)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"aws-bedrock/llama-4-maverick-17b-instruct":{"id":"aws-bedrock/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (AWS Bedrock)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.24,"output":0.97}},"aws-bedrock/grok-4-3":{"id":"aws-bedrock/grok-4-3","name":"Grok 4.3 (AWS Bedrock)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"aws-bedrock/claude-haiku-4-5":{"id":"aws-bedrock/claude-haiku-4-5","name":"Claude Haiku 4.5 (AWS Bedrock)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"aws-bedrock/claude-sonnet-4-5":{"id":"aws-bedrock/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (AWS Bedrock)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"aws-bedrock/llama-3.1-70b-instruct":{"id":"aws-bedrock/llama-3.1-70b-instruct","name":"Llama 3.1 70B Instruct (AWS Bedrock)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":2048},"cost":{"input":0.72,"output":0.72}},"aws-bedrock/grok-4-6":{"id":"aws-bedrock/grok-4-6","name":"Grok 4.6 (AWS Bedrock)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"aws-bedrock/claude-opus-4-8":{"id":"aws-bedrock/claude-opus-4-8","name":"Claude Opus 4.8 (AWS Bedrock)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"aws-bedrock/claude-sonnet-5":{"id":"aws-bedrock/claude-sonnet-5","name":"Claude Sonnet 5 (AWS Bedrock)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"aws-bedrock/claude-opus-4-5-20251101":{"id":"aws-bedrock/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (AWS Bedrock)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Anthropic)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5 (Anthropic)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1 (Anthropic)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Anthropic)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4-5-20250929":{"id":"anthropic/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (2025-09-29) (Anthropic)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Anthropic)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-haiku-4-5-20251001":{"id":"anthropic/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (2025-10-01) (Anthropic)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5 (Anthropic)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (Anthropic)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (Anthropic)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8 (Anthropic)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Anthropic)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (Anthropic)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"canopywave/kimi-k2.6":{"id":"canopywave/kimi-k2.6","name":"Kimi K2.6 (CanopyWave)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"canopywave/glm-5.2":{"id":"canopywave/glm-5.2","name":"GLM-5.2 (CanopyWave)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"canopywave/deepseek-v4-flash":{"id":"canopywave/deepseek-v4-flash","name":"DeepSeek V4 Flash (CanopyWave)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.03}},"canopywave/kimi-k3":{"id":"canopywave/kimi-k3","name":"Kimi K3 (CanopyWave)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3}},"canopywave/deepseek-v4-pro":{"id":"canopywave/deepseek-v4-pro","name":"DeepSeek V4 Pro (CanopyWave)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.74,"output":3.48,"cache_read":0.01}},"together-ai/glm-4.7":{"id":"together-ai/glm-4.7","name":"GLM-4.7 (Together AI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.45,"output":2}},"together-ai/minimax-m3":{"id":"together-ai/minimax-m3","name":"MiniMax M3 (Together AI)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"together-ai/deepseek-v4-flash":{"id":"together-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash (Together AI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.14,"output":0.28,"cache_read":0.03}},"together-ai/gpt-oss-20b":{"id":"together-ai/gpt-oss-20b","name":"GPT OSS 20B (Together AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2}},"together-ai/kimi-k3":{"id":"together-ai/kimi-k3","name":"Kimi K3 (Together AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":3,"output":15,"cache_read":0.3}},"together-ai/gemma-4-31b-it":{"id":"together-ai/gemma-4-31b-it","name":"Gemma 4 31B IT (Together AI)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.39,"output":0.97}},"together-ai/deepseek-v4-pro":{"id":"together-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro (Together AI)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":163840},"cost":{"input":1.32,"output":3.96,"cache_read":0.13}},"together-ai/gpt-oss-120b":{"id":"together-ai/gpt-oss-120b","name":"GPT OSS 120B (Together AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3 (Meta)","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2 (Meta)","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1 (Meta)","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"google-ai-studio/gemini-pro-latest":{"id":"google-ai-studio/gemini-pro-latest","name":"Gemini Pro Latest (Google AI Studio)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"google-ai-studio/gemini-3.1-pro-preview":{"id":"google-ai-studio/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Google AI Studio)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google-ai-studio/gemini-2.5-flash-lite":{"id":"google-ai-studio/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite (Google AI Studio)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"google-ai-studio/gemini-3.6-flash":{"id":"google-ai-studio/gemini-3.6-flash","name":"Gemini 3.6 Flash (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-ai-studio/gemini-3.1-flash-lite":{"id":"google-ai-studio/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite (Google AI Studio)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333}},"google-ai-studio/gemini-3.5-flash":{"id":"google-ai-studio/gemini-3.5-flash","name":"Gemini 3.5 Flash (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333}},"google-ai-studio/gemini-3.5-flash-lite":{"id":"google-ai-studio/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333}},"google-ai-studio/gemini-3-flash-preview":{"id":"google-ai-studio/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview) (Google AI Studio)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google-ai-studio/gemini-3.7-flash":{"id":"google-ai-studio/gemini-3.7-flash","name":"Gemini 3.7 Flash (Google AI Studio)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-ai-studio/gemini-2.5-pro":{"id":"google-ai-studio/gemini-2.5-pro","name":"Gemini 2.5 Pro (Google AI Studio)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google-ai-studio/gemini-2.5-flash":{"id":"google-ai-studio/gemini-2.5-flash","name":"Gemini 2.5 Flash (Google AI Studio)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"bytedance/glm-4.7":{"id":"bytedance/glm-4.7","name":"GLM-4.7 (ByteDance)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"bytedance/seed-1-8-251228":{"id":"bytedance/seed-1-8-251228","name":"Seed 1.8 (251228) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/glm-5.2":{"id":"bytedance/glm-5.2","name":"GLM-5.2 (ByteDance)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"bytedance/deepseek-v4-flash":{"id":"bytedance/deepseek-v4-flash","name":"DeepSeek V4 Flash (ByteDance)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"bytedance/seed-1-6-flash-250715":{"id":"bytedance/seed-1-6-flash-250715","name":"Seed 1.6 Flash (250715) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.07,"output":0.3,"cache_read":0.015}},"bytedance/deepseek-v3.2":{"id":"bytedance/deepseek-v3.2","name":"DeepSeek V3.2 (ByteDance)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.28,"output":0.42,"cache_read":0.056}},"bytedance/seed-1-6-250615":{"id":"bytedance/seed-1-6-250615","name":"Seed 1.6 (250615) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/deepseek-v4-pro":{"id":"bytedance/deepseek-v4-pro","name":"DeepSeek V4 Pro (ByteDance)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"bytedance/gpt-oss-120b":{"id":"bytedance/gpt-oss-120b","name":"GPT OSS 120B (ByteDance)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.1,"output":0.5,"cache_read":0.02}},"bytedance/seed-1-6-250915":{"id":"bytedance/seed-1-6-250915","name":"Seed 1.6 (250915) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"novita/glm-4.7":{"id":"novita/glm-4.7","name":"GLM-4.7 (NovitaAI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"novita/qwen3.7-max":{"id":"novita/qwen3.7-max","name":"Qwen3.7 Max (NovitaAI)","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25}},"novita/gemma-4-26b-a4b-it":{"id":"novita/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT (NovitaAI)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4}},"novita/llama-4-scout-17b-instruct":{"id":"novita/llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct (NovitaAI)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59}},"novita/qwen35-397b-a17b":{"id":"novita/qwen35-397b-a17b","name":"Qwen3.5 397B A17B (NovitaAI)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":64000},"cost":{"input":0.6,"output":3.6}},"novita/qwen3-235b-a22b-thinking-2507":{"id":"novita/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507 (NovitaAI)","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":3}},"novita/glm-4.6":{"id":"novita/glm-4.6","name":"GLM-4.6 (NovitaAI)","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11}},"novita/minimax-m2.1":{"id":"novita/minimax-m2.1","name":"MiniMax M2.1 (NovitaAI)","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"novita/glm-4.6v":{"id":"novita/glm-4.6v","name":"GLM-4.6V (NovitaAI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.055}},"novita/qwen3-next-80b-a3b-instruct":{"id":"novita/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct (NovitaAI)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5}},"novita/ling-3.0-flash":{"id":"novita/ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash (NovitaAI)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"novita/qwen3.8-27b":{"id":"novita/qwen3.8-27b","name":"Qwen3.8 27B (NovitaAI)","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085}},"novita/qwen3-235b-a22b-fp8":{"id":"novita/qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B FP8 (NovitaAI)","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8}},"novita/minimax-m2.7":{"id":"novita/minimax-m2.7","name":"MiniMax M2.7 (NovitaAI)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"novita/kimi-k2.6":{"id":"novita/kimi-k2.6","name":"Kimi K2.6 (NovitaAI)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16}},"novita/glm-5.2":{"id":"novita/glm-5.2","name":"GLM-5.2 (NovitaAI)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"novita/minimax-m2.5":{"id":"novita/minimax-m2.5","name":"MiniMax M2.5 (NovitaAI)","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"novita/deepseek-v4-flash":{"id":"novita/deepseek-v4-flash","name":"DeepSeek V4 Flash (NovitaAI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"novita/kimi-k2.7-code":{"id":"novita/kimi-k2.7-code","name":"Kimi K2.7 Code (NovitaAI)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"novita/llama-3.2-3b-instruct":{"id":"novita/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct (NovitaAI)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05}},"novita/hy3":{"id":"novita/hy3","name":"Hy3 (NovitaAI)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"novita/qwen3-coder-30b-a3b-instruct":{"id":"novita/qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct (NovitaAI)","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":32768},"cost":{"input":0.07,"output":0.27}},"novita/ernie-4.5-vl-424b-a47b":{"id":"novita/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B (NovitaAI)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"novita/kimi-k3":{"id":"novita/kimi-k3","name":"Kimi K3 (NovitaAI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3}},"novita/deepseek-v3.2":{"id":"novita/deepseek-v3.2","name":"DeepSeek V3.2 (NovitaAI)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345}},"novita/qwen3.6-35b-a3b":{"id":"novita/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B (NovitaAI)","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.248,"output":1.485}},"novita/qwen3-max":{"id":"novita/qwen3-max","name":"Qwen3 Max (NovitaAI)","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38}},"novita/qwen3-vl-30b-a3b-instruct":{"id":"novita/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct (NovitaAI)","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7}},"novita/llama-4-maverick-17b-instruct":{"id":"novita/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (NovitaAI)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85}},"novita/glm-4.5v":{"id":"novita/glm-4.5v","name":"GLM-4.5V (NovitaAI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"novita/qwen3.8-flash":{"id":"novita/qwen3.8-flash","name":"Qwen3.8 Flash (NovitaAI)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016}},"novita/kimi-k2":{"id":"novita/kimi-k2","name":"Kimi K2 (NovitaAI)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"novita/gemma-4-31b-it":{"id":"novita/gemma-4-31b-it","name":"Gemma 4 31B IT (NovitaAI)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4}},"novita/glm-5":{"id":"novita/glm-5","name":"GLM-5 (NovitaAI)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"novita/qwen3.8-max":{"id":"novita/qwen3.8-max","name":"Qwen3.8 Max (NovitaAI)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25}},"novita/glm-5.1":{"id":"novita/glm-5.1","name":"GLM-5.1 (NovitaAI)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26}},"novita/qwen3-vl-235b-a22b-thinking":{"id":"novita/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking (NovitaAI)","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95}},"novita/qwen3-vl-235b-a22b-instruct":{"id":"novita/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct (NovitaAI)","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5}},"novita/qwen3-235b-a22b-instruct-2507":{"id":"novita/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (NovitaAI)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.58}},"novita/qwen3-coder-480b-a35b-instruct":{"id":"novita/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct (NovitaAI)","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55}},"novita/glm-5.3":{"id":"novita/glm-5.3","name":"GLM-5.3 (NovitaAI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"novita/llama-3.3-70b-instruct":{"id":"novita/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct (NovitaAI)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":120000},"cost":{"input":0.135,"output":0.4}},"novita/llama-3-70b-instruct":{"id":"novita/llama-3-70b-instruct","name":"Llama 3 70B Instruct (NovitaAI)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-18","last_updated":"2024-04-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74}},"novita/mimo-v2.5":{"id":"novita/mimo-v2.5","name":"MiMo V2.5 (NovitaAI)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"novita/mimo-v2.5-pro":{"id":"novita/mimo-v2.5-pro","name":"MiMo V2.5 Pro (NovitaAI)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"ranoai/deepseek-v4-flash":{"id":"ranoai/deepseek-v4-flash","name":"DeepSeek V4 Flash (RanoAI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"inference.net/llama-3.2-11b-instruct":{"id":"inference.net/llama-3.2-11b-instruct","name":"Llama 3.2 11B Instruct (Inference.net)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.33}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra (Sakana AI)","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"deepinfra/gemma-4-26b-a4b-it":{"id":"deepinfra/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT (DeepInfra)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34}},"deepinfra/qwen3.5-9b":{"id":"deepinfra/qwen3.5-9b","name":"Qwen3.5 9B (DeepInfra)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.15}},"deepinfra/ling-3.0-flash":{"id":"deepinfra/ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash (DeepInfra)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"deepinfra/deepseek-v4-flash":{"id":"deepinfra/deepseek-v4-flash","name":"DeepSeek V4 Flash (DeepInfra)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.08,"output":0.18,"cache_read":0.016}},"deepinfra/hy3":{"id":"deepinfra/hy3","name":"Hy3 (DeepInfra)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":131072},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"deepinfra/deepseek-v3.2":{"id":"deepinfra/deepseek-v3.2","name":"DeepSeek V3.2 (DeepInfra)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":65536},"cost":{"input":0.26,"output":0.38,"cache_read":0.13}},"deepinfra/nemotron-3-ultra-550b":{"id":"deepinfra/nemotron-3-ultra-550b","name":"Nemotron 3 Ultra 550B (DeepInfra)","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.2,"cache_read":0.1}},"deepinfra/qwen3-vl-30b-a3b-instruct":{"id":"deepinfra/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct (DeepInfra)","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6}},"deepinfra/gemma-4-31b-it":{"id":"deepinfra/gemma-4-31b-it","name":"Gemma 4 31B IT (DeepInfra)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38}},"deepinfra/kimi-k2.5":{"id":"deepinfra/kimi-k2.5","name":"Kimi K2.5 (DeepInfra)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"deepinfra/glm-5.1":{"id":"deepinfra/glm-5.1","name":"GLM-5.1 (DeepInfra)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":65536},"cost":{"input":1.05,"output":3.5,"cache_read":0.205}},"deepinfra/qwen3-vl-235b-a22b-instruct":{"id":"deepinfra/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct (DeepInfra)","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11}},"deepinfra/deepseek-v4-pro":{"id":"deepinfra/deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepInfra)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1}},"deepinfra/mimo-v2.5":{"id":"deepinfra/mimo-v2.5","name":"MiMo V2.5 (DeepInfra)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.4,"output":2,"cache_read":0.08,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"deepinfra/mimo-v2.5-pro":{"id":"deepinfra/mimo-v2.5-pro","name":"MiMo V2.5 Pro (DeepInfra)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"azure-ai-foundry/grok-4-1-fast-non-reasoning":{"id":"azure-ai-foundry/grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning (Azure AI Foundry)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"azure-ai-foundry/grok-4-1-fast-reasoning":{"id":"azure-ai-foundry/grok-4-1-fast-reasoning","name":"Grok 4.1 Fast Reasoning (Azure AI Foundry)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"azure-ai-foundry/grok-4-3":{"id":"azure-ai-foundry/grok-4-3","name":"Grok 4.3 (Azure AI Foundry)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":20000,"output":8192},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed (Moonshot AI)","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6 (Moonshot AI)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code (Moonshot AI)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3 (Moonshot AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshot/kimi-k2.5":{"id":"moonshot/kimi-k2.5","name":"Kimi K2.5 (Moonshot AI)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"consensusprotocol/Qwen3.8-27B":{"id":"consensusprotocol/Qwen3.8-27B","name":"Qwen3.8 27B (Consensus Protocol)","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.41,"output":2.5,"cache_read":0.08}},"consensusprotocol/deepseek-v4-flash":{"id":"consensusprotocol/deepseek-v4-flash","name":"DeepSeek V4 Flash (Consensus Protocol)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":393216},"cost":{"input":0.13,"output":0.27,"cache_read":0.02}},"consensusprotocol/gpt-oss-20b":{"id":"consensusprotocol/gpt-oss-20b","name":"GPT OSS 20B (Consensus Protocol)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":32768},"cost":{"input":0.04,"output":0.19,"cache_read":0.01}},"azure/gpt-5-nano":{"id":"azure/gpt-5-nano","name":"GPT-5 Nano (Azure)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"azure/gpt-4.1-nano":{"id":"azure/gpt-4.1-nano","name":"GPT-4.1 Nano (Azure)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"azure/gpt-5.1-codex-mini":{"id":"azure/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"azure/gpt-5.1-codex":{"id":"azure/gpt-5.1-codex","name":"GPT-5.1 Codex (Azure)","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":1.25,"output":10}},"azure/gpt-5.6-sol":{"id":"azure/gpt-5.6-sol","name":"GPT-5.6 Sol (Azure)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"azure/gpt-5.2-codex":{"id":"azure/gpt-5.2-codex","name":"GPT-5.2 Codex (Azure)","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"azure/gpt-5.2-pro":{"id":"azure/gpt-5.2-pro","name":"GPT-5.2 Pro (Azure)","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":21,"output":168}},"azure/gpt-4.1-mini":{"id":"azure/gpt-4.1-mini","name":"GPT-4.1 Mini (Azure)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"azure/gpt-5.4":{"id":"azure/gpt-5.4","name":"GPT-5.4 (Azure)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"azure/gpt-4-turbo":{"id":"azure/gpt-4-turbo","name":"GPT-4 Turbo (Azure)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"azure/gpt-5.1":{"id":"azure/gpt-5.1","name":"GPT-5.1 (Azure)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"azure/o1":{"id":"azure/o1","name":"o1 (Azure)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"azure/gpt-4o":{"id":"azure/gpt-4o","name":"GPT-4o (Azure)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"azure/gpt-5.6-luna":{"id":"azure/gpt-5.6-luna","name":"GPT-5.6 Luna (Azure)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"azure/gpt-5.3-codex":{"id":"azure/gpt-5.3-codex","name":"GPT-5.3 Codex (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"azure/gpt-4.1":{"id":"azure/gpt-4.1","name":"GPT-4.1 (Azure)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"azure/gpt-5.4-nano":{"id":"azure/gpt-5.4-nano","name":"GPT-5.4 Nano (Azure)","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"azure/gpt-5.4-mini":{"id":"azure/gpt-5.4-mini","name":"GPT-5.4 Mini (Azure)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"azure/gpt-3.5-turbo":{"id":"azure/gpt-3.5-turbo","name":"GPT-3.5 Turbo (Azure)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"azure/gpt-5-mini":{"id":"azure/gpt-5-mini","name":"GPT-5 Mini (Azure)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"azure/gpt-oss-120b":{"id":"azure/gpt-oss-120b","name":"GPT OSS 120B (Azure)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"azure/gpt-5.4-pro":{"id":"azure/gpt-5.4-pro","name":"GPT-5.4 Pro (Azure)","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"azure/gpt-5.6-terra":{"id":"azure/gpt-5.6-terra","name":"GPT-5.6 Terra (Azure)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"azure/gpt-4":{"id":"azure/gpt-4","name":"GPT-4 (Azure)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60}},"azure/gpt-5.2":{"id":"azure/gpt-5.2","name":"GPT-5.2 (Azure)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"azure/gpt-5":{"id":"azure/gpt-5","name":"GPT-5 (Azure)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"azure/o4-mini":{"id":"azure/o4-mini","name":"o4 Mini (Azure)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"azure/o3-mini":{"id":"azure/o3-mini","name":"o3 Mini (Azure)","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"azure/o3":{"id":"azure/o3","name":"o3 (Azure)","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"azure/gpt-5.5":{"id":"azure/gpt-5.5","name":"GPT-5.5 (Azure)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp (DeepSeek)","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash (DeepSeek)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepSeek)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano (OpenAI)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 Nano (OpenAI)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro (OpenAI)","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"openai/gpt-4o-mini-transcribe":{"id":"openai/gpt-4o-mini-transcribe","name":"GPT-4o Mini Transcribe (OpenAI)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":2000},"cost":{"input":1.25,"output":5}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol (OpenAI)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro (OpenAI)","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":21,"output":168}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 Mini (OpenAI)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4 (OpenAI)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-4o-transcribe":{"id":"openai/gpt-4o-transcribe","name":"GPT-4o Transcribe (OpenAI)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":2000},"cost":{"input":2.5,"output":10}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo (OpenAI)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1 (OpenAI)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o1":{"id":"openai/o1","name":"o1 (OpenAI)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o (OpenAI)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna (OpenAI)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex (OpenAI)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o Mini (OpenAI)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1 (OpenAI)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano (OpenAI)","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro (OpenAI)","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini (OpenAI)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo (OpenAI)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini (OpenAI)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro (OpenAI)","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra (OpenAI)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4 (OpenAI)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2 (OpenAI)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5 (OpenAI)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4 Mini (OpenAI)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3 Mini (OpenAI)","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3 (OpenAI)","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5 (OpenAI)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"meta-contributor/muse-spark-1.3-contributor":{"id":"meta-contributor/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor (Meta Contributor)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"xai/grok-4":{"id":"xai/grok-4","name":"Grok 4 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-4-5":{"id":"xai/grok-4-5","name":"Grok 4.5 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"xai/grok-build-0-1":{"id":"xai/grok-build-0-1","name":"Grok Build 0.1 (xAI)","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"xai/grok-4-3":{"id":"xai/grok-4-3","name":"Grok 4.3 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4-20-beta-0309-reasoning":{"id":"xai/grok-4-20-beta-0309-reasoning","name":"Grok 4.20 Beta Reasoning (0309) (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4-6":{"id":"xai/grok-4-6","name":"Grok 4.6 (xAI)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"xai/grok-4-20-beta-0309-non-reasoning":{"id":"xai/grok-4-20-beta-0309-non-reasoning","name":"Grok 4.20 Beta Non-Reasoning (0309) (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7 (Z AI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5 Air (Z AI)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6 (Z AI)","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.05}},"zai/glm-4.6v-flashx":{"id":"zai/glm-4.6v-flashx","name":"GLM-4.6V FlashX (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2 (Z AI)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-4.5-x":{"id":"zai/glm-4.5-x","name":"GLM-4.5 X (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":2.2,"output":8.9,"cache_read":0.45}},"zai/glm-4.5-airx":{"id":"zai/glm-4.5-airx","name":"GLM-4.5 AirX (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":1.1,"output":4.5,"cache_read":0.22}},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3 Flash (Z AI)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5 (Z AI)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM-4.5V (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM-4.7 FlashX (Z AI)","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5 (Z AI)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai/glm-4-32b-0414-128k":{"id":"zai/glm-4-32b-0414-128k","name":"GLM-4 32B (0414-128k) (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.1}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1 (Z AI)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3 (Z AI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"azure-anthropic/claude-opus-5":{"id":"azure-anthropic/claude-opus-5","name":"Claude Opus 5 (Azure Anthropic)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"azure-anthropic/claude-opus-4-6":{"id":"azure-anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Azure Anthropic)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"azure-anthropic/claude-opus-4-7":{"id":"azure-anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Azure Anthropic)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"azure-anthropic/claude-fable-5":{"id":"azure-anthropic/claude-fable-5","name":"Claude Fable 5 (Azure Anthropic)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"azure-anthropic/claude-opus-4-8":{"id":"azure-anthropic/claude-opus-4-8","name":"Claude Opus 4.8 (Azure Anthropic)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"azure-anthropic/claude-sonnet-5":{"id":"azure-anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Azure Anthropic)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"fireworks/deepseek-v4-flash":{"id":"fireworks/deepseek-v4-flash","name":"DeepSeek V4 Flash (Fireworks AI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"fireworks/kimi-k3":{"id":"fireworks/kimi-k3","name":"Kimi K3 (Fireworks AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":1040384},"cost":{"input":3,"output":15,"cache_read":0.3}},"fireworks/kimi-k3-fast":{"id":"fireworks/kimi-k3-fast","name":"Kimi K3 Fast (Fireworks AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":1040384},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"fireworks/deepseek-v4-pro":{"id":"fireworks/deepseek-v4-pro","name":"DeepSeek V4 Pro (Fireworks AI)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"mistral/ministral-14b-2512":{"id":"mistral/ministral-14b-2512","name":"Ministral 14B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.2}},"mistral/codestral-2508":{"id":"mistral/codestral-2508","name":"Codestral (Mistral AI)","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"mistral/mistral-small-2506":{"id":"mistral/mistral-small-2506","name":"Mistral Small 3.2 (Mistral AI)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3}},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2 (Mistral AI)","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2}},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3 (Mistral AI)","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"mistral/ministral-3b-2512":{"id":"mistral/ministral-3b-2512","name":"Ministral 3B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1}},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large Latest (Mistral AI)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12}},"mistral/ministral-8b-2512":{"id":"mistral/ministral-8b-2512","name":"Ministral 8B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.15}},"cerebras/glm-4.7":{"id":"cerebras/glm-4.7","name":"GLM-4.7 (Cerebras)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":2.25,"output":2.75}},"cerebras/gemma-4-31b-it":{"id":"cerebras/gemma-4-31b-it","name":"Gemma 4 31B IT (Cerebras)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.99,"output":1.49}},"cerebras/qwen3-235b-a22b-instruct-2507":{"id":"cerebras/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (Cerebras)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":8192},"cost":{"input":0.6,"output":1.2}},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B (Cerebras)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75}},"cerebras/llama-3.3-70b-instruct":{"id":"cerebras/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct (Cerebras)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.85,"output":1.2}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar (Perplexity)","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":4096},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro (Perplexity)","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro (Perplexity)","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"runware/kimi-k2.6":{"id":"runware/kimi-k2.6","name":"Kimi K2.6 (Runware)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.6,"output":3.05,"cache_read":0.13}},"runware/glm-5.2":{"id":"runware/glm-5.2","name":"GLM-5.2 (Runware)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16}},"runware/deepseek-v4-flash":{"id":"runware/deepseek-v4-flash","name":"DeepSeek V4 Flash (Runware)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014}},"runware/glm-5.3-flash":{"id":"runware/glm-5.3-flash","name":"GLM-5.3 Flash (Runware)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"runware/gemma-4-31b-it":{"id":"runware/gemma-4-31b-it","name":"Gemma 4 31B IT (Runware)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.102,"output":0.297,"cache_read":0.012}},"runware/deepseek-v4-pro":{"id":"runware/deepseek-v4-pro","name":"DeepSeek V4 Pro (Runware)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.961,"output":1.922,"cache_read":0.079}},"runware/gpt-oss-120b":{"id":"runware/gpt-oss-120b","name":"GPT OSS 120B (Runware)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.032,"output":0.14,"cache_read":0.032}},"runware/glm-5.3":{"id":"runware/glm-5.3","name":"GLM-5.3 (Runware)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.2}}}},"llama":{"id":"llama","env":["LLAMA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llama.com/compat/v1/","name":"Llama","doc":"https://llama.developer.meta.com/docs/models","models":{"cerebras-llama-4-scout-17b-16e-instruct":{"id":"cerebras-llama-4-scout-17b-16e-instruct","name":"Cerebras-Llama-4-Scout-17B-16E-Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama-4-Maverick-17B-128E-Instruct-FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"groq-llama-4-maverick-17b-128e-instruct":{"id":"groq-llama-4-maverick-17b-128e-instruct","name":"Groq-Llama-4-Maverick-17B-128E-Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-4-scout-17b-16e-instruct-fp8":{"id":"llama-4-scout-17b-16e-instruct-fp8","name":"Llama-4-Scout-17B-16E-Instruct-FP8","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"cerebras-llama-4-maverick-17b-128e-instruct":{"id":"cerebras-llama-4-maverick-17b-128e-instruct","name":"Cerebras-Llama-4-Maverick-17B-128E-Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-3.3-8b-instruct":{"id":"llama-3.3-8b-instruct","name":"Llama-3.3-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}}}},"alibaba-token-plan":{"id":"alibaba-token-plan","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","name":"Alibaba Token Plan","doc":"https://www.alibabacloud.com/help/en/model-studio/token-plan-overview","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-r2v":{"id":"happyhorse-1.1-r2v","name":"HappyHorse 1.1 Reference-to-Video","description":"Video model for reference-guided video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"wan2.7-image-pro":{"id":"wan2.7-image-pro","name":"Wan2.7 Image Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-t2v":{"id":"happyhorse-1.1-t2v","name":"HappyHorse 1.1 Text-to-Video","description":"Video model for prompt-driven text-to-video generation","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen-image-2.0-pro":{"id":"qwen-image-2.0-pro","name":"Qwen Image 2.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-03","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-i2v":{"id":"happyhorse-1.1-i2v","name":"HappyHorse 1.1 Image-to-Video","description":"Video model for image-to-video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen-image-2.0":{"id":"qwen-image-2.0","name":"Qwen Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"wan2.7-image":{"id":"wan2.7-image","name":"Wan2.7 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}}}},"neuralwatt":{"id":"neuralwatt","env":["NEURALWATT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.neuralwatt.com/v1","name":"Neuralwatt","doc":"https://portal.neuralwatt.com/docs","models":{"glm-5.2-short-fast-flex":{"id":"glm-5.2-short-fast-flex","name":"GLM 5.2 Short Fast Flex","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425}},"glm-5.2-short-flex":{"id":"glm-5.2-short-flex","name":"GLM 5.2 Short Flex","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425}},"glm-5.2-flex":{"id":"glm-5.2-flex","name":"GLM 5.2 Flex","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425}},"glm-5.2":{"id":"glm-5.2","name":"GLM 5.2","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":65536},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095}},"kimi-k2.7-code-flex":{"id":"kimi-k2.7-code-flex","name":"Kimi K2.7 Code Flex","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.6175,"output":2.6,"cache_read":0.06175}},"kimi-k2.7-code-fast":{"id":"kimi-k2.7-code-fast","name":"Kimi K2.7 Code Fast","description":"Kimi K2.7 Code with reasoning capped to a short budget for lower latency; reasoning cannot be disabled on this model","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095}},"glm-5.2-short-fast":{"id":"glm-5.2-short-fast","name":"GLM 5.2 Short Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"cost":{"input":1.45,"output":4.5,"cache_read":0.145}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3}},"kimi-k3-fast":{"id":"kimi-k3-fast","name":"Kimi K3 Fast","description":"Kimi K3 with thinking disabled for low-latency tool calling, vision, and JSON work","family":"kimi-k3","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3}},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM 5.2 Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145}},"kimi-k3-flex":{"id":"kimi-k3-flex","name":"Kimi K3 Flex","description":"Kimi K3 on the flex tier: discounted, best-effort latency, requests may be held under load","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":1.95,"output":9.75,"cache_read":0.195}},"qwen3.6-35b-fast":{"id":"qwen3.6-35b-fast","name":"Qwen3.6 35B Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen3.6","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029}},"gemma-4-31b":{"id":"gemma-4-31b","name":"Gemma 4 31B","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":16384},"cost":{"input":0.144,"output":0.42,"cache_read":0.0144}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"status":"beta","cost":{"input":1,"output":3,"cache_read":0.1}},"deepseek-v4-flash-flex":{"id":"deepseek-v4-flash-flex","name":"DeepSeek V4 Flash Flex","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":65536},"cost":{"input":0.091,"output":0.182,"cache_read":0.0182}},"glm-5.3":{"id":"glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"status":"beta","cost":{"input":1.45,"output":4.5,"cache_read":0.145}},"qwen3.6-35b":{"id":"qwen3.6-35b","name":"Qwen3.6 35B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029}},"qwen-3.8-27b":{"id":"qwen-3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":65536},"status":"beta","cost":{"input":0.45,"output":3.2,"cache_read":0.25}},"glm-5.2-short":{"id":"glm-5.2-short","name":"GLM 5.2 Short","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"cost":{"input":1.45,"output":4.5,"cache_read":0.145}}}},"abliteration-ai":{"id":"abliteration-ai","env":["ABLIT_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.abliteration.ai/v1","name":"abliteration.ai","doc":"https://docs.abliteration.ai/models","models":{"abliterated-model-large":{"id":"abliterated-model-large","name":"Abliterated Model Large","description":"GLM-5.2 model abliterated and finetuned for cyber, ML red teaming, and agent testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-25","last_updated":"2026-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}},"abliterated-model-large-v2":{"id":"abliterated-model-large-v2","name":"Abliterated Model Large V2","description":"GLM-5.3 model abliterated and finetuned for cyber, ML red teaming, and agent testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}},"abliterated-model":{"id":"abliterated-model","name":"Abliterated Model","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01-06","last_updated":"2026-07-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":150000,"input":150000,"output":8192},"cost":{"input":3,"output":3,"cache_read":0.3}}}},"clarifai":{"id":"clarifai","env":["CLARIFAI_PAT"],"npm":"@ai-sdk/openai-compatible","api":"https://api.clarifai.com/v2/ext/openai/v1","name":"Clarifai","doc":"https://docs.clarifai.com/compute/inference/","models":{"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct":{"id":"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.11458,"output":0.74812}},"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507":{"id":"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.5}},"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507":{"id":"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507","name":"Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.36,"output":1.3}},"clarifai/main/models/mm-poly-8b":{"id":"clarifai/main/models/mm-poly-8b","name":"MM Poly 8B","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"mm-poly","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.658,"output":1.11}},"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR":{"id":"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR","name":"DeepSeek OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"deepseek","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2026-02-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.2,"output":0.7}},"mistralai/completion/models/Ministral-3-14B-Reasoning-2512":{"id":"mistralai/completion/models/Ministral-3-14B-Reasoning-2512","name":"Ministral 3 14B Reasoning 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-01","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":1.7}},"mistralai/completion/models/Ministral-3-3B-Reasoning-2512":{"id":"mistralai/completion/models/Ministral-3-3B-Reasoning-2512","name":"Ministral 3 3B Reasoning 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12","last_updated":"2026-02-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.039,"output":0.54825}},"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput":{"id":"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput","name":"MiniMax-M2.5 High Throughput","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"openai/chat-completion/models/gpt-oss-120b-high-throughput":{"id":"openai/chat-completion/models/gpt-oss-120b-high-throughput","name":"GPT OSS 120B High Throughput","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.36}},"openai/chat-completion/models/gpt-oss-20b":{"id":"openai/chat-completion/models/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-12-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.045,"output":0.18}},"moonshotai/chat-completion/models/Kimi-K2_6":{"id":"moonshotai/chat-completion/models/Kimi-K2_6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4}},"arcee_ai/AFM/models/trinity-mini":{"id":"arcee_ai/AFM/models/trinity-mini","name":"Trinity Mini","description":"Reasoning-tuned 26B MoE model with 3B active parameters for agents, tools, and multi-step workloads","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-01","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.045,"output":0.15}}}},"morph":{"id":"morph","env":["MORPH_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.morphllm.com/v1","name":"Morph","doc":"https://docs.morphllm.com/api-reference/introduction","models":{"morph-v3-large":{"id":"morph-v3-large","name":"Morph v3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9}},"morph-v3-fast":{"id":"morph-v3-fast","name":"Morph v3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2}},"auto":{"id":"auto","name":"Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.85,"output":1.55}}}},"aihubmix":{"id":"aihubmix","env":["AIHUBMIX_API_KEY"],"npm":"@aihubmix/ai-sdk-provider","name":"AIHubMix","doc":"https://docs.aihubmix.com","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125}},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":7.999,"cache_read":0.32167}},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.6918,"output":2.0754,"cache_read":0.023058}},"doubao-seed-2-0-lite-260428":{"id":"doubao-seed-2-0-lite-260428","name":"Doubao Seed 2.0 Lite 260428","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.08,"output":0.51,"cache_read":0.01692,"input_audio":1.269,"tiers":[{"input":0.13,"output":0.76,"cache_read":0.02536,"input_audio":1.902,"tier":{"type":"context","size":32000}},{"input":0.25,"output":1.52,"cache_read":0.05072,"input_audio":3.804,"tier":{"type":"context","size":128000}}]}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.142,"output":0.284,"cache_read":0.0284}},"coding-minimax-m2.7":{"id":"coding-minimax-m2.7","name":"Coding MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2}},"coding-glm-5.1":{"id":"coding-glm-5.1","name":"Coding GLM 5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-11","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.22,"cache_read":0.013}},"claude-opus-4-7-think":{"id":"claude-opus-4-7-think","name":"Claude Opus 4.7 Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.28,"output":1.69,"cache_read":0.0282,"cache_write":0.3525,"tiers":[{"input":1.13,"output":6.77,"cache_read":0.1128,"cache_write":1.41,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.13,"output":6.77,"cache_read":0.1128,"cache_write":1.41}}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"doubao-seed-2-0-mini-260428":{"id":"doubao-seed-2-0-mini-260428","name":"Doubao Seed 2.0 Mini 260428","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.03,"output":0.28,"cache_read":0.00564,"input_audio":0.423,"tiers":[{"input":0.06,"output":0.56,"cache_read":0.01128,"input_audio":0.846,"tier":{"type":"context","size":32000}},{"input":0.11,"output":1.13,"cache_read":0.02256,"input_audio":1.692,"tier":{"type":"context","size":128000}}]}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"doubao-seed-2-0-code-preview":{"id":"doubao-seed-2-0-code-preview","name":"Doubao Seed 2.0 Code Preview","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644,"tiers":[{"input":0.72,"output":3.62,"cache_read":0.144656,"tier":{"type":"context","size":32000}},{"input":1.45,"output":7.23,"cache_read":0.28932,"tier":{"type":"context","size":128000}}]}},"xiaomi-mimo-v2.5-free":{"id":"xiaomi-mimo-v2.5-free","name":"Xiaomi MiMo-V2.5 (free)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"coding-xiaomi-mimo-v2.5-pro":{"id":"coding-xiaomi-mimo-v2.5-pro","name":"Coding Xiaomi MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.2,"output":0.6,"cache_read":0.04,"tiers":[{"input":0.4,"output":1.2,"cache_read":0.08,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.4,"output":1.2,"cache_read":0.08}}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":3.9995,"cache_read":0.160835}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.5}},"alicloud-deepseek-v4-pro":{"id":"alicloud-deepseek-v4-pro","name":"DeepSeek V4 Pro (Alibaba Cloud)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.69,"output":3.38,"cache_read":0.13}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2}},"xiaomi-mimo-v2.5-pro-free":{"id":"xiaomi-mimo-v2.5-pro-free","name":"Xiaomi MiMo-V2.5-Pro (free)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"deep-deepseek-v4-pro":{"id":"deep-deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepSeek)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.478,"output":0.956,"cache_read":0.004302}},"deep-deepseek-v4-flash":{"id":"deep-deepseek-v4-flash","name":"DeepSeek V4 Flash (DeepSeek)","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.154,"output":0.308,"cache_read":0.0308}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":1.5}},"xiaomi-mimo-v2.5":{"id":"xiaomi-mimo-v2.5","name":"Xiaomi MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.088,"tiers":[{"input":0.88,"output":4.4,"cache_read":0.176,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.88,"output":4.4,"cache_read":0.176}}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991000,"output":64000},"cost":{"input":0.0282,"output":0.1128,"cache_read":0.00564,"cache_write":0.03525}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"alicloud-deepseek-v4-flash":{"id":"alicloud-deepseek-v4-flash","name":"DeepSeek V4 Flash (Alibaba Cloud)","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"zai-glm-5.1":{"id":"zai-glm-5.1","name":"GLM-5.1 (Z.ai)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.845,"output":3.38,"cache_read":0.183112}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11268,"output":0.39438,"cache_read":0.02817}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75}},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":2,"output":6,"cache_read":0.5}},"claude-opus-4-8-think":{"id":"claude-opus-4-8-think","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"coding-xiaomi-mimo-v2.5":{"id":"coding-xiaomi-mimo-v2.5","name":"Coding Xiaomi MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.08,"output":0.4,"cache_read":0.016,"tiers":[{"input":0.16,"output":0.8,"cache_read":0.032,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.16,"output":0.8,"cache_read":0.032}}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.17,"output":1.01,"cache_read":0.0169,"cache_write":0.21125,"tiers":[{"input":0.68,"output":4.06,"cache_read":0.0676,"cache_write":0.845,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.68,"output":4.06,"cache_read":0.0676,"cache_write":0.845}}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"coding-minimax-m2.7-free":{"id":"coding-minimax-m2.7-free","name":"Coding MiniMax M2.7 (Free)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0,"output":0}},"doubao-seed-2-0-pro":{"id":"doubao-seed-2-0-pro","name":"Doubao Seed 2.0 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644,"tiers":[{"input":0.72,"output":3.62,"cache_read":0.144656,"tier":{"type":"context","size":32000}},{"input":1.45,"output":7.23,"cache_read":0.28932,"tier":{"type":"context","size":128000}}]}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":240000,"output":64000},"cost":{"input":1.27,"output":7.61,"cache_read":0.1268,"cache_write":1.585,"tiers":[{"input":2.11,"output":12.67,"cache_read":0.2112,"cache_write":2.64,"tier":{"type":"context","size":128000}}]}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"alicloud-glm-5.1":{"id":"alicloud-glm-5.1","name":"GLM-5.1 (Alibaba Cloud)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.84,"output":3.38,"cache_read":0.169,"cache_write":1.05625}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"tiers":[{"input":0.5,"output":3,"cache_read":0.05,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.5,"output":3,"cache_read":0.05}}},"claude-sonnet-4-6-think":{"id":"claude-sonnet-4-6-think","name":"Claude Sonnet 4.6 Thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.282,"output":1.128,"cache_read":0.0564,"cache_write":0.3525}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"hy3-preview":{"id":"hy3-preview","name":"Hy3 Preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":128000},"cost":{"input":0.17,"output":0.566661,"cache_read":0.051}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM 5 Vision Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.7042,"output":3.09848,"cache_read":0.169008}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"xiaomi-mimo-v2.5-pro":{"id":"xiaomi-mimo-v2.5-pro","name":"Xiaomi MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.1,"output":3.3,"cache_read":0.22,"tiers":[{"input":2.2,"output":6.6,"cache_read":0.44,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2.2,"output":6.6,"cache_read":0.44}}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-opus-4-6-think":{"id":"claude-opus-4-6-think","name":"Claude Opus 4.6 Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"coding-glm-5.1-free":{"id":"coding-glm-5.1-free","name":"Coding GLM 5.1 (free)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-11","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"coding-minimax-m2.7-highspeed":{"id":"coding-minimax-m2.7-highspeed","name":"Coding MiniMax M2.7 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}}}},"chutes":{"id":"chutes","env":["CHUTES_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llm.chutes.ai/v1","name":"Chutes","doc":"https://llm.chutes.ai/v1/models","models":{"Nemotron-3-Nano-Omni-30B-TEE":{"id":"Nemotron-3-Nano-Omni-30B-TEE","name":"Nemotron 3 Nano Omni 30B TEE","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":0},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995}},"deepseek-ai/DeepSeek-V4-Flash-0731-TEE":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731-TEE","name":"DeepSeek V4 Flash 0731 TEE","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.04399999999999999}},"deepseek-ai/DeepSeek-V3.2-TEE":{"id":"deepseek-ai/DeepSeek-V3.2-TEE","name":"DeepSeek V3.2 TEE","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12","last_updated":"2026-06-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":1,"output":1,"cache_read":0.09999999999999998}},"google/gemma-4-31B-turbo-TEE":{"id":"google/gemma-4-31B-turbo-TEE","name":"gemma 4 31B turbo TEE","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.12,"output":0.37,"cache_read":0.011999999999999997}},"zai-org/GLM-5.1-TEE":{"id":"zai-org/GLM-5.1-TEE","name":"GLM 5.1 TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":65535},"cost":{"input":0.98,"output":3.08,"cache_read":0.09799999999999998}},"zai-org/GLM-5.2-TEE":{"id":"zai-org/GLM-5.2-TEE","name":"GLM 5.2 TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":3.95,"cache_read":0.12499999999999997}},"Qwen/Qwen3.8-27B-TEE":{"id":"Qwen/Qwen3.8-27B-TEE","name":"Qwen3.8 27B TEE","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-16","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":2.5,"cache_read":0.031999999999999994}},"Qwen/Qwen3.6-27B-TEE":{"id":"Qwen/Qwen3.6-27B-TEE","name":"Qwen3.6 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2,"cache_read":0.029999999999999992}},"Qwen/Qwen3.5-397B-A17B-TEE":{"id":"Qwen/Qwen3.5-397B-A17B-TEE","name":"Qwen3.5 397B A17B TEE","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3,"cache_read":0.04499999999999999}},"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE","name":"Qwen3 235B A22B Thinking 2507 TEE","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07","last_updated":"2026-06-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2989,"output":1.1957,"cache_read":0.029889999999999993}},"Qwen/Qwen3-32B-TEE":{"id":"Qwen/Qwen3-32B-TEE","name":"Qwen3 32B TEE","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.104,"output":0.416,"cache_read":0.010399999999999998}},"unsloth/Mistral-Nemo-Instruct-2407-TEE":{"id":"unsloth/Mistral-Nemo-Instruct-2407-TEE","name":"Mistral Nemo Instruct 2407 TEE","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995}},"moonshotai/Kimi-K3-TEE":{"id":"moonshotai/Kimi-K3-TEE","name":"Kimi K3 TEE","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65535},"cost":{"input":3,"output":15,"cache_read":0.29999999999999993}},"moonshotai/Kimi-K2.6-TEE":{"id":"moonshotai/Kimi-K2.6-TEE","name":"Kimi K2.6 TEE","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65535},"cost":{"input":0.58,"output":3.4,"cache_read":0.05799999999999998}}}},"groq":{"id":"groq","env":["GROQ_API_KEY"],"npm":"@ai-sdk/groq","name":"Groq","doc":"https://console.groq.com/docs/models","models":{"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-09-01","last_updated":"2025-09-05","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":0}},"whisper-large-v3-turbo":{"id":"whisper-large-v3-turbo","name":"Whisper Large V3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":0}},"llama-3.1-8b-instant":{"id":"llama-3.1-8b-instant","name":"Llama 3.1 8B","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.08}},"allam-2-7b":{"id":"allam-2-7b","name":"ALLaM-2-7b","description":"ALLaM-2-7b instruction tuned model by SDAIA","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0,"output":0}},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.59,"output":0.79}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","default","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131042,"output":16384},"cost":{"input":0.8,"output":4}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","default"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.6,"output":3,"cache_read":0.3}},"groq/compound":{"id":"groq/compound","name":"Compound","description":"General-purpose chat model for instruction following, writing, and analysis","family":"groq","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192}},"groq/compound-mini":{"id":"groq/compound-mini","name":"Compound Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"groq","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192}},"meta-llama/llama-prompt-guard-2-86m":{"id":"meta-llama/llama-prompt-guard-2-86m","name":"Prompt Guard 2 86M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"status":"beta","cost":{"input":0.04,"output":0.04}},"meta-llama/llama-prompt-guard-2-22m":{"id":"meta-llama/llama-prompt-guard-2-22m","name":"Llama Prompt Guard 2 22M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"status":"beta","cost":{"input":0.03,"output":0.03}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2026-06-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"status":"beta","cost":{"input":0.075,"output":0.3}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-10-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"canopylabs/orpheus-v1-english":{"id":"canopylabs/orpheus-v1-english","name":"Canopy Labs Orpheus V1 English","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"canopylabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":4000,"output":50000},"status":"beta"},"canopylabs/orpheus-arabic-saudi":{"id":"canopylabs/orpheus-arabic-saudi","name":"Canopy Labs Orpheus Arabic Saudi","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"canopylabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":4000,"output":50000},"status":"beta"}}},"zai-coding-plan":{"id":"zai-coding-plan","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.z.ai/api/coding/paas/v4","name":"Z.AI Coding Plan","doc":"https://docs.z.ai/devpack/overview","models":{"glm-5.2-highspeed":{"id":"glm-5.2-highspeed","name":"GLM-5.2 Highspeed","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3-highspeed":{"id":"glm-5.3-highspeed","name":"GLM-5.3 Highspeed","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"volcengine":{"id":"volcengine","env":["ARK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ark.cn-beijing.volces.com/api/v3","name":"Volcengine Ark","doc":"https://www.volcengine.com/docs/82379/1330310","models":{"doubao-seed-2-0-lite-260428":{"id":"doubao-seed-2-0-lite-260428","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.08906,"output":0.53436,"cache_read":0.01781,"tiers":[{"input":0.13359,"output":0.80154,"cache_read":0.02672,"tier":{"type":"context","size":32000}},{"input":0.26718,"output":1.60308,"cache_read":0.05344,"tier":{"type":"context","size":128000}}]}},"doubao-seed-character-260628":{"id":"doubao-seed-character-260628","name":"Seed Character","description":"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.11875,"output":0.29687,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":0.8906,"cache_read":0.02375,"tier":{"type":"context","size":32000}}]}},"doubao-seed-2-0-mini-260428":{"id":"doubao-seed-2-0-mini-260428","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.02969,"output":0.29687,"cache_read":0.00594,"tiers":[{"input":0.05937,"output":0.59374,"cache_read":0.01187,"tier":{"type":"context","size":32000}},{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]}},"doubao-seed-2-1-pro-260628":{"id":"doubao-seed-2-1-pro-260628","name":"Seed 2.1 Pro","description":"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812}},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095,"tiers":[{"input":0.71248,"output":3.56241,"cache_read":0.1425,"tier":{"type":"context","size":32000}},{"input":1.42496,"output":7.12482,"cache_read":0.28499,"tier":{"type":"context","size":128000}}]}},"doubao-seed-1-8-251228":{"id":"doubao-seed-1-8-251228","name":"Seed 1.8","description":"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-28","last_updated":"2025-12-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]}},"doubao-seed-1-6-flash-250828":{"id":"doubao-seed-1-6-flash-250828","name":"Seed 1.6 Flash","description":"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.02227,"output":0.22265,"cache_read":0.00445,"tiers":[{"input":0.04453,"output":0.4453,"cache_read":0.00445,"tier":{"type":"context","size":32000}},{"input":0.08906,"output":0.8906,"cache_read":0.00445,"tier":{"type":"context","size":128000}}]}},"doubao-seed-1-6-251015":{"id":"doubao-seed-1-6-251015","name":"Seed 1.6","description":"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]}},"deepseek-v4-pro-ga-260813":{"id":"deepseek-v4-pro-ga-260813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.3359,"output":4.00771,"cache_read":0.04453}},"doubao-seed-evolving":{"id":"doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812}},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095,"tiers":[{"input":0.71248,"output":3.56241,"cache_read":0.1425,"tier":{"type":"context","size":32000}},{"input":1.42496,"output":7.12482,"cache_read":0.28499,"tier":{"type":"context","size":128000}}]}},"doubao-seed-1-6-vision-250815":{"id":"doubao-seed-1-6-vision-250815","name":"Seed 1.6 Vision","description":"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]}},"glm-5-2-260617":{"id":"glm-5-2-260617","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.18747,"output":4.15615,"cache_read":0.29687}},"doubao-seed-2-1-turbo-260628":{"id":"doubao-seed-2-1-turbo-260628","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.4453,"output":2.22651,"cache_read":0.08906}},"deepseek-v4-flash-ga-260731":{"id":"deepseek-v4-flash-ga-260731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.4453,"output":1.3359,"cache_read":0.01484}}}},"sensenova":{"id":"sensenova","env":["SENSENOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token.sensenova.cn/v1","name":"SenseNova (China)","doc":"https://platform.sensenova.cn/docs","models":{"sensenova-6.8-flash-lite":{"id":"sensenova-6.8-flash-lite","name":"SenseNova 6.8 Flash Lite","description":"SenseNova lightweight multimodal agent model for real-world complex tasks, data analysis, and complex information presentation","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0}}}},"orcarouter":{"id":"orcarouter","env":["ORCAROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.orcarouter.ai/v1","name":"OrcaRouter","doc":"https://docs.orcarouter.ai","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.563}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.086,"output":0.688}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.33,"output":2.4}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.057,"output":0.459}},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032}},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038}},"qwen/qwen3.8-27b-free":{"id":"qwen/qwen3.8-27b-free","name":"Qwen3.8 27B (free)","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":32768},"cost":{"input":0,"output":0}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.115,"output":0.917}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.4,"output":4}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.6}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.35,"output":1.42,"cache_read":0.071}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.115,"output":0.688,"reasoning":2.4}},"orcarouter/free":{"id":"orcarouter/free","name":"OrcaRouter Free","description":"Built-in router over the free tier that scores each request's difficulty and sends light work to the smaller free model and harder work to the stronger one. Priced at zero and never falls back to a paid model.","family":"auto","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":0,"output":0}},"orcarouter/fusion-mini":{"id":"orcarouter/fusion-mini","name":"OrcaRouter Fusion Mini","description":"Leaner two-model Fusion panel that runs Claude Opus 4.8 and GPT-5.5 in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Easy requests fall through to a cheaper default and bill as one call.","family":"model-router","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"orcarouter/fusion":{"id":"orcarouter/fusion","name":"OrcaRouter Fusion","description":"Curated fan-out router that runs Claude Opus 4.8, GPT-5.5 and Gemini 3.1 Pro in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Easy requests fall through to a cheaper default and bill as one call.","family":"model-router","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"orcarouter/fusion-flash":{"id":"orcarouter/fusion-flash","name":"OrcaRouter Fusion Flash","description":"Budget Fusion panel that runs Gemini 3.5 Flash, MiniMax M2.7 and GLM 5.1 in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Cost-sensitive fan-out over a 200K window.","family":"model-router","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"orcarouter/auto":{"id":"orcarouter/auto","name":"OrcaRouter Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2026-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":10}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.33,"cache_read":0.0075}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333,"input_audio":3}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/gemini-robotics-er-1.6-preview":{"id":"google/gemini-robotics-er-1.6-preview","name":"Gemini Robotics-ER 1.6 Preview","description":"Vision-language model for embodied reasoning: spatial understanding, task planning, and physical-world agentic robotics","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":1,"output":5}},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38,"cache_read":0.02}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"grok/grok-4.3":{"id":"grok/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok/grok-4.5":{"id":"grok/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"grok/grok-4.6":{"id":"grok/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02}},"deepseek/deepseek-v4-flash-free":{"id":"deepseek/deepseek-v4-flash-free","name":"DeepSeek V4 Flash (free)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02}},"deepseek/deepseek-reasoner":{"id":"deepseek/deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.028}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"GPT-5 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":100000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"GPT-5.1 Chat","description":"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":100000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.17}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.2-chat-latest":{"id":"openai/gpt-5.2-chat-latest","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"kimi/kimi-k2.6":{"id":"kimi/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"kimi/kimi-k2.7-code":{"id":"kimi/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"kimi/kimi-k3":{"id":"kimi/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3.3,"output":16.5,"cache_read":0.33}},"kimi/kimi-k2.5":{"id":"kimi/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1,"cache_write":0}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.18,"output":0.59,"cache_read":0.059}},"tencent/hy3-free":{"id":"tencent/hy3-free","name":"Hy3 (free)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.075,"output":0.25}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.26,"cache_write":0}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234}}}},"routing-run":{"id":"routing-run","env":["ROUTING_RUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.routing.run/v1","name":"routing.run","doc":"https://docs.routing.run/api-reference/models","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.16,"output":0.48}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.112,"output":0.224}},"kimi-k2.6-nitro":{"id":"kimi-k2.6-nitro","name":"Kimi K2.6 Nitro","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1}},"nemotron-3-ultra":{"id":"nemotron-3-ultra","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32000},"cost":{"input":0.1,"output":0.1}},"glm-5.2-nitro":{"id":"glm-5.2-nitro","name":"GLM 5.2 Nitro","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":0.7,"output":4.2}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":5,"output":25}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.348,"output":0.696}},"kimi-k2.7-code-nitro":{"id":"kimi-k2.7-code-nitro","name":"Kimi K2.7 Code Nitro","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":1.5,"output":9}}}},"llmtech":{"id":"llmtech","env":["LLMTECH_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmtech.eu/v1","name":"LLM Tech","doc":"https://llmtech.eu/models/qwen3.8-27b","models":{"unsloth/Qwen3.8-27B-NVFP4":{"id":"unsloth/Qwen3.8-27B-NVFP4","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2.09,"cache_read":0.04}}}},"sap-ai-core":{"id":"sap-ai-core","env":["AICORE_SERVICE_KEY"],"npm":"@jerome-benoit/sap-ai-provider-v2","name":"SAP AI Core","doc":"https://help.sap.com/docs/sap-ai-core","models":{"gpt-5-nano":{"id":"gpt-5-nano","name":"gpt-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"gpt-4.1-nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.08,"output":0.26}},"anthropic--claude-4.5-sonnet":{"id":"anthropic--claude-4.5-sonnet","name":"anthropic--claude-4.5-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"mistralai--mistral-medium":{"id":"mistralai--mistral-medium","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"gpt-5.6-sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"anthropic--claude-4.5-haiku":{"id":"anthropic--claude-4.5-haiku","name":"anthropic--claude-4.5-haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"gemini-2.5-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"cohere--command-a-reasoning":{"id":"cohere--command-a-reasoning","name":"cohere--command-a-reasoning","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high"]},{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.63,"output":5.05}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"gpt-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gpt-5.4":{"id":"gpt-5.4","name":"gpt-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"anthropic--claude-4.8-opus":{"id":"anthropic--claude-4.8-opus","name":"anthropic--claude-4.8-opus","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"gemini-3.1-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"gemini-3.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"gpt-5.6-luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"tiers":[{"input":2,"output":9,"cache_read":0.2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2}}},"amazon--titan-embed-text":{"id":"amazon--titan-embed-text","name":"amazon--titan-embed-text","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-04-30","last_updated":"2024-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.14,"output":0}},"anthropic--claude-4.5-opus":{"id":"anthropic--claude-4.5-opus","name":"anthropic--claude-4.5-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic--claude-3.5-sonnet":{"id":"anthropic--claude-3.5-sonnet","name":"anthropic--claude-3.5-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"mistralai--mistral-medium-instruct":{"id":"mistralai--mistral-medium-instruct","name":"mistralai--mistral-medium-instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.36,"output":1.22}},"gpt-4.1":{"id":"gpt-4.1","name":"gpt-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.32}},"anthropic--claude-4.6-opus":{"id":"anthropic--claude-4.6-opus","name":"anthropic--claude-4.6-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"sonar":{"id":"sonar","name":"sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1}},"anthropic--claude-4-sonnet":{"id":"anthropic--claude-4-sonnet","name":"anthropic--claude-4-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"mistralai--mistral-small":{"id":"mistralai--mistral-small","name":"mistralai--mistral-small","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.28}},"amazon--nova-pro":{"id":"amazon--nova-pro","name":"amazon--nova-pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.56,"output":2.13}},"anthropic--claude-3-opus":{"id":"anthropic--claude-3-opus","name":"anthropic--claude-3-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-02-29","last_updated":"2024-02-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"nvidia--llama-3.2-nv-embedqa-1b":{"id":"nvidia--llama-3.2-nv-embedqa-1b","name":"nvidia--llama-3.2-nv-embedqa-1b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.07,"output":0}},"anthropic--claude-4.7-opus":{"id":"anthropic--claude-4.7-opus","name":"anthropic--claude-4.7-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-embedding-2":{"id":"gemini-embedding-2","name":"Gemini Embedding 2","description":"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":3072}},"sap-abap-1":{"id":"sap-abap-1","name":"sap-abap-1","description":"SAP-hosted model for ABAP code generation and enterprise development tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-26","last_updated":"2025-11-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.48,"output":1.7}},"amazon--nova-lite":{"id":"amazon--nova-lite","name":"amazon--nova-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.3,"output":2.37}},"anthropic--claude-3-haiku":{"id":"anthropic--claude-3-haiku","name":"anthropic--claude-3-haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"sonar-pro":{"id":"sonar-pro","name":"sonar-pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"amazon--nova-micro":{"id":"amazon--nova-micro","name":"amazon--nova-micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.1}},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"sonar-deep-research":{"id":"sonar-deep-research","name":"sonar-deep-research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.09,"output":0}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-25","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"gpt-5.6-terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":9.44,"cache_read":0.12}},"anthropic--claude-4.6-sonnet":{"id":"anthropic--claude-4.6-sonnet","name":"anthropic--claude-4.6-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5":{"id":"gpt-5","name":"gpt-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-17","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"anthropic--claude-4-opus":{"id":"anthropic--claude-4-opus","name":"anthropic--claude-4-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-5.5":{"id":"gpt-5.5","name":"gpt-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"anthropic--claude-3-sonnet":{"id":"anthropic--claude-3-sonnet","name":"anthropic--claude-3-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-04","last_updated":"2024-03-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gemini-embedding":{"id":"gemini-embedding","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1}},"anthropic--claude-3.7-sonnet":{"id":"anthropic--claude-3.7-sonnet","name":"anthropic--claude-3.7-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}}}},"alibaba-coding-plan-cn":{"id":"alibaba-coding-plan-cn","env":["ALIBABA_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding.dashscope.aliyuncs.com/v1","name":"Alibaba Coding Plan (China)","doc":"https://help.aliyun.com/zh/model-studio/coding-plan","models":{"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"azure-cognitive-services":{"id":"azure-cognitive-services","env":["AZURE_COGNITIVE_SERVICES_RESOURCE_NAME","AZURE_COGNITIVE_SERVICES_API_KEY"],"npm":"@ai-sdk/azure","name":"Azure Cognitive Services","doc":"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-07-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25,"tiers":[{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5}}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-chat-latest":{"id":"gpt-chat-latest","name":"GPT Chat Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"status":"beta","cost":{"input":5,"output":30,"cache_read":0.5}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.6,"output":3}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-mythos-5":{"id":"claude-mythos-5","name":"Claude Mythos 5","description":"Restricted Claude model for advanced cybersecurity and biology research workflows","family":"claude-mythos","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.125}},"gpt-3.5-turbo-instruct":{"id":"gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-09-21","last_updated":"2023-09-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096},"status":"deprecated","cost":{"input":1.5,"output":2}},"codestral-2501":{"id":"codestral-2501","name":"Codestral 25.01","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.13,"output":0}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2}},"phi-4-reasoning":{"id":"phi-4-reasoning","name":"Phi-4-reasoning","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"deepseek-v3.2-speciale":{"id":"deepseek-v3.2-speciale","name":"DeepSeek-V3.2-Speciale","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"cohere-embed-v3-multilingual":{"id":"cohere-embed-v3-multilingual","name":"Embed v3 Multilingual","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"model-router":{"id":"model-router","name":"Model Router","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-05-19","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"cost":{"input":0.14,"output":0}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"llama-4-scout-17b-16e-instruct":{"id":"llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-4-turbo-vision":{"id":"gpt-4-turbo-vision","name":"GPT-4 Turbo Vision","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":2.5,"output":10,"cache_read":1.25}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"status":"deprecated","cost":{"input":1.35,"output":5.4}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"phi-4-mini":{"id":"phi-4-mini","name":"Phi-4-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"phi-4-multimodal":{"id":"phi-4-multimodal","name":"Phi-4-multimodal","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"phi","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32,"input_audio":4}},"gpt-3.5-turbo-0125":{"id":"gpt-3.5-turbo-0125","name":"GPT-3.5 Turbo 0125","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"phi-4":{"id":"phi-4","name":"Phi-4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5}},"cohere-embed-v-4-0":{"id":"cohere-embed-v-4-0","name":"Embed v4","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0}},"cohere-embed-v3-english":{"id":"cohere-embed-v3-english","name":"Embed v3 English","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"cohere-command-a":{"id":"cohere-command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10}},"phi-4-reasoning-plus":{"id":"phi-4-reasoning-plus","name":"Phi-4-reasoning-plus","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"codex-mini":{"id":"codex-mini","name":"Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-04","release_date":"2025-05-16","last_updated":"2025-05-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.5,"output":6,"cache_read":0.375}},"phi-4-mini-reasoning":{"id":"phi-4-mini-reasoning","name":"Phi-4-mini-reasoning","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"gpt-3.5-turbo-1106":{"id":"gpt-3.5-turbo-1106","name":"GPT-3.5 Turbo 1106","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"status":"deprecated","cost":{"input":1,"output":2}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"ministral-3b":{"id":"ministral-3b","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04}},"mistral-small-2503":{"id":"mistral-small-2503","name":"Mistral Small 3.1","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}}}},"regolo-ai":{"id":"regolo-ai","env":["REGOLO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.regolo.ai/v1","name":"Regolo AI","doc":"https://docs.regolo.ai/","models":{"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5-9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":120000,"output":120000},"cost":{"input":0.58,"output":2.42}},"faster-whisper-large-v3":{"id":"faster-whisper-large-v3","name":"Faster Whisper Large v3","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0,"output":0}},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":100000},"cost":{"input":0.46,"output":2.42}},"brick-complexity-pro":{"id":"brick-complexity-pro","name":"Brick Complexity Pro","description":"Complexity classifier that powers the Brick semantic router by extracting query difficulty","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":100000,"output":15000},"cost":{"input":0.12,"output":0.46}},"apertus-70b":{"id":"apertus-70b","name":"Apertus 70B","description":"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":30000,"output":30000},"cost":{"input":0.46,"output":2.42}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT-OSS-20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.4,"output":1.8}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3-Coder-Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.3,"output":1.2}},"qwen3-embedding-8b":{"id":"qwen3-embedding-8b","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.1,"output":0.1}},"qwen3-reranker-4b":{"id":"qwen3-reranker-4b","name":"Qwen3-Reranker-4B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.12,"output":0.12}},"glm5.2":{"id":"glm5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":96000,"output":96000},"cost":{"input":2.31,"output":6}},"brick-v1-beta":{"id":"brick-v1-beta","name":"Brick v1 Beta","description":"Semantic router by Regolo.ai that directs each request to the most suitable model, optimizing costs and performance","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":100000,"output":15000},"status":"beta","cost":{"input":0,"output":0}},"qwen-image":{"id":"qwen-image","name":"Qwen-Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":2}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT-OSS-120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1,"output":4.2}},"deepseek-ocr-2":{"id":"deepseek-ocr-2","name":"DeepSeek OCR 2","description":"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":4000,"output":4000},"cost":{"input":0,"output":0}},"mistral-small-4-119b":{"id":"mistral-small-4-119b","name":"Mistral Small 4 119B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.75,"output":3}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.7}},"qwen3.5-122b":{"id":"qwen3.5-122b","name":"Qwen3.5-122B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.9,"output":3.6}}}},"kenari":{"id":"kenari","env":["KENARI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://kenari.id/v1","name":"Kenari","doc":"https://kenari.id/docs","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0}},"gpt-5-6-terra":{"id":"gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0}},"glm-5-1":{"id":"glm-5-1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0}},"gemini-3-7-flash":{"id":"gemini-3-7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"gemini-2-5-flash":{"id":"gemini-2-5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"kimi-k2-7-code:free":{"id":"kimi-k2-7-code:free","name":"Kimi K2.7 Code (Free)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"qwen3-7-plus":{"id":"qwen3-7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0}},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"deepseek-v4-flash:free":{"id":"deepseek-v4-flash:free","name":"DeepSeek V4 Flash (Free)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"gpt-5-6-sol":{"id":"gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0}},"gpt-5-6-luna":{"id":"gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"mistral-medium-3-5:free":{"id":"mistral-medium-3-5:free","name":"Mistral Medium 3.5 (Free)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"glm-5-3":{"id":"glm-5-3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"step-3-7-flash:free":{"id":"step-3-7-flash:free","name":"Step 3.7 Flash (Free)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0}},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"gemini-3-1-pro":{"id":"gemini-3-1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0}},"grok-imagine-image-2-0":{"id":"grok-imagine-image-2-0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":8000,"output":0},"cost":{"input":0,"output":0}},"kimi-k2-6:free":{"id":"kimi-k2-6:free","name":"Kimi K2.6 (Free)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"gemini-3-1-flash-lite":{"id":"gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"hy3:free":{"id":"hy3:free","name":"Hy3 (Free)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"mistral-large:free":{"id":"mistral-large:free","name":"Mistral Large (Free)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0}},"mimo-v2-5:free":{"id":"mimo-v2-5:free","name":"MiMo-V2.5 (Free)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"nemotron-3-super-120b-a12b":{"id":"nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"nemotron-3-super-120b-a12b:free":{"id":"nemotron-3-super-120b-a12b:free","name":"Nemotron 3 Super 120B A12B (Free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"whisper-large-v3-turbo":{"id":"whisper-large-v3-turbo","name":"Whisper Large v3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0,"output":0}},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0}},"glm-5-2":{"id":"glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"glm-4-7-flash:free":{"id":"glm-4-7-flash:free","name":"GLM-4.7-Flash (Free)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"mimo-v2-5":{"id":"mimo-v2-5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":272000,"output":16384},"cost":{"input":0,"output":0}},"mimo-v2-5-pro":{"id":"mimo-v2-5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0}},"step-3-7-flash":{"id":"step-3-7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"gemini-2-5-flash-lite":{"id":"gemini-2-5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"qwen3-8-max":{"id":"qwen3-8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"nemotron-3-ultra-550b-a55b":{"id":"nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"gemini-3-1-flash-tts":{"id":"gemini-3-1-flash-tts","name":"Gemini 3.1 Flash TTS Preview","description":"Low-latency speech generation with steerable prompts and expressive audio tags","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":0,"output":0}},"nemotron-3-nano-30b-a3b":{"id":"nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}}}},"the-grid-ai":{"id":"the-grid-ai","env":["THEGRID_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.thegrid.ai/v1","name":"The Grid AI","doc":"https://thegrid.ai/docs","models":{"agent-prime":{"id":"agent-prime","name":"Agent Prime","description":"Reliable models for dependable agentic applications, multi-step tool use, and reasoning workflows. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":30000},"status":"beta"},"text-standard":{"id":"text-standard","name":"Text Standard","description":"Price-optimized models with low-latency, high-throughput and shorter maximum outputs. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":16000}},"agent-max":{"id":"agent-max","name":"Agent Max","description":"Frontier models for autonomous research, deep multi-step tool chains, and complex long-horizon tasks. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-05-04","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"status":"beta"},"text-max":{"id":"text-max","name":"Text Max","description":"Frontier models for deep reasoning, long context, and complex workflows. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000}},"code-max":{"id":"code-max","name":"Code Max","description":"Frontier models for complex research, architectural decisions, debugging, and multi-file development. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-05-04","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"status":"beta"},"code-standard":{"id":"code-standard","name":"Code Standard","description":"Price-optimized models for rapid autocomplete, linting, high-frequency suggestions, and batch edits. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":16000},"status":"beta"},"code-prime":{"id":"code-prime","name":"Code Prime","description":"Reliable models for everyday software tasks, code completion, review, and standard debugging. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":30000},"status":"beta"},"text-prime":{"id":"text-prime","name":"Text Prime","description":"Reliable models for everyday text generation, editing, and analysis across diverse workflows. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":30000}},"agent-standard":{"id":"agent-standard","name":"Agent Standard","description":"Price-optimized models for fast tool calls, simple agent loops, high-throughput automation, and orchestration. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":16000},"status":"beta"}}},"google-vertex":{"id":"google-vertex","env":["GOOGLE_VERTEX_PROJECT","GOOGLE_VERTEX_LOCATION","GOOGLE_APPLICATION_CREDENTIALS"],"npm":"@ai-sdk/google-vertex","name":"Vertex","doc":"https://cloud.google.com/vertex-ai/generative-ai/docs/models","models":{"gemini-2.5-flash-tts":{"id":"gemini-2.5-flash-tts","name":"Gemini 2.5 Flash TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-09-30","last_updated":"2025-12-10","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.5,"output":10}},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-2.5-pro-tts":{"id":"gemini-2.5-pro-tts","name":"Gemini 2.5 Pro TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-09-30","last_updated":"2025-12-10","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":1,"output":20}},"claude-sonnet-4@20250514":{"id":"claude-sonnet-4@20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30}},"claude-opus-4-5@20251101":{"id":"claude-opus-4-5@20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120,"cache_read":0.2}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"claude-sonnet-4-6@default":{"id":"claude-sonnet-4-6@default","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"claude-fable-5@default":{"id":"claude-fable-5@default","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"claude-opus-4-6@default":{"id":"claude-opus-4-6@default","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-opus-4@20250514":{"id":"claude-opus-4@20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"claude-haiku-4-5@20251001":{"id":"claude-haiku-4-5@20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-5@default":{"id":"claude-sonnet-5@default","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"claude-opus-4-1@20250805":{"id":"claude-opus-4-1@20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gemini-embedding-001":{"id":"gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0}},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60,"cache_read":0.05}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"claude-fable-5-1@default":{"id":"claude-fable-5-1@default","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"claude-opus-4-7@default":{"id":"claude-opus-4-7@default","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gemini-flash-lite-latest":{"id":"gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"claude-opus-5@default":{"id":"claude-opus-5@default","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"gemini-flash-latest":{"id":"gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"claude-opus-4-8@default":{"id":"claude-opus-4-8@default","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-sonnet-4-5@20250929":{"id":"claude-sonnet-4-5@20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"qwen/qwen3-235b-a22b-instruct-2507-maas":{"id":"qwen/qwen3-235b-a22b-instruct-2507-maas","name":"Qwen3 235B A22B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.22,"output":0.88}},"deepseek-ai/deepseek-v3.1-maas":{"id":"deepseek-ai/deepseek-v3.1-maas","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":1.7,"cache_read":0.06}},"deepseek-ai/deepseek-v3.2-maas":{"id":"deepseek-ai/deepseek-v3.2-maas","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-17","last_updated":"2026-04-04","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.56,"output":1.68,"cache_read":0.056}},"zai-org/glm-5-maas":{"id":"zai-org/glm-5-maas","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1,"output":3.2,"cache_read":0.1}},"zai-org/glm-4.7-maas":{"id":"zai-org/glm-4.7-maas","name":"GLM-4.7","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-06","last_updated":"2026-01-06","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":2.2,"cache_read":0.06}},"meta/llama-4-maverick-17b-128e-instruct-maas":{"id":"meta/llama-4-maverick-17b-128e-instruct-maas","name":"Llama 4 Maverick 17B 128E Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":8192},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.35,"output":1.15}},"meta/llama-3.3-70b-instruct-maas":{"id":"meta/llama-3.3-70b-instruct-maas","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.72,"output":0.72}},"openai/gpt-oss-120b-maas":{"id":"openai/gpt-oss-120b-maas","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.36}},"openai/gpt-oss-20b-maas":{"id":"openai/gpt-oss-20b-maas","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"status":"deprecated","cost":{"input":0.07,"output":0.25,"cache_read":0.007}},"moonshotai/kimi-k2-thinking-maas":{"id":"moonshotai/kimi-k2-thinking-maas","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":2.5,"cache_read":0.06}}}},"stepfun-ai":{"id":"stepfun-ai","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.ai/v1","name":"StepFun (Global)","doc":"https://platform.stepfun.ai/docs/en/overview/concept","models":{"step-1-32k":{"id":"step-1-32k","name":"Step 1 (32K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41}},"stepaudio-2.5-tts":{"id":"stepaudio-2.5-tts","name":"StepAudio 2.5 TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"stepaudio-2.5-asr":{"id":"stepaudio-2.5-asr","name":"StepAudio 2.5 ASR","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-24","last_updated":"2026-07-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-2-16k":{"id":"step-2-16k","name":"Step 2 (16K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04}},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"step-tts-2":{"id":"step-tts-2","name":"Step TTS 2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-06-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037}}}},"pendra":{"id":"pendra","env":["PENDRA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.pendra.ai/api/v1","name":"Pendra","doc":"https://pendra.ai/docs/integrations/opencode","models":{"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"gpt-oss:120b":{"id":"gpt-oss:120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"qwen3-coder:30b":{"id":"qwen3-coder:30b","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"qwen3.6:27b":{"id":"qwen3.6:27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"llama3.3:70b":{"id":"llama3.3:70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0}}}},"above":{"id":"above","env":["ABOVE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.above.dev/v1","name":"above.dev","doc":"https://above.dev/docs","models":{"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision (Exp)","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.242,"output":0.726,"reasoning":0.726,"cache_read":0.0077}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo V2.5 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-06-08","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.5231,"output":3.0462,"cache_read":0.0127}},"glm-5.2":{"id":"glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.54,"output":4.84,"cache_read":0.154}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.242,"output":0.726,"reasoning":0.726,"cache_read":0.0077}},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM 5.2 Fast","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.31,"output":7.26,"cache_read":0.231}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.165,"output":0.55,"cache_read":0.0319}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen 3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2.2,"output":6.6,"cache_read":0.275}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.726,"output":2.178,"reasoning":2.178,"cache_read":0.0242}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.5077,"output":1.0154,"cache_read":0.0042}}}},"scaleway":{"id":"scaleway","env":["SCALEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scaleway.ai/v1","name":"Scaleway","doc":"https://www.scaleway.com/en/docs/generative-apis/","models":{"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-01","last_updated":"2026-05-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"status":"beta","cost":{"input":0.25,"output":0.5}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"status":"beta","cost":{"input":0.468,"output":0.936,"reasoning":0.936,"cache_read":0.0936}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":1.8,"output":5.5}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.8}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.6,"output":3.6}},"qwen3-embedding-8b":{"id":"qwen3-embedding-8b","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.1,"output":0}},"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2023-09","release_date":"2023-09-01","last_updated":"2026-03-17","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":8192},"cost":{"input":0.003,"output":0}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-01","last_updated":"2026-05-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"status":"beta","cost":{"input":0.25,"output":1.5}},"bge-multilingual-gemma2":{"id":"bge-multilingual-gemma2","name":"BGE Multilingual Gemma2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-26","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.1,"output":0}},"mistral-medium-3.5-128b":{"id":"mistral-medium-3.5-128b","name":"Mistral Medium 3.5 128B","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":1.5,"output":7.5}},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral Small 3.2 24B Instruct (2506)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.35}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":260000,"output":16384},"cost":{"input":0.75,"output":2.25,"reasoning":8.4}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT-OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.6}},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"Pixtral 12B 2409","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-25","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":16384},"cost":{"input":0.9,"output":0.9}}}},"alibaba-cn":{"id":"alibaba-cn","env":["DASHSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://dashscope.aliyuncs.com/compatible-mode/v1","name":"Alibaba (China)","doc":"https://www.alibabacloud.com/help/en/model-studio/models","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen2-5-72b-instruct":{"id":"qwen2-5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":1.721}},"deepseek-r1-distill-qwen-7b":{"id":"deepseek-r1-distill-qwen-7b","name":"DeepSeek R1 Distill Qwen 7B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.072,"output":0.144}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":1.434}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.287,"output":1.147}},"qwen2-5-omni-7b":{"id":"qwen2-5-omni-7b","name":"Qwen2.5-Omni 7B","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0.087,"output":0.345,"input_audio":5.448}},"qwen-mt-turbo":{"id":"qwen-mt-turbo","name":"Qwen-MT Turbo","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.101,"output":0.28}},"deepseek-v3-1":{"id":"deepseek-v3-1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.574,"output":1.721}},"qwen-deep-research":{"id":"qwen-deep-research","name":"Qwen Deep Research","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":7.742,"output":23.367}},"qwen-vl-max":{"id":"qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":0.574}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.144,"output":0.574}},"qwen3-14b":{"id":"qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.574,"reasoning":1.434}},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.345,"output":1.377}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"moonshot-kimi-k2-instruct":{"id":"moonshot-kimi-k2-instruct","name":"Moonshot Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":2.294}},"qwen-vl-plus":{"id":"qwen-vl-plus","name":"Qwen-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.115,"output":0.287}},"qwen-omni-turbo-realtime":{"id":"qwen-omni-turbo-realtime","name":"Qwen-Omni Turbo Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-05-08","last_updated":"2025-05-08","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.23,"output":0.918,"input_audio":3.584,"output_audio":7.168}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Moonshot Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.929,"output":3.858}},"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.216}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1,"output":3.851,"cache_read":0.275,"cache_write":0}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384},"cost":{"input":0.044,"output":0.087,"reasoning":0.431}},"qwen3-vl-30b-a3b":{"id":"qwen3-vl-30b-a3b","name":"Qwen3-VL 30B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":0.431,"reasoning":1.076}},"qwen-vl-ocr":{"id":"qwen-vl-ocr","name":"Qwen-VL OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-10-28","last_updated":"2025-04-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":34096,"output":4096},"cost":{"input":0.717,"output":0.717}},"tongyi-intent-detect-v3":{"id":"tongyi-intent-detect-v3","name":"Tongyi Intent Detect V3","description":"General-purpose chat model for instruction following, writing, and analysis","family":"yi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1024},"cost":{"input":0.058,"output":0.144}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Moonshot Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.574,"output":2.294}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868}},"qwq-plus":{"id":"qwq-plus","name":"QwQ Plus","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574}},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.172,"output":1.72,"reasoning":1.72}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.143353,"output":1.433525,"reasoning":4.300576}},"deepseek-v3-2-exp":{"id":"deepseek-v3-2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.287,"output":0.431}},"qwen2-5-7b-instruct":{"id":"qwen2-5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.144}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.216,"output":0.861,"tiers":[{"input":0.323,"output":1.291,"tier":{"type":"context","size":32000}},{"input":0.538,"output":2.151,"tier":{"type":"context","size":128000}}]}},"qwen2-5-math-7b-instruct":{"id":"qwen2-5-math-7b-instruct","name":"Qwen2.5-Math 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3072},"cost":{"input":0.144,"output":0.287}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032,"reasoning":1.032,"tiers":[{"input":0.43,"output":2.58,"reasoning":2.58,"tier":{"type":"context","size":128000}}]}},"qwq-32b":{"id":"qwq-32b","name":"QwQ 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294}},"qwen3-asr-flash":{"id":"qwen3-asr-flash","name":"Qwen3-ASR Flash","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-04","release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":0.032,"output":0.032}},"qwen3-omni-flash":{"id":"qwen3-omni-flash","name":"Qwen3-Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.058,"output":0.23,"input_audio":3.584,"output_audio":7.168}},"deepseek-r1-distill-qwen-1-5b":{"id":"deepseek-r1-distill-qwen-1-5b","name":"DeepSeek R1 Distill Qwen 1.5B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.02962,"output":0.1185,"cache_read":0.002962,"cache_write":0.03703,"tiers":[{"input":0.08887,"output":0.35549,"cache_read":0.008887,"cache_write":0.11109,"tier":{"type":"context","size":32000}},{"input":0.17774,"output":0.71098,"cache_read":0.017774,"cache_write":0.22218,"tier":{"type":"context","size":256000}}]}},"qwen2-5-vl-72b-instruct":{"id":"qwen2-5-vl-72b-instruct","name":"Qwen2.5-VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.294,"output":6.881}},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294}},"deepseek-r1-distill-qwen-32b":{"id":"deepseek-r1-distill-qwen-32b","name":"DeepSeek R1 Distill Qwen 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.861,"output":3.441}},"qwen2-5-coder-32b-instruct":{"id":"qwen2-5-coder-32b-instruct","name":"Qwen2.5-Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11","last_updated":"2024-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861}},"qwen2-5-math-72b-instruct":{"id":"qwen2-5-math-72b-instruct","name":"Qwen2.5-Math 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.115,"output":0.287,"reasoning":1.147,"cache_read":0.012,"cache_write":0.144}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"qwen3-omni-flash-realtime":{"id":"qwen3-omni-flash-realtime","name":"Qwen3-Omni Flash Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.23,"output":0.918,"input_audio":3.584,"output_audio":7.168}},"qwen2-5-vl-7b-instruct":{"id":"qwen2-5-vl-7b-instruct","name":"Qwen2.5-VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.717}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.11875,"output":0.40073,"cache_read":0.01187,"cache_write":0.14844}},"qwen2-5-14b-instruct":{"id":"qwen2-5-14b-instruct","name":"Qwen2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.431}},"qwen-math-turbo":{"id":"qwen-math-turbo","name":"Qwen Math Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3072},"cost":{"input":0.287,"output":0.861}},"qwen-plus-character":{"id":"qwen-plus-character","name":"Qwen Plus Character","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.115,"output":0.287}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":245800,"output":65536},"cost":{"input":1.32,"output":7.9,"cache_read":0.132}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58,"tiers":[{"input":0.86,"output":3.154,"tier":{"type":"context","size":32000}}]}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.77744,"output":5.33231,"cache_read":0.22218,"cache_write":2.22179}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Moonshot Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.574,"output":2.411}},"qwen3-8b":{"id":"qwen3-8b","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.287,"reasoning":0.717}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.17,"tiers":[{"input":1.1,"output":3.851,"tier":{"type":"context","size":32000}}]}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":128000}}]}},"qwen-omni-turbo":{"id":"qwen-omni-turbo","name":"Qwen-Omni Turbo","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.058,"output":0.23,"input_audio":3.584,"output_audio":7.168}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.861,"output":3.441,"tiers":[{"input":1.291,"output":5.161,"tier":{"type":"context","size":32000}},{"input":2.151,"output":8.602,"tier":{"type":"context","size":128000}}]}},"qwen2-5-32b-instruct":{"id":"qwen2-5-32b-instruct","name":"Qwen2.5 32B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"qwen2-5-coder-7b-instruct":{"id":"qwen2-5-coder-7b-instruct","name":"Qwen2.5-Coder 7B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11","last_updated":"2024-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.287}},"qwen-long":{"id":"qwen-long","name":"Qwen Long","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-25","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"output":8192},"cost":{"input":0.072,"output":0.287}},"deepseek-r1-distill-llama-8b":{"id":"deepseek-r1-distill-llama-8b","name":"DeepSeek R1 Distill Llama 8B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"deepseek-r1-distill-qwen-14b":{"id":"deepseek-r1-distill-qwen-14b","name":"DeepSeek R1 Distill Qwen 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.144,"output":0.431}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3-VL 235B-A22B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.286705,"output":1.14682,"reasoning":2.867051}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.573,"output":3.44,"reasoning":3.44}},"qwen-math-plus":{"id":"qwen-math-plus","name":"Qwen Math Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-08-16","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721}},"qwen-doc-turbo":{"id":"qwen-doc-turbo","name":"Qwen Doc Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.087,"output":0.144}},"qwen-mt-plus":{"id":"qwen-mt-plus","name":"Qwen-MT Plus","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.259,"output":0.775}},"qvq-max":{"id":"qvq-max","name":"QVQ Max","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qvq","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":1.147,"output":4.588}},"MiniMax/MiniMax-M2.7":{"id":"MiniMax/MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"siliconflow/deepseek-r1-0528":{"id":"siliconflow/deepseek-r1-0528","name":"siliconflow/deepseek-r1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.18}},"siliconflow/deepseek-v3.2":{"id":"siliconflow/deepseek-v3.2","name":"siliconflow/deepseek-v3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.42}},"siliconflow/deepseek-v3.1-terminus":{"id":"siliconflow/deepseek-v3.1-terminus","name":"siliconflow/deepseek-v3.1-terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":1}},"siliconflow/deepseek-v3-0324":{"id":"siliconflow/deepseek-v3-0324","name":"siliconflow/deepseek-v3-0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":1}},"kimi/kimi-k2.5":{"id":"kimi/kimi-k2.5","name":"kimi/kimi-k2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":5}}}},"poe":{"id":"poe","env":["POE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.poe.com/v1","name":"Poe","doc":"https://creator.poe.com/docs/external-applications/openai-compatible-api","models":{"poetools/claude-code":{"id":"poetools/claude-code","name":"claude-code","description":"Claude model for careful reasoning, writing, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-27","last_updated":"2025-11-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"elevenlabs/elevenlabs-v2.5-turbo":{"id":"elevenlabs/elevenlabs-v2.5-turbo","name":"ElevenLabs-v2.5-Turbo","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-28","last_updated":"2024-10-28","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":128000,"output":0}},"elevenlabs/elevenlabs-v3":{"id":"elevenlabs/elevenlabs-v3","name":"ElevenLabs-v3","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":128000,"output":0}},"elevenlabs/elevenlabs-music":{"id":"elevenlabs/elevenlabs-music","name":"ElevenLabs-Music","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-29","last_updated":"2025-08-29","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":2000,"output":0}},"stabilityai/stablediffusionxl":{"id":"stabilityai/stablediffusionxl","name":"StableDiffusionXL","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-07-09","last_updated":"2023-07-09","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":200,"output":0}},"trytako/tako":{"id":"trytako/tako","name":"Tako","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"tako","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":0}},"ideogramai/ideogram-v2a":{"id":"ideogramai/ideogram-v2a","name":"Ideogram-v2a","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram-v2a-turbo":{"id":"ideogramai/ideogram-v2a-turbo","name":"Ideogram-v2a-Turbo","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram-v2":{"id":"ideogramai/ideogram-v2","name":"Ideogram-v2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-21","last_updated":"2024-08-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram":{"id":"ideogramai/ideogram","name":"Ideogram","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-04-03","last_updated":"2024-04-03","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude-Opus-4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":128000},"cost":{"input":4.2929,"output":21.4646}},"anthropic/claude-sonnet-3.5":{"id":"anthropic/claude-sonnet-3.5","name":"Claude-Sonnet-3.5","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-06-05","last_updated":"2024-06-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"status":"deprecated","cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude-Opus-4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.4}},"anthropic/claude-sonnet-3.7":{"id":"anthropic/claude-sonnet-3.7","name":"Claude-Sonnet-3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude-Opus-4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":31999}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":32000},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16}},"anthropic/claude-haiku-3":{"id":"anthropic/claude-haiku-3","name":"Claude-Haiku-3","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-03-09","last_updated":"2024-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"cost":{"input":0.21,"output":1.1,"cache_read":0.021,"cache_write":0.26}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude-Sonnet-4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-haiku-3.5":{"id":"anthropic/claude-haiku-3.5","name":"Claude-Haiku-3.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"cost":{"input":0.68,"output":3.4,"cache_read":0.068,"cache_write":0.85}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude-Haiku-4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":63999}],"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":64000},"cost":{"input":0.85,"output":4.3,"cache_read":0.085,"cache_write":1.1}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude-Opus-4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude-Opus-4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":192512,"output":28672},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude-Sonnet-4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":31999}],"tool_call":true,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":32768},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-sonnet-3.5-june":{"id":"anthropic/claude-sonnet-3.5-june","name":"Claude-Sonnet-3.5-June","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"status":"deprecated","cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude-Opus-4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":0,"max":63999}],"tool_call":true,"temperature":false,"release_date":"2025-11-21","last_updated":"2025-11-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":64000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude-Sonnet-4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":64000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"google/nano-banana-pro":{"id":"google/nano-banana-pro","name":"Nano-Banana-Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"nano-banana","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":65536,"output":0},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-3.1-pro":{"id":"google/gemini-3.1-pro","name":"Gemini-3.1-Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-deep-research":{"id":"google/gemini-deep-research","name":"gemini-deep-research","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":0},"status":"deprecated","cost":{"input":1.6,"output":9.6}},"google/gemini-2.0-flash":{"id":"google/gemini-2.0-flash","name":"Gemini-2.0-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":990000,"output":8192},"cost":{"input":0.1,"output":0.42}},"google/veo-3.1-fast":{"id":"google/veo-3.1-fast","name":"Veo-3.1-Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/nano-banana":{"id":"google/nano-banana","name":"Nano-Banana","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"nano-banana","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":0},"cost":{"input":0.21,"output":1.8,"cache_read":0.021}},"google/imagen-4":{"id":"google/imagen-4","name":"Imagen-4","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini-2.5-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":false,"release_date":"2025-06-19","last_updated":"2025-06-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"output":64000},"cost":{"input":0.07,"output":0.28}},"google/imagen-3-fast":{"id":"google/imagen-3-fast","name":"Imagen-3-Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-17","last_updated":"2024-10-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-2.0-flash-lite":{"id":"google/gemini-2.0-flash-lite","name":"Gemini-2.0-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":990000,"output":8192},"cost":{"input":0.052,"output":0.21}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini-3.1-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5}},"google/veo-3.1":{"id":"google/veo-3.1","name":"Veo-3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/veo-3-fast":{"id":"google/veo-3-fast","name":"Veo-3-Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-13","last_updated":"2025-10-13","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/imagen-4-fast":{"id":"google/imagen-4-fast","name":"Imagen-4-Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini-3.5-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5152,"output":9.0909,"cache_read":0.1515}},"google/veo-3":{"id":"google/veo-3","name":"Veo-3","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-3-pro":{"id":"google/gemini-3-pro","name":"Gemini-3-Pro","description":"Legacy model retained for compatibility with older integrations","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-10-22","last_updated":"2025-10-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":1.6,"output":9.6,"cache_read":0.16}},"google/lyria":{"id":"google/lyria","name":"Lyria","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-04","last_updated":"2025-06-04","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemma-4-31b":{"id":"google/gemma-4-31b","name":"Gemma-4-31B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0}},"google/imagen-4-ultra":{"id":"google/imagen-4-ultra","name":"Imagen-4-Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-24","last_updated":"2025-05-24","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/veo-2":{"id":"google/veo-2","name":"Veo-2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini-2.5-Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":32768}],"tool_call":true,"temperature":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1065535,"output":65535},"cost":{"input":0.87,"output":7,"cache_read":0.087}},"google/gemini-3-flash":{"id":"google/gemini-3-flash","name":"Gemini-3-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini-2.5-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":false,"release_date":"2025-04-26","last_updated":"2025-04-26","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1065535,"output":65535},"cost":{"input":0.21,"output":1.8,"cache_read":0.021}},"google/imagen-3":{"id":"google/imagen-3","name":"Imagen-3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-15","last_updated":"2024-10-15","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"novita/glm-4.7":{"id":"novita/glm-4.7","name":"glm-4.7","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072},"status":"deprecated"},"novita/glm-4.6":{"id":"novita/glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"novita/minimax-m2.1":{"id":"novita/minimax-m2.1","name":"minimax-m2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-26","last_updated":"2025-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072}},"novita/glm-4.6v":{"id":"novita/glm-4.6v","name":"glm-4.6v","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":32768}},"novita/kimi-k2.6":{"id":"novita/kimi-k2.6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-05-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.96,"output":4.04,"cache_read":0.16}},"novita/kimi-k2-thinking":{"id":"novita/kimi-k2-thinking","name":"kimi-k2-thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-11-07","last_updated":"2025-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":0}},"novita/deepseek-v3.2":{"id":"novita/deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":0},"cost":{"input":0.27,"output":0.4,"cache_read":0.13}},"novita/glm-4.7-n":{"id":"novita/glm-4.7-n","name":"glm-4.7-n","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072}},"novita/glm-5":{"id":"novita/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"novita/kimi-k2.5":{"id":"novita/kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"novita/glm-4.7-flash":{"id":"novita/glm-4.7-flash","name":"glm-4.7-flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65500}},"fireworks-ai/kimi-k2.5-fw":{"id":"fireworks-ai/kimi-k2.5-fw","name":"Kimi-K2.5-FW","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":245760,"output":16384},"cost":{"input":0,"output":0}},"lumalabs/ray2":{"id":"lumalabs/ray2","name":"Ray2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ray","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":5000,"output":0}},"empiriolabs/deepseek-v4-flash-el":{"id":"empiriolabs/deepseek-v4-flash-el","name":"DeepSeek-V4-Flash-EL","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-05-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":0.14,"output":0.28}},"empiriolabs/deepseek-v4-pro-el":{"id":"empiriolabs/deepseek-v4-pro-el","name":"DeepSeek-V4-Pro-EL","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-05-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":1.67,"output":3.33}},"topazlabs-co/topazlabs":{"id":"topazlabs-co/topazlabs","name":"TopazLabs","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"topazlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":204,"output":0}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36,"cache_read":0.0045}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.09,"output":0.36,"cache_read":0.022}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":14,"output":110}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"o3-mini-high","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-01-31","last_updated":"2025-01-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-Codex-Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/chatgpt-4o-latest":{"id":"openai/chatgpt-4o-latest","name":"ChatGPT-4o-Latest","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-14","last_updated":"2024-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":4.5,"output":14}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-4-classic":{"id":"openai/gpt-4-classic","name":"GPT-4-Classic","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-03-25","last_updated":"2024-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"status":"deprecated","cost":{"input":27,"output":54}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"o3-deep-research","description":"Research model for long-horizon investigation, synthesis, and analytical reports","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":9,"output":36,"cache_read":2.2}},"openai/sora-2":{"id":"openai/sora-2","name":"Sora-2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"sora","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5.3-instant":{"id":"openai/gpt-5.3-instant","name":"GPT-5.3-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":19,"output":150}},"openai/gpt-5.3-codex-spark":{"id":"openai/gpt-5.3-codex-spark","name":"GPT-5.3-Codex-Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.36,"output":1.4,"cache_read":0.09}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":14,"cache_read":0.22}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4-Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-13","last_updated":"2023-09-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":9,"output":27}},"openai/gpt-3.5-turbo-raw":{"id":"openai/gpt-3.5-turbo-raw","name":"GPT-3.5-Turbo-Raw","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-27","last_updated":"2023-09-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":4524,"output":2048},"cost":{"input":0.45,"output":1.4}},"openai/gpt-5.2-instant":{"id":"openai/gpt-5.2-instant","name":"GPT-5.2-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/dall-e-3":{"id":"openai/dall-e-3","name":"DALL-E-3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"dall-e","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":800,"output":0}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1-Codex-Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"o4-mini-deep-research","description":"Research model for long-horizon investigation, synthesis, and analytical reports","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":14,"output":54}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-10","last_updated":"2026-02-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":124096,"output":4096},"cost":{"input":0.14,"output":0.54,"cache_read":0.068}},"openai/gpt-image-1.5":{"id":"openai/gpt-image-1.5","name":"gpt-image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":140,"output":540}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/gpt-image-1":{"id":"openai/gpt-image-1","name":"GPT-Image-1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4-Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.18,"output":1.1,"cache_read":0.018}},"openai/gpt-4o-search":{"id":"openai/gpt-4o-search","name":"GPT-4o-Search","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-11","last_updated":"2025-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5-Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":27.2727,"output":163.6364}},"openai/gpt-image-1-mini":{"id":"openai/gpt-image-1-mini","name":"GPT-Image-1-Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-4o-aug":{"id":"openai/gpt-4o-aug","name":"GPT-4o-Aug","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-11-21","last_updated":"2024-11-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9,"cache_read":1.1}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4-Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-12","last_updated":"2026-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.68,"output":4,"cache_read":0.068}},"openai/gpt-5.1-instant":{"id":"openai/gpt-5.1-instant","name":"GPT-5.1-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5.0505,"output":32.3232,"cache_read":1.2626}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-13","last_updated":"2023-09-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":2048},"cost":{"input":0.45,"output":1.4}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"GPT-5-Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4-Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":27,"output":160}},"openai/sora-2-pro":{"id":"openai/sora-2-pro","name":"Sora-2-Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"sora","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-4o-mini-search":{"id":"openai/gpt-4o-mini-search","name":"GPT-4o-mini-Search","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-11","last_updated":"2025-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.14,"output":0.54}},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"GPT-3.5-Turbo-Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-20","last_updated":"2023-09-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":3500,"output":1024},"cost":{"input":1.4,"output":1.8}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4,"cache_read":0.25}},"openai/gpt-4-classic-0314":{"id":"openai/gpt-4-classic-0314","name":"GPT-4-Classic-0314","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-26","last_updated":"2024-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"status":"deprecated","cost":{"input":27,"output":54}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-01-31","last_updated":"2025-01-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4}},"openai/o3":{"id":"openai/o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":18,"output":72}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":4.5455,"output":27.2727,"cache_read":0.4545}},"xai/grok-3-mini":{"id":"xai/grok-3-mini","name":"Grok 3 Mini","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-11","last_updated":"2025-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":0.5,"cache_read":0.075}},"xai/grok-4.20-multi-agent":{"id":"xai/grok-4.20-multi-agent","name":"Grok-4.20-Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-03-13","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":2,"output":6,"cache_read":0.2}},"xai/grok-code-fast-1":{"id":"xai/grok-code-fast-1","name":"Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-08-22","last_updated":"2025-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02}},"xai/grok-4":{"id":"xai/grok-4","name":"Grok-4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-3":{"id":"xai/grok-3","name":"Grok 3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-11","last_updated":"2025-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-4-fast-reasoning":{"id":"xai/grok-4-fast-reasoning","name":"Grok-4-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-09-16","last_updated":"2025-09-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"xai/grok-4.1-fast-non-reasoning":{"id":"xai/grok-4.1-fast-non-reasoning","name":"Grok-4.1-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000}},"xai/grok-4.1-fast-reasoning":{"id":"xai/grok-4.1-fast-reasoning","name":"Grok-4.1-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000}},"xai/grok-4-fast-non-reasoning":{"id":"xai/grok-4-fast-non-reasoning","name":"Grok-4-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-09-16","last_updated":"2025-09-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"cerebras/qwen3-32b-cs":{"id":"cerebras/qwen3-32b-cs","name":"qwen3-32b-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-15","last_updated":"2025-05-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"cerebras/llama-3.1-8b-cs":{"id":"cerebras/llama-3.1-8b-cs","name":"Llama-3.1-8B-CS","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-13","last_updated":"2025-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":0.1,"output":0.1}},"cerebras/llama-3.3-70b-cs":{"id":"cerebras/llama-3.3-70b-cs","name":"llama-3.3-70b-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-13","last_updated":"2025-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"cerebras/gpt-oss-120b-cs":{"id":"cerebras/gpt-oss-120b-cs","name":"GPT-OSS-120B-CS","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":0.35,"output":0.75}},"cerebras/qwen3-235b-2507-cs":{"id":"cerebras/qwen3-235b-2507-cs","name":"qwen3-235b-2507-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"runwayml/runway-gen-4-turbo":{"id":"runwayml/runway-gen-4-turbo","name":"Runway-Gen-4-Turbo","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"runway","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-09","last_updated":"2025-05-09","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":256,"output":0}},"runwayml/runway":{"id":"runwayml/runway","name":"Runway","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"runway","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-11","last_updated":"2024-10-11","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":256,"output":0}}}},"modelscope":{"id":"modelscope","env":["MODELSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-inference.modelscope.cn/v1","name":"ModelScope","doc":"https://modelscope.cn/docs/model-service/API-Inference/intro","models":{"ZhipuAI/GLM-4.5":{"id":"ZhipuAI/GLM-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0}},"ZhipuAI/GLM-4.6":{"id":"ZhipuAI/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":98304},"cost":{"input":0,"output":0}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"Qwen/Qwen3-30B-A3B-Thinking-2507":{"id":"Qwen/Qwen3-30B-A3B-Thinking-2507","name":"Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}}}},"poolside":{"id":"poolside","env":["POOLSIDE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.poolside.ai/v1","name":"Poolside","doc":"https://platform.poolside.ai","models":{"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"Laguna M.1","description":"Poolside's open-weight model for agentic coding and long-horizon work","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"claudinio":{"id":"claudinio","env":["CLAUDINIO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.claudin.io/v1","name":"Claudinio","doc":"https://claudin.io","models":{"claudinio":{"id":"claudinio","name":"Claudinio","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2026-05","release_date":"2026-05-12","last_updated":"2026-06-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.5,"output":2,"cache_read":0.15}},"claudius":{"id":"claudius","name":"Claudius","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2026-05","release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":3,"output":8,"cache_read":0.9}}}},"novita-ai":{"id":"novita-ai","env":["NOVITA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.novita.ai/openai","name":"NovitaAI","doc":"https://novita.ai/docs/guides/introduction","models":{"paddlepaddle/paddleocr-vl":{"id":"paddlepaddle/paddleocr-vl","name":"PaddleOCR-VL","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-22","last_updated":"2025-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.02}},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7-Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.5625}},"qwen/qwen3-omni-30b-a3b-instruct":{"id":"qwen/qwen3-omni-30b-a3b-instruct","name":"Qwen3 Omni 30B A3B Instruct","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text","video","audio","image"],"output":["text","audio"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.25,"output":0.97,"input_audio":2.2,"output_audio":1.788}},"qwen/qwen3-30b-a3b-fp8":{"id":"qwen/qwen3-30b-a3b-fp8","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.09,"output":0.45}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-10","last_updated":"2025-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22b Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":3}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-10","last_updated":"2025-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5-27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5-35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2}},"qwen/qwen3-235b-a22b-fp8":{"id":"qwen/qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8}},"qwen/qwen3-4b-fp8":{"id":"qwen/qwen3-4b-fp8","name":"Qwen3 4B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":20000},"cost":{"input":0.03,"output":0.03}},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.8,"output":0.8}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30b A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-09","last_updated":"2025-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":32768},"cost":{"input":0.07,"output":0.27}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.6,"output":3.6}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":2.11,"output":8.45}},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"qwen/qwen3-vl-8b-instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-17","last_updated":"2025-10-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.08,"output":0.5}},"qwen/qwen3-8b-fp8":{"id":"qwen/qwen3-8b-fp8","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":20000},"cost":{"input":0.035,"output":0.138}},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"qwen/qwen3-vl-30b-a3b-instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-10-11","modalities":{"input":["text","video","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5-122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2}},"qwen/qwen3-32b-fp8":{"id":"qwen/qwen3-32b-fp8","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.1,"output":0.45}},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"qwen/qwen3-vl-30b-a3b-thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-10-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":1}},"qwen/qwen2.5-7b-instruct":{"id":"qwen/qwen2.5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.07,"output":0.07}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen 2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-10-15","last_updated":"2024-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":8192},"cost":{"input":0.38,"output":0.4}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5}},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.58}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55}},"qwen/qwen3-omni-30b-a3b-thinking":{"id":"qwen/qwen3-omni-30b-a3b-thinking","name":"Qwen3 Omni 30B A3B Thinking","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text","audio","video","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.25,"output":0.97,"input_audio":2.2,"output_audio":1.788}},"qwen/qwen-mt-plus":{"id":"qwen/qwen-mt-plus","name":"Qwen MT Plus","description":"Translation model for multilingual conversion, localization, and cross-language workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-03","last_updated":"2025-09-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":8192},"cost":{"input":0.25,"output":0.75}},"baidu/ernie-4.5-300b-a47b-paddle":{"id":"baidu/ernie-4.5-300b-a47b-paddle","name":"ERNIE 4.5 300B A47B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":12000},"cost":{"input":0.28,"output":1.1}},"baidu/ernie-4.5-vl-28b-a3b":{"id":"baidu/ernie-4.5-vl-28b-a3b","name":"ERNIE 4.5 VL 28B A3B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2026-06-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":30000,"output":8000},"cost":{"input":0.14,"output":0.56}},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"baidu/ernie-4.5-21B-a3b-thinking":{"id":"baidu/ernie-4.5-21B-a3b-thinking","name":"ERNIE-4.5-21B-A3B-Thinking","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ernie","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-03","release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.07,"output":0.28}},"baidu/ernie-4.5-21B-a3b":{"id":"baidu/ernie-4.5-21B-a3b","name":"ERNIE 4.5 21B A3B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":120000,"output":8000},"cost":{"input":0.07,"output":0.28}},"baidu/ernie-4.5-vl-28b-a3b-thinking":{"id":"baidu/ernie-4.5-vl-28b-a3b-thinking","name":"ERNIE-4.5-VL-28B-A3B-Thinking","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-26","last_updated":"2025-11-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.39,"output":0.39}},"kwaipilot/kat-coder-pro":{"id":"kwaipilot/kat-coder-pro","name":"Kat Coder Pro","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-05","last_updated":"2026-01-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-07-30","last_updated":"2024-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60288,"output":16000},"cost":{"input":0.04,"output":0.17}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"Minimax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-m2.7","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax-m2.5","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.03}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.13,"output":0.4}},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":98304,"output":16384},"cost":{"input":0.119,"output":0.2}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.05,"output":0.1}},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai-org/glm-4.5-air":{"id":"zai-org/glm-4.5-air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-10-13","last_updated":"2025-10-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025}},"zai-org/glm-4.6":{"id":"zai-org/glm-4.6","name":"GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11}},"zai-org/glm-4.6v":{"id":"zai-org/glm-4.6v","name":"GLM 4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","video","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055}},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/autoglm-phone-9b-multilingual":{"id":"zai-org/autoglm-phone-9b-multilingual","name":"AutoGLM-Phone-9B-Multilingual","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.035,"output":0.138}},"zai-org/glm-4.5":{"id":"zai-org/glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai-org/glm-4.5v":{"id":"zai-org/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","video","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"zai-org/glm-5":{"id":"zai-org/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26}},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01}},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"Mythomax L2 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-25","last_updated":"2024-04-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3200},"cost":{"input":0.09,"output":0.09}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"Wizardlm 2 8x22B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-24","last_updated":"2024-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62}},"minimaxai/minimax-m1-80k":{"id":"minimaxai/minimax-m1-80k","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2}},"deepseek/deepseek-ocr":{"id":"deepseek/deepseek-ocr","name":"DeepSeek-OCR","description":"OCR model for extracting structured text from documents and screenshots","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-24","last_updated":"2025-10-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.03,"output":0.03}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"deepseek/deepseek-prover-v2-671b":{"id":"deepseek/deepseek-prover-v2-671b","name":"Deepseek Prover V2 671B","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":160000},"cost":{"input":0.7,"output":2.5}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5,"cache_read":0.35}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"Deepseek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345}},"deepseek/deepseek-r1-distill-qwen-32b":{"id":"deepseek/deepseek-r1-distill-qwen-32b","name":"DeepSeek R1 Distill Qwen 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":32000},"cost":{"input":0.3,"output":0.3}},"deepseek/deepseek-r1-distill-llama-70b":{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill LLama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.8,"output":0.8}},"deepseek/deepseek-r1-turbo":{"id":"deepseek/deepseek-r1-turbo","name":"DeepSeek R1 (Turbo)\t","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5}},"deepseek/deepseek-r1-0528-qwen3-8b":{"id":"deepseek/deepseek-r1-0528-qwen3-8b","name":"DeepSeek R1 0528 Qwen3 8B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.06,"output":0.09}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"Deepseek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"Deepseek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"deepseek/deepseek-v3-turbo":{"id":"deepseek/deepseek-v3-turbo","name":"DeepSeek V3 (Turbo)\t","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.4,"output":1.3}},"deepseek/deepseek-v3-0324":{"id":"deepseek/deepseek-v3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.27,"output":1.12,"cache_read":0.135}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.6,"output":3.2,"cache_read":0.135}},"deepseek/deepseek-ocr-2":{"id":"deepseek/deepseek-ocr-2","name":"deepseek/deepseek-ocr-2","description":"OCR model for extracting structured text from documents and screenshots","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.03,"output":0.03}},"deepseek/deepseek-r1-distill-qwen-14b":{"id":"deepseek/deepseek-r1-distill-qwen-14b","name":"DeepSeek R1 Distill Qwen 14B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.15,"output":0.15}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"Ring-2.6-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ring","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-08","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.06}},"inclusionai/ling-2.6-1t":{"id":"inclusionai/ling-2.6-1t","name":"Ling-2.6-1T","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-23","last_updated":"2026-06-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":2.5,"cache_read":0.06}},"inclusionai/ling-2.6-flash":{"id":"inclusionai/ling-2.6-flash","name":"Ling-2.6-flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"xiaomimimo/mimo-v2-flash":{"id":"xiaomimimo/mimo-v2-flash","name":"XiaomiMiMo/MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.1,"output":0.3,"cache_read":0.3}},"xiaomimimo/mimo-v2-pro":{"id":"xiaomimimo/mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.4,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"xiaomimimo/mimo-v2.5-pro":{"id":"xiaomimimo/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043,"tiers":[{"input":0.522,"output":1.044,"cache_read":0.0043,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.522,"output":1.044,"cache_read":0.0043}}},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-07-24","last_updated":"2024-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.05}},"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"id":"meta-llama/llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-06","last_updated":"2025-04-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85}},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05}},"meta-llama/llama-3-8b-instruct":{"id":"meta-llama/llama-3-8b-instruct","name":"Llama 3 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-25","last_updated":"2024-04-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.04,"output":0.04}},"meta-llama/llama-4-scout-17b-16e-instruct":{"id":"meta-llama/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-06","last_updated":"2025-04-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-07","last_updated":"2024-12-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":120000},"cost":{"input":0.135,"output":0.4}},"meta-llama/llama-3-70b-instruct":{"id":"meta-llama/llama-3-70b-instruct","name":"Llama3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-04-25","last_updated":"2024-04-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74}},"nousresearch/hermes-2-pro-llama-3-8b":{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"Hermes 2 Pro Llama 3 8B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-06-27","last_updated":"2024-06-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.14,"output":0.14}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"OpenAI: GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.04,"output":0.15}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"OpenAI GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25}},"sao10K/l3-70b-euryale-v2.1":{"id":"sao10K/l3-70b-euryale-v2.1","name":"L3 70B Euryale V2.1\t","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-06-18","last_updated":"2024-06-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":1.48,"output":1.48}},"sao10K/l3-8b-lunaris":{"id":"sao10K/l3-8b-lunaris","name":"Sao10k L3 8B Lunaris\t","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-11-28","last_updated":"2024-11-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.05,"output":0.05}},"sao10K/L3-8B-stheno-v3.2":{"id":"sao10K/L3-8B-stheno-v3.2","name":"L3 8B Stheno V3.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-11-29","last_updated":"2024-11-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":32000},"cost":{"input":0.05,"output":0.05}},"sao10K/l31-70b-euryale-v2.2":{"id":"sao10K/l31-70b-euryale-v2.2","name":"L31 70B Euryale V2.2","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":1.48,"output":1.48}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-11-07","last_updated":"2026-06-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"baichuan/baichuan-m2-32b":{"id":"baichuan/baichuan-m2-32b","name":"baichuan-m2-32b","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"baichuan","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.07,"output":0.07}}}},"nebius":{"id":"nebius","env":["NEBIUS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokenfactory.nebius.com/v1","name":"Nebius Token Factory","doc":"https://docs.tokenfactory.nebius.com/","models":{"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":1024000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.15}},"nvidia/Nemotron-3_5-Lightning":{"id":"nvidia/Nemotron-3_5-Lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.06,"output":0.24,"cache_read":0.06}},"nvidia/Nemotron-3-Ultra-550b-a55b":{"id":"nvidia/Nemotron-3-Ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":3,"cache_read":1}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron-3-Super-120B-A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.3,"output":0.9}},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma-3-27b-it","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-10","release_date":"2026-01-20","last_updated":"2026-02-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":110000,"input":100000,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"output":1024000},"cost":{"input":0.15,"output":0.5,"cache_read":0.15}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-01-28","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5-397B-A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-15","last_updated":"2026-05-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":250000,"output":8192},"cost":{"input":0.6,"output":3.6,"cache_read":0.06,"cache_write":0.75}},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-10","release_date":"2026-01-10","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"input":40960,"output":0},"cost":{"input":0.01,"output":0}},"NousResearch/Hermes-4-405B":{"id":"NousResearch/Hermes-4-405B","name":"Hermes-4-405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-11","release_date":"2026-01-30","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":120000,"output":8192},"cost":{"input":1,"output":3,"reasoning":3,"cache_read":0.1,"cache_write":1.25}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-01-10","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":124000,"output":8192},"cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.015,"cache_write":0.18}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8000},"cost":{"input":0.95,"output":4}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8000},"cost":{"input":3,"output":15,"cache_read":3}}}},"minimax-cn-coding-plan":{"id":"minimax-cn-coding-plan","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimaxi.com/anthropic/v1","name":"MiniMax Token Plan (minimaxi.com)","doc":"https://platform.minimaxi.com/docs/token-plan/intro","models":{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"xiaomi-token-plan-ams":{"id":"xiaomi-token-plan-ams","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-ams.xiaomimimo.com/v1","name":"Xiaomi Token Plan (Europe)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}}}},"zeldoc":{"id":"zeldoc","env":["ZELDOC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.zeldoc.ai/v1","name":"Zeldoc","doc":"https://docs.zeldoc.ai","models":{"zdev":{"id":"zdev","name":"ZDev","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}}}},"dinference":{"id":"dinference","env":["DINFERENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.dinference.com/v1","name":"DInference","doc":"https://dinference.com","models":{"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.45,"output":1.65}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":3.89}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.22,"output":0.88}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.75,"output":2.4}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.25,"output":3.89}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08","last_updated":"2025-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.0675,"output":0.27}}}},"pioneer":{"id":"pioneer","env":["PIONEER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.pioneer.ai/v1","name":"Pioneer","doc":"https://agent.pioneer.ai/llms.txt","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"devstral-2":{"id":"devstral-2","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.4,"cache_write":0.4}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005,"cache_write":0.05}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.5625}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05,"cache_write":0.1}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.325,"output":1.95,"cache_read":0.065,"cache_write":0.40625}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.2,"cache_write":0.4}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":1.5}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03,"cache_write":0.25}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":131072},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25}},"mistral-large-3":{"id":"mistral-large-3","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25,"cache_write":2.5}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":1,"cache_write":2}},"claude-3-7-sonnet-latest":{"id":"claude-3-7-sonnet-latest","name":"Claude Sonnet 3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_read":0.0375,"cache_write":0.234375}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":240000,"output":64000},"cost":{"input":1.04,"output":6.24,"cache_read":0.208,"cache_write":1.3}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025,"cache_write":0.25}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125}},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":1.5,"output":7.5,"cache_read":1.5,"cache_write":1.5}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5}},"HuggingFaceTB/SmolLM3-3B-Base":{"id":"HuggingFaceTB/SmolLM3-3B-Base","name":"SmolLM3 3B Base","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.27,"output":1.12,"cache_read":0.135,"cache_write":0.27}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.0197,"cache_write":0.1}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":131072},"cost":{"input":0.56,"output":1.68,"cache_read":0.56,"cache_write":0.56}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625,"cache_write":0.435}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01,"cache_write":0.1}},"pioneer/auto":{"id":"pioneer/auto","name":"Pioneer Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2025-06-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":4096}},"mistralai/Mistral-Small-4-119B-2603":{"id":"mistralai/Mistral-Small-4-119B-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15}},"mistralai/Pixtral-12B-2409":{"id":"mistralai/Pixtral-12B-2409","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03,"cache_read":0.02,"cache_write":0.02}},"mistralai/Codestral-22B-v0.1":{"id":"mistralai/Codestral-22B-v0.1","name":"Codestral-22B-v0.1","description":"Open Mistral code model for fill-in-the-middle and 80+ programming languages","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-05-29","last_updated":"2024-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.3,"output":0.9,"cache_read":0.3,"cache_write":0.3}},"mistralai/Mistral-7B-Instruct-v0.3":{"id":"mistralai/Mistral-7B-Instruct-v0.3","name":"Mistral 7B Instruct v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2023-04-30","last_updated":"2023-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"mistralai/Ministral-8B-Instruct-2410":{"id":"mistralai/Ministral-8B-Instruct-2410","name":"Ministral 8B Instruct","description":"Efficient open Mistral edge model for on-device chat and function calling","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"mistralai/Magistral-Small-2506":{"id":"mistralai/Magistral-Small-2506","name":"Magistral Small","description":"Open Mistral reasoning model for transparent step-by-step problem solving","family":"magistral","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5}},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.05,"cache_write":0.05}},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":2.5,"cache_read":0.15,"cache_write":0.5}},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8":{"id":"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.09,"output":0.45,"cache_read":0.09,"cache_write":0.09}},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5}},"google/gemma-4-E2B-it":{"id":"google/gemma-4-E2B-it","name":"Gemma 4 E2B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5}},"google/gemma-4-E4B-it":{"id":"google/gemma-4-E4B-it","name":"Gemma 4 E4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"google/diffusiongemma-26B-A4B-it":{"id":"google/diffusiongemma-26B-A4B-it","name":"DiffusionGemma 26B-A4B IT","description":"Gemini model for general assistance, reasoning, and multimodal workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5}},"google/gemma-4-12B-it":{"id":"google/gemma-4-12B-it","name":"Gemma 4 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.25,"cache_read":0.25,"cache_write":0.25}},"google/gemma-3-4b-pt":{"id":"google/gemma-3-4b-pt","name":"Gemma 3 4B (Pretrained)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-02-28","last_updated":"2025-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182,"cache_write":0.98}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1040000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":1.4}},"LiquidAI/LFM2-24B-A2B":{"id":"LiquidAI/LFM2-24B-A2B","name":"LFM2 24B A2B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-01-31","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12,"cache_read":0.03,"cache_write":0.03}},"fastino/gliguard-LLMGuardrails-300M":{"id":"fastino/gliguard-LLMGuardrails-300M","name":"GLiGuard LLM Guardrails 300M","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-base-v1":{"id":"fastino/gliner2-base-v1","name":"GLiNER2 Base","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-multi-v1":{"id":"fastino/gliner2-multi-v1","name":"GLiNER2 Multi","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-30","last_updated":"2025-11-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-multi-large-v1":{"id":"fastino/gliner2-multi-large-v1","name":"GLiNER2 Multi Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-30","last_updated":"2025-11-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-privacy-filter-PII-multi":{"id":"fastino/gliner2-privacy-filter-PII-multi","name":"GLiNER2 Privacy Filter PII (Multi)","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-large-v1":{"id":"fastino/gliner2-large-v1","name":"GLiNER2 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15,"cache_write":1.25}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-03-31","release_date":"2025-03-31","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"Qwen/Qwen3-4B-Instruct-2507":{"id":"Qwen/Qwen3-4B-Instruct-2507","name":"Qwen3 4B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3,"cache_read":0.3,"cache_write":0.3}},"Qwen/Qwen3-1.7B-Base":{"id":"Qwen/Qwen3-1.7B-Base","name":"Qwen3 1.7B Base","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":1.2,"output":1.2,"cache_read":1.2,"cache_write":1.2}},"Qwen/Qwen3-4B-Base":{"id":"Qwen/Qwen3-4B-Base","name":"Qwen3 4B Base","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.6,"output":0.6,"cache_read":0.6,"cache_write":0.6}},"Qwen/Qwen2.5-Coder-0.5B":{"id":"Qwen/Qwen2.5-Coder-0.5B","name":"Qwen2.5-Coder-0.5B","description":"Tiny open Qwen code model for lightweight completion and on-device coding","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":1,"cache_read":0.028,"cache_write":0.175}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.3}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.279,"output":1.2,"cache_read":0.279,"cache_write":0.279}},"meta-llama/Llama-3.2-3B":{"id":"meta-llama/Llama-3.2-3B","name":"Llama-3.2-3B","description":"Small open Llama base model for lightweight text generation and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.2-1B":{"id":"meta-llama/Llama-3.2-1B","name":"Llama-3.2-1B","description":"Compact open Llama base model for lightweight and on-device use","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-06-30","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"meta-llama/Llama-3.2-3B-Instruct":{"id":"meta-llama/Llama-3.2-3B-Instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-31","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":80000},"cost":{"input":0.1,"output":0.335,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.2-1B-Instruct":{"id":"meta-llama/Llama-3.2-1B-Instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-31","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":60000},"cost":{"input":0.1,"output":0.201,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.035,"cache_write":0.07}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19,"cache_write":0.95}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.34,"cache_write":0.95}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0.435}},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0.14}}}},"helicone":{"id":"helicone","env":["HELICONE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ai-gateway.helicone.ai/v1","name":"Helicone","doc":"https://helicone.ai/models","models":{"llama-3.1-8b-instruct-turbo":{"id":"llama-3.1-8b-instruct-turbo","name":"Meta Llama 3.1 8B Instruct Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03}},"grok-3-mini":{"id":"grok-3-mini","name":"xAI Grok 3 Mini","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":0.5,"cache_read":0.075}},"gpt-5-nano":{"id":"gpt-5-nano","name":"OpenAI GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cache_read":0.005}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"xAI Grok 4.1 Fast Non-Reasoning","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"llama-3.1-8b-instruct":{"id":"llama-3.1-8b-instruct","name":"Meta Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.049999999999999996}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"OpenAI GPT-4.1 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998}},"gpt-5-codex":{"id":"gpt-5-codex","name":"OpenAI: GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"claude-3-haiku-20240307":{"id":"claude-3-haiku-20240307","name":"Anthropic: Claude 3 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-03-07","last_updated":"2024-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.56,"output":1.68,"cache_read":0.07}},"glm-4.6":{"id":"glm-4.6","name":"Zai GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.44999999999999996,"output":1.5}},"gpt-5-pro":{"id":"gpt-5-pro","name":"OpenAI: GPT-5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":15,"output":120}},"llama-prompt-guard-2-86m":{"id":"llama-prompt-guard-2-86m","name":"Meta Llama Prompt Guard 2 86M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":16384},"cost":{"input":0.14,"output":1.4}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"OpenAI: GPT-5.1 Codex Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998}},"llama-prompt-guard-2-22m":{"id":"llama-prompt-guard-2-22m","name":"Meta Llama Prompt Guard 2 22M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"OpenAI: GPT-5.1 Codex","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"xAI Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-25","last_updated":"2024-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":10000},"cost":{"input":0.19999999999999998,"output":1.5,"cache_read":0.02}},"kimi-k2-0905":{"id":"kimi-k2-0905","name":"Kimi K2 (09/05)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.5,"output":2,"cache_read":0.39999999999999997}},"gemma2-9b-it":{"id":"gemma2-9b-it","name":"Google Gemma 2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-25","last_updated":"2024-06-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.01,"output":0.03}},"chatgpt-4o-latest":{"id":"chatgpt-4o-latest","name":"OpenAI ChatGPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-14","last_updated":"2024-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":5,"output":20,"cache_read":2.5}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Google Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998,"cache_write":0.09999999999999999}},"ernie-4.5-21b-a3b-thinking":{"id":"ernie-4.5-21b-a3b-thinking","name":"Baidu Ernie 4.5 21B A3B Thinking","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ernie","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-16","last_updated":"2025-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8000},"cost":{"input":0.07,"output":0.28}},"grok-4":{"id":"grok-4","name":"xAI Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-09","last_updated":"2024-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"qwen3-235b-a22b-thinking":{"id":"qwen3-235b-a22b-thinking","name":"Qwen3 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":81920},"cost":{"input":0.3,"output":2.9000000000000004}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":262144},"cost":{"input":0.48,"output":2}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":40960},"cost":{"input":0.29,"output":0.59}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Google Gemini 3 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.19999999999999998}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Anthropic: Claude Opus 4.1 (20250805)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-4.1-mini-2025-04-14":{"id":"gpt-4.1-mini-2025-04-14","name":"OpenAI GPT-4.1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"OpenAI GPT-4.1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999}},"sonar-reasoning":{"id":"sonar-reasoning","name":"Perplexity Sonar Reasoning","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":1,"output":5}},"gpt-5-chat-latest":{"id":"gpt-5-chat-latest","name":"OpenAI GPT-5 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-09","release_date":"2024-09-30","last_updated":"2024-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.56,"output":1.68,"cache_read":0.07}},"claude-4.5-opus":{"id":"claude-4.5-opus","name":"Anthropic: Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"OpenAI GPT-OSS 20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.049999999999999996,"output":0.19999999999999998}},"claude-3.5-sonnet-v2":{"id":"claude-3.5-sonnet-v2","name":"Anthropic: Claude 3.5 Sonnet v2","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"qwen3-coder":{"id":"qwen3-coder","name":"Qwen3 Coder 480B A35B Instruct Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.95}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"xAI Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.09999999999999999,"output":0.3}},"gpt-5.1":{"id":"gpt-5.1","name":"OpenAI GPT-5.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"grok-3":{"id":"grok-3","name":"xAI Grok 3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"OpenAI GPT-5.1 Chat","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"o1-mini":{"id":"o1-mini","name":"OpenAI: o1-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":65536},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"llama-4-maverick":{"id":"llama-4-maverick","name":"Meta Llama 4 Maverick 17B 128E","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6}},"o1":{"id":"o1","name":"OpenAI: o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"gpt-4o":{"id":"gpt-4o","name":"OpenAI GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"xAI: Grok 4 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic: Claude Sonnet 4.5 (20250929)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16400},"cost":{"input":20,"output":40}},"llama-guard-4":{"id":"llama-guard-4","name":"Meta Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":1024},"cost":{"input":0.21,"output":0.21}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic: Claude 4.5 Haiku (20251001)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25}},"deepseek-tng-r1t2-chimera":{"id":"deepseek-tng-r1t2-chimera","name":"DeepSeek TNG R1T2 Chimera","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-02","last_updated":"2025-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":163840},"cost":{"input":0.3,"output":1.2}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.03,"output":0.13}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"OpenAI GPT-4o-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"claude-3.5-haiku":{"id":"claude-3.5-haiku","name":"Anthropic: Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":0.7999999999999999,"output":4,"cache_read":0.08,"cache_write":1}},"hermes-2-pro-llama-3-8b":{"id":"hermes-2-pro-llama-3-8b","name":"Hermes 2 Pro Llama 3 8B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-05-27","last_updated":"2024-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.14,"output":0.14}},"gpt-4.1":{"id":"gpt-4.1","name":"OpenAI GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"sonar":{"id":"sonar","name":"Perplexity Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":1,"output":1}},"kimi-k2-0711":{"id":"kimi-k2-0711","name":"Kimi K2 (07/11)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.5700000000000001,"output":2.3}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Perplexity Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8}},"claude-opus-4":{"id":"claude-opus-4","name":"Anthropic: Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":41000,"output":41000},"cost":{"input":0.08,"output":0.29}},"llama-4-scout":{"id":"llama-4-scout","name":"Meta Llama 4 Scout 17B 16E","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.08,"output":0.3}},"deepseek-v3.1-terminus":{"id":"deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.27,"output":1,"cache_read":0.21600000000000003}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Anthropic: Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"claude-3.7-sonnet":{"id":"claude-3.7-sonnet","name":"Anthropic: Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-02","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"mistral-small":{"id":"mistral-small","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.2}},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral-Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-24","last_updated":"2024-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":6}},"qwen3-vl-235b-a22b-instruct":{"id":"qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":1.5}},"sonar-pro":{"id":"sonar-pro","name":"Perplexity Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":3,"output":15}},"claude-4.5-sonnet":{"id":"claude-4.5-sonnet","name":"Anthropic: Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"gpt-5-mini":{"id":"gpt-5-mini","name":"OpenAI GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"OpenAI GPT-OSS 120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16}},"sonar-deep-research":{"id":"sonar-deep-research","name":"Perplexity Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8}},"llama-3.1-8b-instant":{"id":"llama-3.1-8b-instant","name":"Meta Llama 3.1 8B Instant","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32678},"cost":{"input":0.049999999999999996,"output":0.08}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Google Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.3125,"cache_write":1.25}},"qwen2.5-coder-7b-fast":{"id":"qwen2.5-coder-7b-fast","name":"Qwen2.5 Coder 7B fast","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-15","last_updated":"2024-09-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":0.03,"output":0.09}},"claude-4.5-haiku":{"id":"claude-4.5-haiku","name":"Anthropic: Claude 4.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25}},"gpt-5":{"id":"gpt-5","name":"OpenAI GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Google Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.3}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Anthropic: Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"gemma-3-12b-it":{"id":"gemma-3-12b-it","name":"Google Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.049999999999999996,"output":0.09999999999999999}},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Meta Llama 3.3 70B Versatile","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32678},"cost":{"input":0.59,"output":0.7899999999999999}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Meta Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16400},"cost":{"input":0.13,"output":0.39}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"xAI Grok 4 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"o4-mini":{"id":"o4-mini","name":"OpenAI o4 Mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"o3-mini":{"id":"o3-mini","name":"OpenAI o3 Mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2023-10","release_date":"2023-10-01","last_updated":"2023-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"o3":{"id":"o3","name":"OpenAI o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"o3-pro":{"id":"o3-pro","name":"OpenAI o3 Pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}}}},"cloudferro-sherlock":{"id":"cloudferro-sherlock","env":["CLOUDFERRO_SHERLOCK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-sherlock.cloudferro.com/openai/v1/","name":"CloudFerro Sherlock","doc":"https://docs.sherlock.cloudferro.com/","models":{"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"input":180000,"output":16000},"cost":{"input":0.3,"output":1.2}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10-09","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":70000,"output":70000},"cost":{"input":2.92,"output":2.92}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"OpenAI GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":2.92,"output":2.92}},"speakleash/Bielik-11B-v2.6-Instruct":{"id":"speakleash/Bielik-11B-v2.6-Instruct","name":"Bielik 11B v2.6 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.67,"output":0.67}},"speakleash/Bielik-11B-v3.0-Instruct":{"id":"speakleash/Bielik-11B-v3.0-Instruct","name":"Bielik 11B v3.0 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.67,"output":0.67}}}},"stepfun":{"id":"stepfun","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.com/v1","name":"StepFun (China)","doc":"https://platform.stepfun.com/docs/zh/overview/concept","models":{"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-06-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037}},"step-tts-2":{"id":"step-tts-2","name":"Step TTS 2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"step-2-16k":{"id":"step-2-16k","name":"Step 2 (16K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04}},"stepaudio-2.5-asr":{"id":"stepaudio-2.5-asr","name":"StepAudio 2.5 ASR","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-24","last_updated":"2026-07-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"stepaudio-2.5-tts":{"id":"stepaudio-2.5-tts","name":"StepAudio 2.5 TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-1-32k":{"id":"step-1-32k","name":"Step 1 (32K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41}}}},"unorouter":{"id":"unorouter","env":["UNOROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.unorouter.com/v1","name":"UnoRouter","doc":"https://unorouter.com/models","models":{"deepseek-v4-pro:free":{"id":"deepseek-v4-pro:free","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.819,"output":3.276}},"deepseek-v4-flash:free":{"id":"deepseek-v4-flash:free","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.2675,"output":5.3368}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.6001,"output":5.0288}},"qwen3.5-397b-a17b:free":{"id":"qwen3.5-397b-a17b:free","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.0625,"output":0.125}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1.8,"output":10.8}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1857,"output":1.1142}},"glm-4.5-flash:free":{"id":"glm-4.5-flash:free","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.2,"output":6}},"step-3.7-flash:free":{"id":"step-3.7-flash:free","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0}},"nemotron-3-ultra-550b-a55b:free":{"id":"nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0}},"gemma-4-31b-it:free":{"id":"gemma-4-31b-it:free","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"glm-5.2:free":{"id":"glm-5.2:free","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"minimax-m2.7:free":{"id":"minimax-m2.7:free","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"gpt-5.4:free":{"id":"gpt-5.4:free","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"gpt-5.5:free":{"id":"gpt-5.5:free","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.425,"output":2.125}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.8999,"output":1.7999}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.05,"output":8.4}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.44,"output":7.2}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1875,"output":1.125}}}},"coralbricks":{"id":"coralbricks","env":["CORAL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.coralbricks.ai/v1","name":"CoralBricks","doc":"https://www.coralbricks.ai/docs","models":{"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0}},"glm-5.3-fp4":{"id":"glm-5.3-fp4","name":"GLM 5.3 FP4","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.12,"output":4.4,"cache_read":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.12,"output":0.6,"cache_read":0}}}},"hyper":{"id":"hyper","env":["HYPER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://hyper.charm.land/v1","name":"Charm Hyper","doc":"https://hyper.charm.land","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":25600},"cost":{"input":0.106,"output":0.368,"cache_write":0.053}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.437216,"output":4.311648,"cache_read":0.047907}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.044}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":26214},"cost":{"input":0.1175,"output":1.136,"cache_write":0.05875}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-20","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-05","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":6553},"cost":{"input":0.418,"output":1.588,"cache_write":0.209}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-07-03","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":26214},"cost":{"input":1.03436,"output":4.3552,"cache_read":0.174208}},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":430000,"output":43000},"cost":{"input":0.274,"output":0.8992,"cache_write":0.137}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.152432}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"cost":{"input":0.32664,"output":1.30656,"cache_read":0.064239}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-06","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.2,"output":0.4,"cache_read":0.04}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-07-03","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":16000},"cost":{"input":1.03436,"output":4.3552,"cache_read":0.206872}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":26214},"cost":{"input":0.6,"output":2.5,"cache_write":0.3}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-27","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":64000},"cost":{"input":0.2,"output":0.8,"cache_read":0.04}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16000},"cost":{"input":3.2664,"output":16.332,"cache_read":0.32664}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.16332,"output":0.5444,"cache_read":0.031575}},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-20","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":4,"cache_read":0.1,"cache_write":1.25}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-04-13","last_updated":"2026-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":20275},"cost":{"input":0.93,"output":2.878,"cache_write":0.465}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-13","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":26214},"cost":{"input":0.5284,"output":2.785,"cache_write":0.2642}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202750,"output":3276},"cost":{"input":1.29,"output":4.22,"cache_write":0.645}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-15","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.2,"output":4.8,"cache_read":0.24}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-06","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":2.4,"output":4.8,"cache_read":0.2}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-13","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128072,"output":13107},"cost":{"input":0.188,"output":0.7,"cache_write":0.094}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.283088}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":12800},"cost":{"input":0.6066,"output":1.0386,"cache_write":0.3033}},"qwen3.6-max":{"id":"qwen3.6-max","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-20","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"qwen3-coder-480b-a35b-instruct-int4-mixed-ar":{"id":"qwen3-coder-480b-a35b-instruct-int4-mixed-ar","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":106000,"output":10600},"cost":{"input":0.445,"output":2.145,"cache_write":0.2225}}}},"requesty":{"id":"requesty","env":["REQUESTY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://router.requesty.ai/v1","name":"Requesty","doc":"https://requesty.ai/solution/llm-routing/models","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-7@eu":{"id":"claude-opus-4-7@eu","name":"Claude Opus 4.7 (EU)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.34,"cache_read":0.07}},"glm-5.3@eu":{"id":"glm-5.3@eu","name":"GLM-5.3 (EU)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26}},"kimi-k2.7-code@eu":{"id":"kimi-k2.7-code@eu","name":"Kimi K2.7 Code (EU)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.31}},"qwen3.8-2.4T-A95B":{"id":"qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2}},"nemotron-3.5-content-safety":{"id":"nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0}},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"mistral-medium-3-5":{"id":"mistral-medium-3-5","name":"mistral-medium-3-5","description":"Mistral Medium 3.5 is a dense 128B instruction following model from Mistral AI. It supports text and image inputs with text output, and is designed for agentic workflows, coding, and complex multi step reasoning. It is particularly strong at reliable multi tool calling and long horizon tasks, with a 256K context window, configurable reasoning effort per request, and a custom vision encoder that handles variable image sizes and aspect ratios. Self hostable on as few as four GPUs and available under open weights.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65}},"ring-2.6-1t":{"id":"ring-2.6-1t","name":"ring-2.6-1t","description":"Inclusion AI ring-2.6-1t","family":"ring","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-05-08","last_updated":"2026-05-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5}},"gpt-4.1-mini@eu":{"id":"gpt-4.1-mini@eu","name":"GPT-4.1 mini (EU)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.44,"output":1.76,"cache_read":0.11}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.07}},"gemini-3.7-flash@eu":{"id":"gemini-3.7-flash@eu","name":"Gemini 3.7 Flash (EU)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825}},"qwen3.8-flash-next":{"id":"qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"leanstral-1-5@eu":{"id":"leanstral-1-5@eu","name":"leanstral-1-5@eu","description":"Leanstral 1.5 is an updated Lean 4 formal proof engineering model from Mistral AI, optimized for automated theorem proving and autoformalization. It has 119B total parameters with 6.5B active and supports a 256K token context window. It supports native function calling and structured output.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"deepseek-v4-pro-0813@eu":{"id":"deepseek-v4-pro-0813@eu","name":"DeepSeek V4 Pro 0813 (EU)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.44}},"ling-3.0-tiny":{"id":"ling-3.0-tiny","name":"ling-3.0-tiny","description":"Ling-3.0-tiny is an efficient 7.9B parameter MoE model from inclusionAI with only 1.3B active parameters per token. Built for responsive agents, reliable instruction following and multi turn conversation, with a 256K context window, native function calling, prompt caching and switchable Thinking and Instant modes.","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5}}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625}},"nvidia-nemotron-3-ultra":{"id":"nvidia-nemotron-3-ultra","name":"nvidia-nemotron-3-ultra","description":"NVIDIA Nemotron 3 Ultra is NVIDIA's strongest open-weights reasoning model, positioned near GPT-5.4 Mini (xhigh) and ahead of DeepSeek V4-Flash and Qwen3.5-397B-A17B.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":2.5}},"nvidia-nemotron-3-super-120b-a12b":{"id":"nvidia-nemotron-3-super-120b-a12b","name":"nvidia-nemotron-3-super-120b-a12b","description":"NVIDIA Nemotron 3 Super is a hybrid Mixture-of-Experts (MoE) model engineered for highest compute efficiency and accuracy in multi-agent applications and specialized agentic systems. It is optimized to run many collaborating agents per application on a single GPU, delivering high accuracy for reasoning, tool use, and instruction following.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.5}},"minimax-m2.7-highspeed":{"id":"minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":1.2}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"claude-fable-5.1@eu":{"id":"claude-fable-5.1@eu","name":"Claude Fable 5.1 (EU)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.6}},"claude-opus-4-6@eu":{"id":"claude-opus-4-6@eu","name":"Claude Opus 4.6 (EU)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":1,"cache_read":0.05}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":1.2}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":9,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":9}}},"kat-coder-pro":{"id":"kat-coder-pro","name":"kat-coder-pro","description":"KAT-Coder-Pro V2 by KwaiKAT is a non-reasoning model optimized for agentic coding. It delivers strong performance on reasoning-style tasks while requiring significantly fewer output tokens than peer models. With the 1210 release, it achieved a score of 64 on the Artificial Analysis Intelligence Index, placing it in the global Top 10 and ranking first among all non-reasoning models.","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":1.2}},"gpt-5.6-terra@eu":{"id":"gpt-5.6-terra@eu","name":"GPT-5.6 Terra (EU)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":2.55,"cache_read":0.16}},"gpt-5.4@eu":{"id":"gpt-5.4@eu","name":"GPT-5.4 (EU)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gemini-3.8-flash@eu":{"id":"gemini-3.8-flash@eu","name":"Gemini 3.8 Flash (EU)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5-nano@eu":{"id":"gpt-5-nano@eu","name":"GPT-5 Nano (EU)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.055,"output":0.44,"cache_read":0.0055}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.07}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"claude-sonnet-5@eu":{"id":"claude-sonnet-5@eu","name":"Claude Sonnet 5 (EU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":7,"cache_read":0.15}},"nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0}},"gpt-5.5@eu":{"id":"gpt-5.5@eu","name":"GPT-5.5 (EU)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333}},"seed-1.8":{"id":"seed-1.8","name":"seed-1.8","description":"Optimized specifically for multimodal agent scenarios. It features enhanced agent capabilities, upgraded multimodal comprehension, and more flexible context management.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.1}},"gpt-5-mini@eu":{"id":"gpt-5-mini@eu","name":"GPT-5 Mini (EU)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.275,"output":2.2,"cache_read":0.0275}},"gpt-4.1-nano@eu":{"id":"gpt-4.1-nano@eu","name":"GPT-4.1 nano (EU)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.11,"output":0.44,"cache_read":0.0275}},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"claude-fable-5@eu":{"id":"claude-fable-5@eu","name":"Claude Fable 5 (EU)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75}},"ling-2.6-1t":{"id":"ling-2.6-1t","name":"ling-2.6-1t","description":"Inclusion AI ling-2.6-1t","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5}},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"seed-2.0-pro":{"id":"seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"glm-5.1@eu":{"id":"glm-5.1@eu","name":"GLM-5.1 (EU)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":200000},"cost":{"input":1.4,"output":4.4,"cache_read":1.4}},"qwen3.8-flash-next@eu":{"id":"qwen3.8-flash-next@eu","name":"Qwen3.8 Flash Next (EU)","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"thinkingcap-qwen3.6-27b":{"id":"thinkingcap-qwen3.6-27b","name":"thinkingcap-qwen3.6-27b","description":"ThinkingCap-Qwen3.6-27B is a reasoning tuned model from BottlecapAI built on Qwen3.6 27B. It supports extended thinking with tool calling and a 256K context window. Served via Sference.","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-07-13","last_updated":"2026-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.26}},"nemotron-3-ultra-nvfp4":{"id":"nemotron-3-ultra-nvfp4","name":"nemotron-3-ultra-nvfp4","description":"Nemotron-3-Ultra-550B-A55B-NVFP4 is a frontier-scale large language model (LLM) trained by NVIDIA, designed to deliver strong agentic, reasoning, and conversational capabilities. It is optimized for the most demanding workloads, including complex multi-step agents, long-context analysis, and high-accuracy reasoning over code, math, and science. The model employs a hybrid Latent Mixture-of-Experts (LatentMoE) architecture, utilizing interleaved Mamba-2 and MoE layers, along with select Attention layers. Like the Super model, the Ultra model incorporates Multi-Token Prediction (MTP) layers for faster text generation and improved quality, and it is trained using an NVFP4 pre-training recipe to maximize compute efficiency. The model has 55B active parameters and 550B parameters in total.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"minimax-m3@eu":{"id":"minimax-m3@eu","name":"MiniMax-M3 (EU)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.4,"output":2,"cache_read":0.1}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"devstral-latest@eu":{"id":"devstral-latest@eu","name":"devstral-latest@eu","description":"An enterprise grade text model, that excels at using tools to explore codebases, editing multiple files and power software engineering agents.","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.583}},"mistral-medium-3-5@eu":{"id":"mistral-medium-3-5@eu","name":"mistral-medium-3-5@eu","description":"Mistral Medium 3.5 is a dense 128B instruction following model from Mistral AI. It supports text and image inputs with text output, and is designed for agentic workflows, coding, and complex multi step reasoning. It is particularly strong at reliable multi tool calling and long horizon tasks, with a 256K context window, configurable reasoning effort per request, and a custom vision encoder that handles variable image sizes and aspect ratios. Self hostable on as few as four GPUs and available under open weights.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04}}},"nemotron-lightning-3.5-30b-a3b":{"id":"nemotron-lightning-3.5-30b-a3b","name":"nemotron-lightning-3.5-30b-a3b","description":"Nemotron-Lightning-3.5-30B-A3B is a 30B-parameter Mixture-of-Experts language model (3B active) from NVIDIA's Nemotron-H family, built on a hybrid Mamba-Transformer architecture for efficient long-context inference. Like other models in the family, it responds to queries by first generating a reasoning trace and then concluding with a final response, with reasoning behavior configurable through a flag in the chat template. It includes a multi-token prediction (MTP) speculative decoding head for low-latency serving.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-15","last_updated":"2026-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}},"seed-2.0-code":{"id":"seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.25,"output":11.25,"cache_read":0.225}},"mistral-medium-latest@eu":{"id":"mistral-medium-latest@eu","name":"Mistral Medium (latest) (EU)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"gpt-5.6-sol@eu":{"id":"gpt-5.6-sol@eu","name":"GPT-5.6 Sol (EU)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55}},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"glm-5.2-fast","description":"GLM-5.2 introduces a robust 1M-token context and advanced, multi-effort coding capabilities to significantly enhance performance on long-horizon tasks. Its new IndexShare architecture and improved MTP layer simultaneously boost efficiency by reducing per-token FLOPs and increasing speculative decoding lengths. A 743B-parameter model in Zhipu AI's GLM series, designed to plan, execute, and iterate autonomously on extended, engineering-grade tasks.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-07-13","last_updated":"2026-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.07}},"claude-sonnet-4-6@eu":{"id":"claude-sonnet-4-6@eu","name":"Claude Sonnet 4.6 (EU)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"laguna-m.1":{"id":"laguna-m.1","name":"Laguna M.1","description":"Poolside's open-weight model for agentic coding and long-horizon work","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0}},"leanstral-1-5":{"id":"leanstral-1-5","name":"leanstral-1-5","description":"Leanstral 1.5 is an updated Lean 4 formal proof engineering model from Mistral AI, optimized for automated theorem proving and autoformalization. It has 119B total parameters with 6.5B active and supports a 256K token context window. It supports native function calling and structured output.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"glm-5.3-flash@eu":{"id":"glm-5.3-flash@eu","name":"GLM-5.3-Flash (EU)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.07}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"laguna-xs.2":{"id":"laguna-xs.2","name":"Laguna XS.2","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"nemotron-3-nano-omni":{"id":"nemotron-3-nano-omni","name":"nemotron-3-nano-omni","description":"The most open, efficient, and accurate omni modal reasoning model for agentic AI.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06}},"nemotron-3-super-120b-a12b":{"id":"nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"gpt-5@eu":{"id":"gpt-5@eu","name":"GPT-5 (EU)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375}},"thinkingcap-qwen3.6-27b@eu":{"id":"thinkingcap-qwen3.6-27b@eu","name":"thinkingcap-qwen3.6-27b@eu","description":"ThinkingCap-Qwen3.6-27B is a reasoning tuned model from BottlecapAI built on Qwen3.6 27B. It supports extended thinking with tool calling and a 256K context window. Served via Sference.","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-07-13","last_updated":"2026-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.26}},"seed-2.0-mini":{"id":"seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02}},"kimi-k2.6@eu":{"id":"kimi-k2.6@eu","name":"Kimi K2.6 (EU)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.95}},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0}},"nemotron-3-nano-omni@eu":{"id":"nemotron-3-nano-omni@eu","name":"nemotron-3-nano-omni@eu","description":"The most open, efficient, and accurate omni modal reasoning model for agentic AI.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06}},"ling-2.6-flash":{"id":"ling-2.6-flash","name":"ling-2.6-flash","description":"Inclusion AI ling-2.6-flash","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3}},"deepseek-v4-pro@eu":{"id":"deepseek-v4-pro@eu","name":"DeepSeek V4 Pro (EU)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.44}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"claude-sonnet-4@eu":{"id":"claude-sonnet-4@eu","name":"Claude Sonnet 4 (latest) (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"gemini-3.5-flash-lite@eu":{"id":"gemini-3.5-flash-lite@eu","name":"Gemini 3.5 Flash Lite (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.033}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374}},"claude-opus-5@eu":{"id":"claude-opus-5@eu","name":"Claude Opus 5 (EU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"glm-5.2@eu":{"id":"glm-5.2@eu","name":"GLM-5.2 (EU)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}}},"claude-haiku-4-5@eu":{"id":"claude-haiku-4-5@eu","name":"Claude Haiku 4.5 (latest) (EU)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375}},"gpt-4o-mini@eu":{"id":"gpt-4o-mini@eu","name":"GPT-4o mini (EU)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.165,"output":0.66,"cache_read":0.0825}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"devstral-latest":{"id":"devstral-latest","name":"devstral-latest","description":"An enterprise grade text model, that excels at using tools to explore codebases, editing multiple files and power software engineering agents.","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"kimi-k3@eu":{"id":"kimi-k3@eu","name":"Kimi K3 (EU)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.25,"output":11.25,"cache_read":0.225}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.032,"cache_write":0.4}},"gemini-2.5-flash-lite@eu":{"id":"gemini-2.5-flash-lite@eu","name":"Gemini 2.5 Flash-Lite (EU)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.18333}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"grok-4.2-beta":{"id":"grok-4.2-beta","name":"grok-4.2-beta","description":"Grok 4.20 Beta is xAI's newest flagship model with industry-leading speed and agentic tool calling capabilities. It combines the lowest hallucination rate on the market with strict prompt adherance, delivering consistently precise and truthful responses.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":2,"output":6,"cache_read":0.2,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":0.4,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.4,"cache_write":4}}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"claude-sonnet-4-5@eu":{"id":"claude-sonnet-4-5@eu","name":"Claude Sonnet 4.5 (latest) (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125,"tiers":[{"input":6.6,"output":24.75,"cache_read":0.6,"cache_write":8.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6.6,"output":24.75,"cache_read":0.6,"cache_write":8.25}}},"mistral-small-2603@eu":{"id":"mistral-small-2603@eu","name":"Mistral Small 4 (EU)","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165}},"qwen3.5-2b":{"id":"qwen3.5-2b","name":"qwen3.5-2b","description":"Qwen3.5-2B is a compact yet capable model from Alibaba's Qwen3.5 series. It features a 262K token context window, support for 201 languages, thinking/reasoning mode, and tool calling for agentic workflows. A strong choice for prototyping, fine-tuning, and efficient multilingual deployments.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.02,"output":0.1}},"claude-opus-4-5@eu":{"id":"claude-opus-4-5@eu","name":"Claude Opus 4.5 (latest) (EU)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":30}},"gemini-3.1-flash-lite@eu":{"id":"gemini-3.1-flash-lite@eu","name":"Gemini 3.1 Flash Lite (EU)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.275,"output":1.65,"cache_read":0.0275,"cache_write":0.091663}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gemini-2.5-flash@eu":{"id":"gemini-2.5-flash@eu","name":"Gemini 2.5 Flash (EU)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.55}},"gemini-2.5-pro@eu":{"id":"gemini-2.5-pro@eu","name":"Gemini 2.5 Pro (EU)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":2.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.62,"cache_write":4.75,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.62,"cache_write":4.75}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26}},"nemotron-3-ultra-550b-a55b":{"id":"nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"nemotron-3.5-lightning-30b-a3b":{"id":"nemotron-3.5-lightning-30b-a3b","name":"nemotron-3.5-lightning-30b-a3b","description":"NVIDIA Nemotron 3.5 Lightning 30B-A3B is a hybrid Mamba-2 + MoE + Attention model with 30B total and 3B active parameters, pre-trained on over 20T tokens with an NVFP4 recipe and Multi-Token Prediction for fast generation. Up to 1M token context for long-running autonomous agents, sub-agent workhorse deployments, and agentic workflows. Supports reasoning and tool calling. English and coding languages plus Spanish, French, German, Italian, and Japanese. Open weights under the OpenMDW License Agreement v1.1. Part of the NVIDIA Nemotron family.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"inkling-256k":{"id":"inkling-256k","name":"inkling-256k","description":"Inkling 256K is the extended context variant of Inkling, a large MoE hybrid reasoning model from Thinking Machines with audio and vision input support and a 256K context window.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374}},"gemini-3.5-flash@eu":{"id":"gemini-3.5-flash@eu","name":"Gemini 3.5 Flash (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.65,"output":9.9,"cache_read":0.165,"cache_write":1.7413}},"gpt-5.6-luna@eu":{"id":"gpt-5.6-luna@eu","name":"GPT-5.6 Luna (EU)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022}},"claude-opus-4-8@eu":{"id":"claude-opus-4-8@eu","name":"Claude Opus 4.8 (EU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"o4-mini@eu":{"id":"o4-mini@eu","name":"o4-mini (EU)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.21,"output":4.84,"cache_read":0.3025}},"gpt-4.1@eu":{"id":"gpt-4.1@eu","name":"GPT-4.1 (EU)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2.2,"output":8.8,"cache_read":0.55}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"deepseek-v4-flash-0731@eu":{"id":"deepseek-v4-flash-0731@eu","name":"DeepSeek V4 Flash 0731 (EU)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.07}},"claude-fable-5.1":{"id":"claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"qwen3.8-2.4T-A95B@eu":{"id":"qwen3.8-2.4T-A95B@eu","name":"Qwen3.8 2.4T A95B (EU)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.63}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"gpt-5.1@eu":{"id":"gpt-5.1@eu","name":"GPT-5.1 (EU)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55}}}},"llmtr":{"id":"llmtr","env":["LLMTR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llmtr.com/v1","name":"LLMTR","doc":"https://llmtr.com/docs","models":{"medgemma-4b":{"id":"medgemma-4b","name":"MedGemma 4B","description":"Multimodal medical-domain Gemma variant for text and image analysis","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"status":"deprecated","cost":{"input":3,"output":5}},"muse-glimmer-30b-tr":{"id":"muse-glimmer-30b-tr","name":"Muse Glimmer 30B (TR)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5}},"gemma-4":{"id":"gemma-4","name":"Gemma 4","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5}},"magibu-11b-v8":{"id":"magibu-11b-v8","name":"Magibu 11B v8","description":"Turkish-language chat model for instruction following and assistant flows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-05","last_updated":"2026-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.1,"output":0.5}},"qwen3-6-35b":{"id":"qwen3-6-35b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":5,"output":10}},"trendyol-asure-12b":{"id":"trendyol-asure-12b","name":"Trendyol Asure 12B","description":"Turkish-language multimodal instruct model built on Gemma 3 12B for e-commerce text, chat, and image-text tasks","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-19","last_updated":"2026-02-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.1,"output":0.5,"cache_read":0.025}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3}},"qwen/qwen-flash":{"id":"qwen/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4}},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"cost":{"input":0.2,"output":1.6}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6}},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"mimo/mimo-v2.5":{"id":"mimo/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28}},"mimo/mimo-v2.5-pro":{"id":"mimo/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.1}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.58,"output":1.44}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.87,"output":4.68}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2}},"publicai/apertus-8b-instruct":{"id":"publicai/apertus-8b-instruct","name":"Apertus 8B Instruct","description":"Fully open 8B multilingual LLM supporting 1800+ languages with 65K context. Trained on compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0.1,"output":0.2}},"publicai/apertus-70b-instruct":{"id":"publicai/apertus-70b-instruct","name":"Apertus 70B Instruct","description":"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0.82,"output":2.92}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12}},"upstage/solar-pro3":{"id":"upstage/solar-pro3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6}},"upstage/solar-pro2":{"id":"upstage/solar-pro2","name":"Solar Pro 2","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.15,"output":0.6}},"mistral/voxtral-small-latest":{"id":"mistral/voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3}},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for autonomous research and citation-backed long-form reports","family":"sonar","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}}}},"xiaomi":{"id":"xiaomi","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.xiaomimimo.com/v1","name":"Xiaomi","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-06-08","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"beta","cost":{"input":1.305,"output":2.61,"cache_read":0.0108}},"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","description":"Legacy model retained for compatibility with older integrations","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","description":"Legacy model retained for compatibility with older integrations","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-06-24","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-06-24","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}}}},"huggingface":{"id":"huggingface","env":["HF_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://router.huggingface.co/v1","name":"Hugging Face","doc":"https://huggingface.co/docs/inference-providers","models":{"stepfun-ai/Step-3.7-Flash":{"id":"stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15}},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.1,"output":0.3}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":8192},"cost":{"input":0.4,"output":1.3}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28}},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.27,"output":1.12}},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"id":"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":3,"output":5}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":32768},"cost":{"input":0.7,"output":2.5}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.4}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4}},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4}},"zai-org/GLM-4.6V-Flash":{"id":"zai-org/GLM-4.6V-Flash","name":"GLM-4.6V-Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-03","last_updated":"2026-04-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai-org/GLM-4.5V":{"id":"zai-org/GLM-4.5V","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8}},"zai-org/GLM-4.5":{"id":"zai-org/GLM-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4}},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4}},"zai-org/GLM-4.7-Flash":{"id":"zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5}},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.5,"output":1.2}},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.07,"output":0.26}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25}},"Qwen/Qwen3-Coder-Next":{"id":"Qwen/Qwen3-Coder-Next","name":"Qwen3-Coder-Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-30B-A3B":{"id":"Qwen/Qwen3-30B-A3B","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5}},"Qwen/Qwen3-235B-A22B":{"id":"Qwen/Qwen3-235B-A22B","name":"Qwen3 235B-A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.2,"output":0.8}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2}},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":6.25}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.855,"output":2.565}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":2,"output":2}},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next-80B-A3B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-11","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.25,"output":1}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3.6}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.29,"output":0.59}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":3}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.47,"output":3.19}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.95}},"Qwen/Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen/Qwen3-VL-235B-A22B-Thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95}},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen 3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.01,"output":0}},"Qwen/Qwen3-Next-80B-A3B-Thinking":{"id":"Qwen/Qwen3-Next-80B-A3B-Thinking","name":"Qwen3-Next-80B-A3B-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-11","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":2}},"Qwen/Qwen3-Embedding-4B":{"id":"Qwen/Qwen3-Embedding-4B","name":"Qwen 3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0}},"Qwen/Qwen2.5-Coder-32B-Instruct":{"id":"Qwen/Qwen2.5-Coder-32B-Instruct","name":"Qwen2.5-Coder-32B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.06,"output":0.2}},"MiniMaxAI/MiniMax-M2":{"id":"MiniMaxAI/MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMaxAI/MiniMax-M2.1":{"id":"MiniMaxAI/MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-10","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.06,"output":0.06}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.59,"output":0.79}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":0.69}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi-K2-Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi-K2-Instruct-0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":1,"output":3}},"moonshotai/Kimi-K2-Instruct":{"id":"moonshotai/Kimi-K2-Instruct","name":"Kimi-K2-Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-14","last_updated":"2025-07-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":3}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15}},"tencent/Hy3":{"id":"tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3}},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"MiMo model for long-context reasoning, perception, and agentic tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.4,"output":2}},"XiaomiMiMo/MiMo-V2-Flash":{"id":"XiaomiMiMo/MiMo-V2-Flash","name":"MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.3}}}},"zhipuai-coding-plan":{"id":"zhipuai-coding-plan","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://open.bigmodel.cn/api/coding/paas/v4","name":"Zhipu AI Coding Plan","doc":"https://docs.bigmodel.cn/cn/coding-plan/overview","models":{"glm-5.3-highspeed":{"id":"glm-5.3-highspeed","name":"GLM-5.3 Highspeed","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.2-highspeed":{"id":"glm-5.2-highspeed","name":"GLM-5.2 Highspeed","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"daoxe":{"id":"daoxe","env":["DAOXE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://daoxe.com/v1","name":"DaoXE","doc":"https://daoxe.com/pricing","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":5}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}}}},"crossmodel":{"id":"crossmodel","env":["CROSSMODEL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.crossmodel.ai/v1","name":"CrossModel","doc":"https://www.crossmodel.ai/docs","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.88,"output":5.63,"cache_read":0.375,"cache_write":2.35}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.32,"output":1.88,"cache_read":0.032,"cache_write":0.4,"tiers":[{"input":1.25,"output":7.5,"cache_read":0.124,"cache_write":1.57,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.25,"output":7.5,"cache_read":0.124,"cache_write":1.57}}},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.04,"output":0.13,"cache_read":0.01,"cache_write":0.04,"tiers":[{"input":0.1,"output":0.37,"cache_read":0.02,"cache_write":0.12,"tier":{"type":"context","size":32000}},{"input":0.19,"output":0.74,"cache_read":0.04,"cache_write":0.24,"tier":{"type":"context","size":256000}}]}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.19,"output":1.13,"cache_read":0.019,"cache_write":0.24,"tiers":[{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.94,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.94}}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.13,"output":0.43,"cache_read":0.016,"cache_write":0.2}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.88,"output":5.63,"cache_read":0.23,"cache_write":2.35}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.25,"cache_read":0.032,"cache_write":0.4,"tiers":[{"input":0.96,"output":3.75,"cache_read":0.096,"cache_write":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.96,"output":3.75,"cache_read":0.096,"cache_write":1.2}}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.16,"output":0.32,"cache_read":0.004,"cache_write":0.16}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.47,"output":0.94,"cache_read":0.005,"cache_write":0.47}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.42}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.33,"tiers":[{"input":0.66,"output":2.63,"cache_read":0.132,"cache_write":0.66,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.66,"output":2.63,"cache_read":0.132,"cache_write":0.66}}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1}},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1}},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3}},"moonshot/kimi-k2.5":{"id":"moonshot/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.62,"output":3.3,"cache_read":0.11,"cache_write":0.62}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.405,"output":1.215,"cache_read":0.0135,"cache_write":0.405}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.405,"output":1.215,"cache_read":0.0135,"cache_write":0.405}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.215,"output":3.645,"cache_read":0.0405,"cache_write":1.215}},"gemini/gemini-3.1-pro-preview":{"id":"gemini/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":4}}},"gemini/gemini-2.5-flash-lite":{"id":"gemini/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.1}},"gemini/gemini-3.6-flash":{"id":"gemini/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75}},"gemini/gemini-3.5-flash":{"id":"gemini/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.5}},"gemini/gemini-3.5-flash-lite":{"id":"gemini/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3}},"gemini/gemini-3-flash-preview":{"id":"gemini/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.5}},"gemini/gemini-3.8-flash":{"id":"gemini/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75}},"gemini/gemini-3.7-flash":{"id":"gemini/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75}},"gemini/gemini-2.5-pro":{"id":"gemini/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5}}},"gemini/gemini-2.5-flash":{"id":"gemini/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5}}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":0.6,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6,"cache_write":4}}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"cache_write":1,"tiers":[{"input":2,"output":4,"cache_read":0.4,"cache_write":2,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4,"cache_write":2}}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":5}}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":10}}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":131072},"cost":{"input":0.16,"output":0.64,"cache_read":0.04,"cache_write":0.16}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0.96,"output":2.88,"cache_read":0.048,"cache_write":0.96}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.47,"output":2.16,"cache_read":0.1,"cache_write":0.47,"tiers":[{"input":0.62,"output":2.47,"cache_read":0.13,"cache_write":0.62,"tier":{"type":"context","size":32000}}]}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.075,"output":0.25,"cache_read":0.015,"cache_write":0.075}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.16,"cache_write":0.6,"tiers":[{"input":0.8,"output":3.4,"cache_read":0.2,"cache_write":0.8,"tier":{"type":"context","size":32000}}]}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.8,"cache_read":0.2,"cache_write":1,"tiers":[{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2,"tier":{"type":"context","size":32000}}]}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":3.7,"cache_read":0.18,"cache_write":0.9,"tiers":[{"input":1.1,"output":4.3,"cache_read":0.27,"cache_write":1.1,"tier":{"type":"context","size":32000}}]}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2}}}},"minimax":{"id":"minimax","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.io/anthropic/v1","name":"MiniMax (minimax.io)","doc":"https://platform.minimax.io/docs/guides/quickstart","models":{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}}}},"salad-cloud":{"id":"salad-cloud","env":["SALAD_CLOUD_API_KEY"],"npm":"@saladtechnologies-oss/ai-sdk-provider","name":"SaladCloud AI Gateway","doc":"https://docs.salad.com/ai-gateway/explanation/overview","models":{"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Qwen MoE for agentic tasks, complex reasoning, code generation, and instruction following","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.09,"output":0.6}}}},"aki-io":{"id":"aki-io","env":["AKI_IO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://aki.io/v1","name":"AKI.IO","doc":"https://aki.io/docs/","models":{"gemma4-26b":{"id":"gemma4-26b","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.5}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":2.2,"cache_read":0.1}},"deepseek-v4-flash-0731-284b":{"id":"deepseek-v4-flash-0731-284b","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":81920},"cost":{"input":0.2,"output":0.5,"cache_read":0.1}},"mistral4-119b":{"id":"mistral4-119b","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.2,"output":0.6}},"kimi-k2.7-code-1100b":{"id":"kimi-k2.7-code-1100b","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.86,"output":3,"cache_read":0.18}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.55}},"qwen3.6-35b":{"id":"qwen3.6-35b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.15,"output":0.5}}}},"trustedrouter":{"id":"trustedrouter","env":["TRUSTEDROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.trustedrouter.com/v1","name":"TrustedRouter","doc":"https://trustedrouter.com/docs","models":{"trustedrouter/zdr":{"id":"trustedrouter/zdr","name":"Zero Data Retention","description":"TrustedRouter privacy routing alias that prefers zero data retention model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/synth":{"id":"trustedrouter/synth","name":"Synth","description":"TrustedRouter synthesis orchestration alias that combines multiple model responses into one answer.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/e2e":{"id":"trustedrouter/e2e","name":"End-to-End Encrypted","description":"TrustedRouter privacy routing alias for end-to-end encrypted provider routes where available.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/synth-code":{"id":"trustedrouter/synth-code","name":"Synth Code","description":"TrustedRouter code synthesis orchestration alias that combines multiple model responses into one answer.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/fast":{"id":"trustedrouter/fast","name":"Fast","description":"TrustedRouter speed routing alias that prefers low-latency healthy model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/cheap":{"id":"trustedrouter/cheap","name":"Cheap","description":"TrustedRouter low-cost routing alias that prefers inexpensive healthy model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/auto":{"id":"trustedrouter/auto","name":"Auto","description":"TrustedRouter automatic routing alias that chooses a healthy supported model endpoint for the request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}}}},"alibaba":{"id":"alibaba","env":["DASHSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://dashscope-intl.aliyuncs.com/compatible-mode/v1","name":"Alibaba","doc":"https://www.alibabacloud.com/help/en/model-studio/models","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen2-5-72b-instruct":{"id":"qwen2-5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":1.4,"output":5.6}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.2,"output":0.4,"cache_read":0.04}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":5}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":6}},"qwen2-5-omni-7b":{"id":"qwen2-5-omni-7b","name":"Qwen2.5-Omni 7B","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0.1,"output":0.4,"input_audio":6.76}},"qwen-mt-turbo":{"id":"qwen-mt-turbo","name":"Qwen-MT Turbo","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.16,"output":0.49}},"qwen-vl-max":{"id":"qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":3.2}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5}},"qwen3-14b":{"id":"qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4,"reasoning":4.2}},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen-vl-plus":{"id":"qwen-vl-plus","name":"Qwen-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.21,"output":0.63}},"qwen-omni-turbo-realtime":{"id":"qwen-omni-turbo-realtime","name":"Qwen-Omni Turbo Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-05-08","last_updated":"2025-05-08","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.27,"output":1.07,"input_audio":4.44,"output_audio":8.89}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4}},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2}},"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28,"cache_write":0}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384},"cost":{"input":0.05,"output":0.2,"reasoning":0.5}},"qwen3-livetranslate-flash-realtime":{"id":"qwen3-livetranslate-flash-realtime","name":"Qwen3-LiveTranslate Flash Realtime","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":10,"output":10,"input_audio":10,"output_audio":38}},"qwen3-vl-30b-a3b":{"id":"qwen3-vl-30b-a3b","name":"Qwen3-VL 30B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"reasoning":2.4}},"qwen-vl-ocr":{"id":"qwen-vl-ocr","name":"Qwen-VL OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-10-28","last_updated":"2025-04-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":34096,"output":4096},"cost":{"input":0.72,"output":0.72}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwq-plus":{"id":"qwq-plus","name":"QwQ Plus","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":2.4}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"reasoning":4.8}},"qwen2-5-7b-instruct":{"id":"qwen2-5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.175,"output":0.7}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":2.25,"tiers":[{"input":0.75,"output":3.75,"tier":{"type":"context","size":32000}},{"input":1.2,"output":6,"tier":{"type":"context","size":128000}}]}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen3-asr-flash":{"id":"qwen3-asr-flash","name":"Qwen3-ASR Flash","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-04","release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":0.035,"output":0.035}},"qwen3-omni-flash":{"id":"qwen3-omni-flash","name":"Qwen3-Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.43,"output":1.66,"input_audio":3.81,"output_audio":15.11}},"qwen2-5-vl-72b-instruct":{"id":"qwen2-5-vl-72b-instruct","name":"Qwen2.5-VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.8,"output":8.4}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2,"reasoning":4}},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2}},"qwen3-omni-flash-realtime":{"id":"qwen3-omni-flash-realtime","name":"Qwen3-Omni Flash Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.52,"output":1.99,"input_audio":4.57,"output_audio":18.13}},"qwen2-5-vl-7b-instruct":{"id":"qwen2-5-vl-7b-instruct","name":"Qwen2.5-VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.05}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"qwen2-5-14b-instruct":{"id":"qwen2-5-14b-instruct","name":"Qwen2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.3,"output":7.8,"cache_read":0.13,"cache_write":1.625}},"qwen-plus-character-ja":{"id":"qwen-plus-character-ja","name":"Qwen Plus Character (Japanese)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":512},"cost":{"input":0.5,"output":1.4}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen3-8b":{"id":"qwen3-8b","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.7,"reasoning":2.1}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-04","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen-omni-turbo":{"id":"qwen-omni-turbo","name":"Qwen-Omni Turbo","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.07,"output":0.27,"input_audio":4.44,"output_audio":8.89}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":7.5,"tiers":[{"input":2.7,"output":13.5,"tier":{"type":"context","size":32000}},{"input":4.5,"output":22.5,"tier":{"type":"context","size":128000}}]}},"qwen2-5-32b-instruct":{"id":"qwen2-5-32b-instruct","name":"Qwen2.5 32B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.7,"output":2.8}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3-VL 235B-A22B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4}},"qwen-mt-plus":{"id":"qwen-mt-plus","name":"Qwen-MT Plus","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":2.46,"output":7.37}},"qvq-max":{"id":"qvq-max","name":"QVQ Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qvq","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":1.2,"output":4.8}}}},"nvidia":{"id":"nvidia","env":["NVIDIA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://integrate.api.nvidia.com/v1","name":"Nvidia","doc":"https://docs.api.nvidia.com/nim/","models":{"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next-80B-A3B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"qwen/qwen-image":{"id":"qwen/qwen-image","name":"Qwen Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":66536},"cost":{"input":0,"output":0}},"qwen/qwen-image-edit":{"id":"qwen/qwen-image-edit","name":"Qwen Image Edit","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen/qwen2.5-coder-32b-instruct":{"id":"qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32b Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-06","last_updated":"2024-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"stepfun-ai/step-3.7-flash":{"id":"stepfun-ai/step-3.7-flash","name":"Step 3.7 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0}},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0}},"deepseek-ai/deepseek-v4-pro-0813":{"id":"deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"deepseek-ai/deepseek-v4-flash-0731":{"id":"deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"deepseek-ai/deepseek-v4-flash":{"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek-ai/deepseek-v4-pro":{"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B Instruct 2512","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"mistralai/mistral-nemotron":{"id":"mistralai/mistral-nemotron","name":"mistral-nemotron","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-11","last_updated":"2025-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":13108},"cost":{"input":0,"output":0}},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B Instruct 2512","description":"Compact Mistral VLM for chat and instruction-based workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"mistral-small-4-119b-2603","description":"Efficient Mistral model for fast chat, extraction, and production assistants","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"mistralai/mixtral-8x7b-instruct":{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2023-12-10","last_updated":"2026-03-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"mistralai/mistral-medium-3.5-128b":{"id":"mistralai/mistral-medium-3.5-128b","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"mistralai/mistral-7b-instruct-v0.3":{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral-7B-Instruct-v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0,"output":0}},"mistralai/mistral-medium-3-instruct":{"id":"mistralai/mistral-medium-3-instruct","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0,"output":0}},"mistralai/magistral-small-2506":{"id":"mistralai/magistral-small-2506","name":"Magistral Small 2506","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0,"output":0}},"nvidia/streampetr":{"id":"nvidia/streampetr","name":"streampetr","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1.5","name":"Llama 3.3 Nemotron Super 49B v1.5","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"nvidia/usdcode":{"id":"nvidia/usdcode","name":"usdcode","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":-1,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/cosmos-transfer1-7b":{"id":"nvidia/cosmos-transfer1-7b","name":"cosmos-transfer1-7b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-13","last_updated":"2025-06-30","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-voicechat":{"id":"nvidia/nemotron-voicechat","name":"nemotron-voicechat","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/studiovoice":{"id":"nvidia/studiovoice","name":"studiovoice","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-03","last_updated":"2025-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-content-safety":{"id":"nvidia/nemotron-3-content-safety","name":"nemotron-3-content-safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/cosmos-transfer2_5-2b":{"id":"nvidia/cosmos-transfer2_5-2b","name":"cosmos-transfer2.5-2b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/bevformer":{"id":"nvidia/bevformer","name":"bevformer","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-07-20","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-nano-vl-8b-v1":{"id":"nvidia/llama-3.1-nemotron-nano-vl-8b-v1","name":"Llama 3.1 Nemotron Nano VL 8B v1","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-10","last_updated":"2025-04-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"nvidia/magpie-tts-zeroshot":{"id":"nvidia/magpie-tts-zeroshot","name":"magpie-tts-zeroshot","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-22","last_updated":"2025-06-12","modalities":{"input":["text","audio"],"output":["audio"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"Nemotron Nano 12B v2 VL","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0,"output":0}},"nvidia/sparsedrive":{"id":"nvidia/sparsedrive","name":"sparsedrive","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-07-20","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/llama-nemotron-embed-vl-1b-v2":{"id":"nvidia/llama-nemotron-embed-vl-1b-v2","name":"llama-nemotron-embed-vl-1b-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"nemotron","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-10","last_updated":"2026-02-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/synthetic-video-detector":{"id":"nvidia/synthetic-video-detector","name":"synthetic-video-detector","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.8}},"nvidia/llama-nemotron-rerank-vl-1b-v2":{"id":"nvidia/llama-nemotron-rerank-vl-1b-v2","name":"llama-nemotron-rerank-vl-1b-v2","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"nemotron","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/usdvalidate":{"id":"nvidia/usdvalidate","name":"usdvalidate","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-24","last_updated":"2025-01-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/active-speaker-detection":{"id":"nvidia/active-speaker-detection","name":"Active Speaker Detection","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-ultra-253b-v1":{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1","name":"Llama 3.1 Nemotron Ultra 253B","description":"Flagship Nemotron model for high-throughput reasoning and complex agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-04-07","last_updated":"2025-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"nvidia/llama-3_2-nemoretriever-300m-embed-v1":{"id":"nvidia/llama-3_2-nemoretriever-300m-embed-v1","name":"llama-3_2-nemoretriever-300m-embed-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-07-24","last_updated":"2025-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/nv-embedcode-7b-v1":{"id":"nvidia/nv-embedcode-7b-v1","name":"nv-embedcode-7b-v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-03-17","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-safety-guard-8b-v3":{"id":"nvidia/llama-3.1-nemotron-safety-guard-8b-v3","name":"llama-3.1-nemotron-safety-guard-8b-v3","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-mini-4b-instruct":{"id":"nvidia/nemotron-mini-4b-instruct","name":"nemotron-mini-4b-instruct","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-08-21","last_updated":"2024-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/cosmos-predict1-5b":{"id":"nvidia/cosmos-predict1-5b","name":"cosmos-predict1-5b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-03-18","last_updated":"2025-03-18","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-content-safety-reasoning-4b":{"id":"nvidia/nemotron-content-safety-reasoning-4b","name":"nemotron-content-safety-reasoning-4b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":false,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/riva-translate-4b-instruct-v1.1":{"id":"nvidia/riva-translate-4b-instruct-v1.1","name":"riva-translate-4b-instruct-v1_1","description":"Translation model for multilingual conversion, localization, and cross-language workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nvidia-nemotron-nano-9b-v2":{"id":"nvidia/nvidia-nemotron-nano-9b-v2","name":"nvidia-nemotron-nano-9b-v2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0}},"nvidia/gliner-pii":{"id":"nvidia/gliner-pii","name":"gliner-pii","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-nano-8b-v1":{"id":"nvidia/llama-3.1-nemotron-nano-8b-v1","name":"Llama 3.1 Nemotron Nano 8B v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"nvidia/nv-embed-v1":{"id":"nvidia/nv-embed-v1","name":"nv-embed-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-06-07","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/rerank-qa-mistral-4b":{"id":"nvidia/rerank-qa-mistral-4b","name":"rerank-qa-mistral-4b","description":"Reranking model for improving retrieval quality in search and recommendation systems","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-17","last_updated":"2025-01-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.15}},"nvidia/nemotron-3.5-lightning-30b-a3b":{"id":"nvidia/nemotron-3.5-lightning-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"nvidia/llama-3.3-nemotron-super-49b-v1":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1","name":"Llama 3.3 Nemotron Super 49B v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-04-07","last_updated":"2025-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-70b-instruct":{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"Llama 3.1 Nemotron 70B Instruct","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/cosmos-reason2-8b":{"id":"nvidia/cosmos-reason2-8b","name":"Cosmos Reason2 8B","description":"Vision language model for physical-world understanding with structured reasoning on video and images","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"google/gemma-3n-e2b-it":{"id":"google/gemma-3n-e2b-it","name":"Gemma 3n E2b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-06-12","last_updated":"2025-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"google/google-paligemma":{"id":"google/google-paligemma","name":"paligemma","description":"Gemini multimodal model for text, image, audio, video, and document tasks","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-05-14","last_updated":"2024-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"google/gemma-2-2b-it":{"id":"google/gemma-2-2b-it","name":"Gemma 2 2b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-16","last_updated":"2024-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0}},"google/gemma-3n-e4b-it":{"id":"google/gemma-3n-e4b-it","name":"Gemma 3n E4b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0,"output":0}},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-guard-4-12b":{"id":"meta/llama-guard-4-12b","name":"Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"meta/llama-3.2-90b-vision-instruct":{"id":"meta/llama-3.2-90b-vision-instruct","name":"Llama-3.2-90B-Vision-Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"meta/llama-3.2-3b-instruct":{"id":"meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0,"output":0}},"meta/llama-3.2-1b-instruct":{"id":"meta/llama-3.2-1b-instruct","name":"Llama 3.2 1b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/esmfold":{"id":"meta/esmfold","name":"esmfold","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-15","last_updated":"2025-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"meta/llama-4-maverick-17b-128e-instruct":{"id":"meta/llama-4-maverick-17b-128e-instruct","name":"Llama 4 Maverick 17b 128e Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-02","release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0}},"meta/esm2-650m":{"id":"meta/esm2-650m","name":"esm2-650m","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-29","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"meta/llama-3.2-11b-vision-instruct":{"id":"meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11b Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-3.1-70b-instruct":{"id":"meta/llama-3.1-70b-instruct","name":"Llama 3.1 70b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-16","last_updated":"2024-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-26","last_updated":"2024-11-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"bytedance/seed-oss-36b-instruct":{"id":"bytedance/seed-oss-36b-instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0,"output":0}},"sarvamai/sarvam-m":{"id":"sarvamai/sarvam-m","name":"sarvam-m","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"microsoft/phi-4-multimodal-instruct":{"id":"microsoft/phi-4-multimodal-instruct","name":"Phi 4 Multimodal","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0,"output":0}},"microsoft/phi-4-mini-instruct":{"id":"microsoft/phi-4-mini-instruct","name":"Phi-4-Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0}},"minimaxai/minimax-m2.7":{"id":"minimaxai/minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"minimaxai/minimax-m3":{"id":"minimaxai/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0,"output":0}},"baai/bge-m3":{"id":"baai/bge-m3","name":"BGE M3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0,"output":0}},"abacusai/dracarys-llama-3.1-70b-instruct":{"id":"abacusai/dracarys-llama-3.1-70b-instruct","name":"dracarys-llama-3.1-70b-instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-09-11","last_updated":"2025-05-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2023-09","release_date":"2023-09-01","last_updated":"2025-09-05","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS-120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-04","last_updated":"2025-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0}},"moonshotai/kimi-k2-instruct-0905":{"id":"moonshotai/kimi-k2-instruct-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"upstage/solar-10.7b-instruct":{"id":"upstage/solar-10.7b-instruct","name":"solar-10.7b-instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-06-05","last_updated":"2025-04-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"black-forest-labs/flux_1-kontext-dev":{"id":"black-forest-labs/flux_1-kontext-dev","name":"FLUX.1-Kontext-dev","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image"],"output":["image"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0}},"black-forest-labs/flux_1-schnell":{"id":"black-forest-labs/flux_1-schnell","name":"FLUX.1-schnell","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-07","release_date":"2024-08-01","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":77,"input":77,"output":0},"cost":{"input":0,"output":0}},"black-forest-labs/flux_2-klein-4b":{"id":"black-forest-labs/flux_2-klein-4b","name":"FLUX.2 Klein 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-06","release_date":"2026-01-14","last_updated":"2026-01-31","modalities":{"input":["image","text"],"output":["image"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0}},"black-forest-labs/flux.1-dev":{"id":"black-forest-labs/flux.1-dev","name":"FLUX.1-dev","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0},"cost":{"input":0,"output":0}}}},"jiekou":{"id":"jiekou","env":["JIEKOU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.jiekou.ai/openai","name":"Jiekou.AI","doc":"https://docs.jiekou.ai/docs/support/quickstart?utm_source=github_models.dev","models":{"gpt-5-nano":{"id":"gpt-5-nano","name":"gpt-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"grok-4-1-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"gpt-5-codex":{"id":"gpt-5-codex","name":"gpt-5-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gpt-5-pro":{"id":"gpt-5-pro","name":"gpt-5-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":272000},"cost":{"input":13.5,"output":108}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"gpt-5.1-codex-mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"gpt-5.1-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"grok-code-fast-1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.18,"output":1.35}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"gpt-5.2-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"gemini-2.5-pro-preview-06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":200000},"cost":{"input":1.125,"output":9}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"gemini-2.5-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36}},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"gpt-5.2-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":18.9,"output":151.2}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"gemini-3-pro-preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":10.8}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"claude-opus-4-1-20250805","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5}},"gpt-5-chat-latest":{"id":"gpt-5-chat-latest","name":"gpt-5-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"grok-4-1-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"gemini-2.5-flash-lite-preview-06-17","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","video","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"claude-opus-4-20250514","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5}},"gpt-5.1":{"id":"gpt-5.1","name":"gpt-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"gpt-5.1-codex-max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"gemini-2.5-flash-lite-preview-09-2025","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.36}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"claude-opus-4-6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"grok-4-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"claude-sonnet-4-5-20250929","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"claude-haiku-4-5-20251001","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":20000,"output":64000},"cost":{"input":0.9,"output":4.5}},"grok-4-0709":{"id":"grok-4-0709","name":"grok-4-0709","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":2.7,"output":13.5}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"gemini-2.5-flash-preview-05-20","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":200000},"cost":{"input":0.135,"output":3.15}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"gemini-3-flash-preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3}},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.125,"output":9}},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.575,"output":12.6}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"claude-sonnet-4-20250514","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.27,"output":2.25}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"grok-4-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":1.1,"output":4.4}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"claude-opus-4-5-20251101","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65536},"cost":{"input":4.5,"output":22.5}},"o3":{"id":"o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":10,"output":40}},"qwen/qwen3-30b-a3b-fp8":{"id":"qwen/qwen3-30b-a3b-fp8","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.09,"output":0.45}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22b Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":3}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3-235b-a22b-fp8":{"id":"qwen/qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"qwen/qwen3-coder-next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"qwen/qwen3-32b-fp8":{"id":"qwen/qwen3-32b-fp8","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.1,"output":0.45}},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.15,"output":0.8}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.2}},"baidu/ernie-4.5-300b-a47b-paddle":{"id":"baidu/ernie-4.5-300b-a47b-paddle","name":"ERNIE 4.5 300B A47B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":12000},"cost":{"input":0.28,"output":1.1}},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"Minimax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":131071}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2}},"zai-org/glm-4.5":{"id":"zai-org/glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2}},"zai-org/glm-4.5v":{"id":"zai-org/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8}},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4}},"minimaxai/minimax-m1-80k":{"id":"minimaxai/minimax-m1-80k","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5}},"deepseek/deepseek-v3-0324":{"id":"deepseek/deepseek-v3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.28,"output":1.14}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32767}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.27,"output":1}},"xiaomimimo/mimo-v2-flash":{"id":"xiaomimimo/mimo-v2-flash","name":"XiaomiMiMo/MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5}},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":262143}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3}}}},"frogbot":{"id":"frogbot","env":["FROGBOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://app.frogbot.ai/api/v1","name":"FrogBot","doc":"https://docs.frogbot.ai","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"gpt-5-4-nano":{"id":"gpt-5-4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"qwen-3-6-plus":{"id":"qwen-3-6-plus","name":"Qwen 3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02}},"gpt-5-3-codex":{"id":"gpt-5-3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.2}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax-m2-5":{"id":"minimax-m2-5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-01-15","last_updated":"2025-02-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3-1-pro-preview":{"id":"gemini-3-1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2}},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"zai-glm-5-1":{"id":"zai-glm-5-1","name":"Z.AI GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-01-20","last_updated":"2025-02-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":8192},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek v4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":1.74,"output":3.48,"cache_read":0.14}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-07-17","last_updated":"2025-07-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.075}}}},"ovhcloud":{"id":"ovhcloud","env":["OVHCLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1","name":"OVHcloud AI Endpoints","doc":"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog//","models":{"qwen3guard-gen-0.6b":{"id":"qwen3guard-gen-0.6b","name":"Qwen3Guard-Gen-0.6B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5-9B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.18}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8-27B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3-32B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-16","last_updated":"2025-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.09,"output":0.25}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.18}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"Qwen2.5-VL-72B-Instruct","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":1.01,"output":1.01}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder-30B-A3B-Instruct","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.26}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-18","last_updated":"2026-05-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":4.25}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6-27B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.47,"output":3.19}},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"Mistral-Nemo-Instruct-2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.14,"output":0.14}},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral-Small-3.2-24B-Instruct-2506","description":"Efficient Mistral model for fast chat, extraction, and production assistants","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-16","last_updated":"2025-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.31}},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"Mistral-7B-Instruct-v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.11,"output":0.11}},"qwen3guard-gen-8b":{"id":"qwen3guard-gen-8b","name":"Qwen3Guard-Gen-8B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.09,"output":0.47}},"meta-llama-3_3-70b-instruct":{"id":"meta-llama-3_3-70b-instruct","name":"Meta-Llama-3_3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.74,"output":0.74}}}},"xpersona":{"id":"xpersona","env":["XPERSONA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://www.xpersona.co/v1","name":"Xpersona","doc":"https://www.xpersona.co/docs","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":5.55,"reasoning":5.55,"cache_read":0.09}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15}},"xpersona-gpt-5.5":{"id":"xpersona-gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-30","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18,"reasoning":18,"cache_read":0.3}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.75,"output":6,"reasoning":6,"cache_read":0.075}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.55,"output":12.2,"reasoning":12.2,"cache_read":0.155}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18.5,"reasoning":18.5,"cache_read":0.3}},"xpersona-frieren-coder":{"id":"xpersona-frieren-coder","name":"Xpersona Frieren 1","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-30","release_date":"2026-05-01","last_updated":"2026-05-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":1.5,"output":6,"reasoning":6,"cache_read":0.15}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":0.375,"output":4,"reasoning":4,"cache_read":0.0375}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3.7,"reasoning":3.7,"cache_read":0.06}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.5,"output":9.25,"reasoning":9.25,"cache_read":0.15}},"gpt-5.6":{"id":"gpt-5.6","name":"GPT-5.6","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":2,"reasoning":2,"cache_read":0.15}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15}}}},"anthropic":{"id":"anthropic","env":["ANTHROPIC_API_KEY"],"npm":"@ai-sdk/anthropic","name":"Anthropic","doc":"https://docs.anthropic.com/en/docs/about-claude/models","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-04","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-14","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-07","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-29","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}}}},"google":{"id":"google","env":["GOOGLE_API_KEY","GOOGLE_GENERATIVE_AI_API_KEY","GEMINI_API_KEY"],"npm":"@ai-sdk/google","name":"Google","doc":"https://ai.google.dev/gemini-api/docs/models","models":{"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768}},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-3.1-flash-lite-image":{"id":"gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.25,"output":30}},"lyria-3-clip-preview":{"id":"lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Music generation model for short 30-second clips, loops, and previews from text or image prompts","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30,"cache_read":0.075}},"deep-research-max-preview-04-2026":{"id":"deep-research-max-preview-04-2026","name":"Deep Research Max Preview (Apr-21-2026)","description":"Maximum-comprehensiveness agentic researcher for multi-step investigation, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":2,"output":120}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"deep-research-preview-04-2026":{"id":"deep-research-preview-04-2026","name":"Deep Research Preview (Apr-21-2026)","description":"Agentic model for autonomous multi-step research, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"gemini-2.5-computer-use-preview-10-2025":{"id":"gemini-2.5-computer-use-preview-10-2025","name":"Gemini 2.5 Computer Use Preview 10-2025","description":"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":1.25,"output":10,"tiers":[{"input":2.5,"output":15,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15}}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"gemini-3.1-flash-live-preview":{"id":"gemini-3.1-flash-live-preview","name":"Gemini 3.1 Flash Live Preview","description":"High-quality, low-latency Live API model for real-time dialogue and voice-first AI applications","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-26","last_updated":"2026-03-26","modalities":{"input":["text","image","video","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.75,"output":4.5,"input_audio":3,"output_audio":12}},"gemini-2.5-pro-preview-tts":{"id":"gemini-2.5-pro-preview-tts","name":"Gemini 2.5 Pro Preview TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"veo-3.1-generate-preview":{"id":"veo-3.1-generate-preview","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-15","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192},"status":"beta"},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Legacy model retained for compatibility with older integrations","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"veo-3.1-fast-generate-preview":{"id":"veo-3.1-fast-generate-preview","name":"Veo 3.1 fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-15","last_updated":"2026-01-01","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192}},"gemini-2.5-flash-preview-tts":{"id":"gemini-2.5-flash-preview-tts","name":"Gemini 2.5 Flash Preview TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":0.5,"output":10}},"gemini-embedding-001":{"id":"gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0}},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":60}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":2,"output":120}},"gemini-3.1-flash-tts-preview":{"id":"gemini-3.1-flash-tts-preview","name":"Gemini 3.1 Flash TTS Preview","description":"Low-latency speech generation with steerable prompts and expressive audio tags","family":"gemini-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20}},"veo-3.1-lite-generate-preview":{"id":"veo-3.1-lite-generate-preview","name":"Veo 3.1 lite","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192}},"gemini-flash-lite-latest":{"id":"gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768}},"gemini-embedding-2":{"id":"gemini-embedding-2","name":"Gemini Embedding 2","description":"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1},"cost":{"input":0.2,"output":0,"input_audio":6.5}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-3.5-live-translate-preview":{"id":"gemini-3.5-live-translate-preview","name":"Gemini 3.5 Live Translate Preview","description":"Low-latency audio-to-audio model for real-time speech translation across 70+ languages","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["audio"],"output":["audio","text"]},"open_weights":false,"limit":{"context":16384,"output":32768},"cost":{"input":3.5,"output":21,"input_audio":3.5,"output_audio":21}},"lyria-3-pro-preview":{"id":"lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Music generation model for full-length songs from text or images with vocals and structure","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"gemini-flash-latest":{"id":"gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":60}},"gemini-omni-flash-preview":{"id":"gemini-omni-flash-preview","name":"Gemini Omni Flash Preview","description":"Video generation and editing model for fast, conversational text- and image-to-video workflows","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":1.5,"output":17.5}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}}}},"baseten":{"id":"baseten","env":["BASETEN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.baseten.co/v1","name":"Baseten","doc":"https://docs.baseten.co/inference/model-apis/overview","models":{"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":131000},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.32,"output":3.96}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B","name":"Nemotron Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"nvidia/Nemotron-120B-A12B":{"id":"nvidia/Nemotron-120B-A12B","name":"Nemotron Super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.3,"output":0.75,"cache_read":0.06}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":1.3,"output":4.3,"cache_read":0.26}},"zai-org/GLM-5.2-Fast":{"id":"zai-org/GLM-5.2-Fast","name":"GLM 5.2 Fast","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.14}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.3}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM 4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":200000},"cost":{"input":0.6,"output":2.2,"cache_read":0.12}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.95,"output":3.15,"cache_read":0.2}},"zai-org/GLM-5.3-Fast":{"id":"zai-org/GLM-5.3-Fast","name":"GLM 5.3 Fast","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":1,"output":4.05}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204000,"output":204000},"status":"deprecated","cost":{"input":0.3,"output":1.2}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"OpenAI GPT 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128072,"output":128072},"cost":{"input":0.1,"output":0.5}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-01-30","last_updated":"2026-02-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.6,"output":3,"cache_read":0.12}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15}}}},"vercel":{"id":"vercel","env":["AI_GATEWAY_API_KEY"],"npm":"@ai-sdk/gateway","name":"Vercel AI Gateway","doc":"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway","models":{"voyage/voyage-code-3":{"id":"voyage/voyage-code-3","name":"voyage-code-3","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-12-04","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-3.5":{"id":"voyage/voyage-3.5","name":"voyage-3.5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-3.5-lite":{"id":"voyage/voyage-3.5-lite","name":"voyage-3.5-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-3-large":{"id":"voyage/voyage-3-large","name":"voyage-3-large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-07","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-code-2":{"id":"voyage/voyage-code-2","name":"voyage-code-2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-4":{"id":"voyage/voyage-4","name":"voyage-4","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"voyage/voyage-finance-2":{"id":"voyage/voyage-finance-2","name":"voyage-finance-2","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-06-03","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/rerank-2.5":{"id":"voyage/rerank-2.5","name":"Voyage Rerank 2.5","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-law-2":{"id":"voyage/voyage-law-2","name":"voyage-law-2","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-15","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-4-large":{"id":"voyage/voyage-4-large","name":"voyage-4-large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"voyage/rerank-2.5-lite":{"id":"voyage/rerank-2.5-lite","name":"Voyage Rerank 2.5 Lite","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-4-lite":{"id":"voyage/voyage-4-lite","name":"voyage-4-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph v3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2}},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph v3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9}},"poolside/laguna-s-2.1-free":{"id":"poolside/laguna-s-2.1-free","name":"Laguna S 2.1 Free","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01}},"klingai/kling-v2.5-turbo-i2v":{"id":"klingai/kling-v2.5-turbo-i2v","name":"Kling v2.5 Turbo Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-motion-control":{"id":"klingai/kling-v3.0-motion-control","name":"Kling v3.0 Motion Control","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.6-t2v":{"id":"klingai/kling-v2.6-t2v","name":"Kling v2.6 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.5-turbo-t2v":{"id":"klingai/kling-v2.5-turbo-t2v","name":"Kling v2.5 Turbo Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-t2v":{"id":"klingai/kling-v3.0-t2v","name":"Kling v3.0 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.6-i2v":{"id":"klingai/kling-v2.6-i2v","name":"Kling v2.6 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.6-motion-control":{"id":"klingai/kling-v2.6-motion-control","name":"Kling v2.6 Motion Control","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-i2v":{"id":"klingai/kling-v3.0-i2v","name":"Kling v3.0 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"kwaipilot/kat-coder-pro-v1":{"id":"kwaipilot/kat-coder-pro-v1","name":"KAT-Coder-Pro V1","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-11-09","last_updated":"2025-10-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kat Coder Pro V2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"Kat Coder Pro V2.5","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":80000},"cost":{"input":0.74,"output":2.96,"cache_read":0.15}},"kwaipilot/kat-coder-air-v2.5":{"id":"kwaipilot/kat-coder-air-v2.5","name":"Kat Coder Air V2.5","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":80000},"cost":{"input":0.15,"output":0.6,"cache_read":0.03}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"StepFun 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262114,"output":262114},"cost":{"input":0.09,"output":0.3,"cache_read":0.02}},"interfaze/interfaze-beta":{"id":"interfaze/interfaze-beta","name":"Interfaze Beta","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"release_date":"2025-10-07","last_updated":"2026-04-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.5,"output":3.5}},"xiaomi/mimo-v2.5-pro-ultraspeed":{"id":"xiaomi/mimo-v2.5-pro-ultraspeed","name":"MiMo V2.5 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-06-08","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.305,"output":2.61,"cache_read":0.0108}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo M2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131100},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-23","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-h3":{"id":"minimax/minimax-h3","name":"MiniMax H3","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"minimax/minimax-m2.7-free":{"id":"minimax/minimax-m2.7-free","name":"Minimax M2.7 (Free)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0,"output":0}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 High Speed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"Minimax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 High Speed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3-free":{"id":"minimax/minimax-m3-free","name":"MiniMax M3 (Free)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0,"output":0,"cache_read":0}},"minimax/minimax-h3-max":{"id":"minimax/minimax-h3-max","name":"MiniMax H3 Max","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen 3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"alibaba/qwen3-vl-thinking":{"id":"alibaba/qwen3-vl-thinking","name":"Qwen3 VL Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-23","last_updated":"2025-09-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":4}},"alibaba/qwen-3-235b":{"id":"alibaba/qwen-3-235b","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.88}},"alibaba/qwen3-coder-plus":{"id":"alibaba/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5,"cache_read":0.2}},"alibaba/qwen3-next-80b-a3b-thinking":{"id":"alibaba/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"alibaba/qwen3.8-flash-next":{"id":"alibaba/qwen3.8-flash-next","name":"Qwen 3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.12,"output":0.4,"cache_read":0.01}},"alibaba/qwen3-coder-30b-a3b":{"id":"alibaba/qwen3-coder-30b-a3b","name":"Qwen 3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"alibaba/qwen3-next-80b-a3b-instruct":{"id":"alibaba/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"alibaba/wan-v3.0-video":{"id":"alibaba/wan-v3.0-video","name":"Wan v3.0 Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-23","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.6-plus":{"id":"alibaba/qwen3.6-plus","name":"Qwen 3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625}},"alibaba/wan-v2.7-r2v":{"id":"alibaba/wan-v2.7-r2v","name":"Wan v2.7 Reference-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.8-27b":{"id":"alibaba/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625}},"alibaba/wan-v2.6-t2v":{"id":"alibaba/wan-v2.6-t2v","name":"Wan v2.6 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/wan-v3.0-video-prime":{"id":"alibaba/wan-v3.0-video-prime","name":"Wan v3.0 Video Prime","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen-3-14b":{"id":"alibaba/qwen-3-14b","name":"Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24}},"alibaba/qwen3-vl-instruct":{"id":"alibaba/qwen3-vl-instruct","name":"Qwen3 VL Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":129024},"cost":{"input":0.4,"output":1.6}},"alibaba/qwen3-235b-a22b-thinking":{"id":"alibaba/qwen3-235b-a22b-thinking","name":"Qwen3 235B A22B Thinking 2507","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":4}},"alibaba/qwen3.5-flash":{"id":"alibaba/qwen3.5-flash","name":"Qwen 3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.001,"cache_write":0.125}},"alibaba/qwen3-coder":{"id":"alibaba/qwen3-coder","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-22","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.3}},"alibaba/qwen3-coder-next":{"id":"alibaba/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.2}},"alibaba/qwen3-embedding-4b":{"id":"alibaba/qwen3-embedding-4b","name":"Qwen3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768}},"alibaba/qwen3-max-preview":{"id":"alibaba/qwen3-max-preview","name":"Qwen3 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-05","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":1.2,"output":6,"cache_read":0.24}},"alibaba/qwen3-embedding-8b":{"id":"alibaba/qwen3-embedding-8b","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768}},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"Qwen 3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3.6}},"alibaba/wan-v2.6-r2v":{"id":"alibaba/wan-v2.6-r2v","name":"Wan v2.6 Reference-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.7-flash":{"id":"alibaba/qwen3.7-flash","name":"Qwen 3.7 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038}},"alibaba/qwen3-max-thinking":{"id":"alibaba/qwen3-max-thinking","name":"Qwen 3 Max Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-23","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24}},"alibaba/qwen3.8-max-0902":{"id":"alibaba/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"alibaba/qwen3-max":{"id":"alibaba/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":1.2,"output":6,"cache_read":0.24}},"alibaba/wan-v2.6-i2v-flash":{"id":"alibaba/wan-v2.6-i2v-flash","name":"Wan v2.6 Image-to-Video Flash","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.8-2.4t-a95b":{"id":"alibaba/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25}},"alibaba/wan-v2.6-r2v-flash":{"id":"alibaba/wan-v2.6-r2v-flash","name":"Wan v2.6 Reference-to-Video Flash","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/wan-v2.5-t2v-preview":{"id":"alibaba/wan-v2.5-t2v-preview","name":"Wan v2.5 Text-to-Video Preview","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen-3-30b":{"id":"alibaba/qwen-3-30b","name":"Qwen3-30B-A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5}},"alibaba/qwen3.8-flash":{"id":"alibaba/qwen3.8-flash","name":"Qwen 3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"alibaba/wan-v2.6-i2v":{"id":"alibaba/wan-v2.6-i2v","name":"Wan v2.6 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen 3.8 Max","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"alibaba/qwen-3.6-max-preview":{"id":"alibaba/qwen-3.6-max-preview","name":"Qwen 3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":240000,"output":64000},"cost":{"input":1.3,"output":7.8,"cache_read":0.26,"cache_write":1.625}},"alibaba/qwen3-embedding-0.6b":{"id":"alibaba/qwen3-embedding-0.6b","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768}},"alibaba/qwen3-vl-235b-a22b-instruct":{"id":"alibaba/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":129024},"cost":{"input":0.4,"output":1.6}},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen 3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"alibaba/qwen-3-32b":{"id":"alibaba/qwen-3-32b","name":"Qwen 3.32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.16,"output":0.64}},"alibaba/wan-v2.7-t2v":{"id":"alibaba/wan-v2.7-t2v","name":"Wan v2.7 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.5-plus":{"id":"alibaba/qwen3.5-plus","name":"Qwen 3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5}},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"Nvidia Nemotron Nano 9B V2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.23}},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"Nvidia Nemotron Nano 12B V2 VL","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.6}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"NVIDIA Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.15,"output":0.65}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.24}},"spacexai/grok-voice-think-fast-2.0":{"id":"spacexai/grok-voice-think-fast-2.0","name":"Grok Voice Think Fast 2.0","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.20-reasoning":{"id":"spacexai/grok-4.20-reasoning","name":"Grok 4.20 Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-4.20-multi-agent":{"id":"spacexai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-4.3":{"id":"spacexai/grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-4.20-reasoning-beta":{"id":"spacexai/grok-4.20-reasoning-beta","name":"Grok 4.20 Beta Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-imagine-image":{"id":"spacexai/grok-imagine-image","name":"Grok Imagine Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-tts":{"id":"spacexai/grok-tts","name":"Grok TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.20-non-reasoning":{"id":"spacexai/grok-4.20-non-reasoning","name":"Grok 4.20 Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-imagine-video":{"id":"spacexai/grok-imagine-video","name":"Grok Imagine","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.5":{"id":"spacexai/grok-4.5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"spacexai/grok-build-0.1":{"id":"spacexai/grok-build-0.1","name":"Grok Build 0.1","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2}},"spacexai/grok-imagine-video-1.5-preview":{"id":"spacexai/grok-imagine-video-1.5-preview","name":"Grok Imagine Video 1.5 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-05-30","last_updated":"2026-05-30","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.20-multi-agent-beta":{"id":"spacexai/grok-4.20-multi-agent-beta","name":"Grok 4.20 Multi Agent Beta","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"spacexai/grok-4.20-non-reasoning-beta":{"id":"spacexai/grok-4.20-non-reasoning-beta","name":"Grok 4.20 Beta Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.4}},"spacexai/grok-4.1-fast-non-reasoning":{"id":"spacexai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"spacexai/grok-4.1-fast-reasoning":{"id":"spacexai/grok-4.1-fast-reasoning","name":"Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"spacexai/grok-imagine-video-1.5":{"id":"spacexai/grok-imagine-video-1.5","name":"Grok Imagine Video 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-30","last_updated":"2026-05-30","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-imagine-image-2.0":{"id":"spacexai/grok-imagine-image-2.0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.6":{"id":"spacexai/grok-4.6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"spacexai/grok-stt":{"id":"spacexai/grok-stt","name":"Grok STT","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-voice-think-fast-1.0":{"id":"spacexai/grok-voice-think-fast-1.0","name":"Grok Voice Think Fast 1.0","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"prodia/flux-fast-schnell":{"id":"prodia/flux-fast-schnell","name":"Flux Schnell","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-02","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5-fast":{"id":"anthropic/claude-opus-5-fast","name":"Claude Opus 5 (Fast)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Claude Haiku 3","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.8-fast":{"id":"anthropic/claude-opus-4.8-fast","name":"Claude Opus 4.8 (Fast)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Gemini 3.1 Flash Lite Image (Nano Banana 2 Lite)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5,"cache_read":0.03}},"google/gemini-3.5-transcribe-live":{"id":"google/gemini-3.5-transcribe-live","name":"Gemini 3.5 Transcribe Live","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana (Gemini 2.5 Flash Image)","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-3.5-transcribe":{"id":"google/gemini-3.5-transcribe","name":"Gemini 3.5 Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2,"output":12}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"google/veo-3.1-fast-generate-001":{"id":"google/veo-3.1-fast-generate-001","name":"Veo 3.1 Fast Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03}},"google/text-embedding-005":{"id":"google/text-embedding-005","name":"Text Embedding 005","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-01","last_updated":"2024-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"google/gemini-embedding-001":{"id":"google/gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"google/veo-3.0-generate-001":{"id":"google/veo-3.0-generate-001","name":"Veo 3.0","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/veo-3.1-generate-001":{"id":"google/veo-3.1-generate-001","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4}},"google/gemini-embedding-2":{"id":"google/gemini-embedding-2","name":"Gemini Embedding 2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"google/veo-3.0-fast-generate-001":{"id":"google/veo-3.0-fast-generate-001","name":"Veo 3.0 Fast Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-07-31","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/text-multilingual-embedding-002":{"id":"google/text-multilingual-embedding-002","name":"Text Multilingual Embedding 002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-01","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Gemini 3.1 Flash Image Preview (Nano Banana 2)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-3-flash":{"id":"google/gemini-3-flash","name":"Gemini 3 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-omni-flash-preview":{"id":"google/gemini-omni-flash-preview","name":"Gemini Omni Flash Preview","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":57920},"cost":{"input":1.5,"output":9}},"google/veo-3.1-lite-generate-001":{"id":"google/veo-3.1-lite-generate-001","name":"Veo 3.1 Lite Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"bfl/flux-kontext-max":{"id":"bfl/flux-kontext-max","name":"FLUX.1 Kontext Max","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-2-pro":{"id":"bfl/flux-2-pro","name":"FLUX.2 [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":67300,"output":67300}},"bfl/flux-2-max":{"id":"bfl/flux-2-max","name":"FLUX.2 [max]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":67300,"output":67300}},"bfl/flux-pro-1.1-ultra":{"id":"bfl/flux-pro-1.1-ultra","name":"FLUX1.1 [pro] Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-11-01","last_updated":"2024-11","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-kontext-pro":{"id":"bfl/flux-kontext-pro","name":"FLUX.1 Kontext Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-3-video":{"id":"bfl/flux-3-video","name":"Flux 3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-04","last_updated":"2026-08-04","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-pro-1.0-fill":{"id":"bfl/flux-pro-1.0-fill","name":"FLUX.1 Fill [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-01","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-2-flex":{"id":"bfl/flux-2-flex","name":"FLUX.2 [flex]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-2-klein-9b":{"id":"bfl/flux-2-klein-9b","name":"FLUX.2 [klein] 9B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-2-klein-4b":{"id":"bfl/flux-2-klein-4b","name":"FLUX.2 [klein] 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-pro-1.1":{"id":"bfl/flux-pro-1.1","name":"FLUX1.1 [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-02","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/llama-3.1-8b":{"id":"meta/llama-3.1-8b","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.22,"output":0.22}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"muse","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"meta/llama-3.1-70b":{"id":"meta/llama-3.1-70b","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.72,"output":0.72}},"meta/muse-image-1.0":{"id":"meta/muse-image-1.0","name":"Muse Image 1.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"muse","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"meta/llama-3.3-70b":{"id":"meta/llama-3.3-70b","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-4-scout":{"id":"meta/llama-4-scout","name":"Llama-4-Scout-17B-16E-Instruct-FP8","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-4-maverick":{"id":"meta/llama-4-maverick","name":"Llama-4-Maverick-17B-128E-Instruct-FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"quiverai/arrow-1.1":{"id":"quiverai/arrow-1.1","name":"Arrow 1.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":131072,"output":131072}},"bytedance/seedance-2.0-mini":{"id":"bytedance/seedance-2.0-mini","name":"Seedance 2.0 Mini","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-06-22","last_updated":"2026-06-22","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.0-pro-fast":{"id":"bytedance/seedance-v1.0-pro-fast","name":"Seedance v1.0 Pro Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-24","last_updated":"2025-10-31","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.0-pro":{"id":"bytedance/seedance-v1.0-pro","name":"Seedance v1.0 Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-11","last_updated":"2025-06-11","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.5-pro":{"id":"bytedance/seedance-v1.5-pro","name":"Seedance v1.5 Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-4.5":{"id":"bytedance/seedream-4.5","name":"Seedream 4.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-11-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seed-1.8":{"id":"bytedance/seed-1.8","name":"Seed 1.8","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-01","last_updated":"2025-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/seed-1.6":{"id":"bytedance/seed-1.6","name":"Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-01","last_updated":"2025-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/seedance-2.0-fast":{"id":"bytedance/seedance-2.0-fast","name":"Seedance 2.0 Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-4.0":{"id":"bytedance/seedream-4.0","name":"Seedream 4.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-09","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-5.0-lite":{"id":"bytedance/seedream-5.0-lite","name":"Seedream 5.0 Lite","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.5":{"id":"bytedance/seedance-2.5","name":"Seedance 2.5","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.0":{"id":"bytedance/seedance-2.0","name":"Seedance 2.0","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-5.0-pro":{"id":"bytedance/seedream-5.0-pro","name":"Seedream 5.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-11","last_updated":"2026-07-11","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"inception/mercury-coder-small":{"id":"inception/mercury-coder-small","name":"Mercury Coder Small Beta","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"mercury","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-02-26","last_updated":"2025-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":16384},"cost":{"input":0.25,"output":1}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-24","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.25,"output":0.75,"cache_read":0.024999999999999998}},"fish-audio/transcribe-1":{"id":"fish-audio/transcribe-1","name":"Transcribe-1","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s2.1-pro-free":{"id":"fish-audio/s2.1-pro-free","name":"S2.1 Pro (Free)","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-28","last_updated":"2026-07-28","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s2.1-pro":{"id":"fish-audio/s2.1-pro","name":"S2.1 Pro","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-28","last_updated":"2026-07-28","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s1-free":{"id":"fish-audio/s1-free","name":"S1 (Free)","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s2-pro":{"id":"fish-audio/s2-pro","name":"S2 Pro","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s2-pro-free":{"id":"fish-audio/s2-pro-free","name":"S2 Pro (Free)","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/transcribe-1-free":{"id":"fish-audio/transcribe-1-free","name":"Transcribe-1 (Free)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s1":{"id":"fish-audio/s1","name":"S1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"sakana/namazu":{"id":"sakana/namazu","name":"Sakana Namazu","description":"Multi-agent model for routing expert agents across complex analytical tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.15}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.066}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014}},"deepseek/deepseek-v3.2-thinking":{"id":"deepseek/deepseek-v3.2-thinking","name":"DeepSeek V3.2 Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8000},"cost":{"input":0.62,"output":1.85}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8000},"cost":{"input":0.28,"output":0.42,"cache_read":0.028}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":128000},"cost":{"input":0.25,"output":0.95,"cache_read":0.13}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4}},"amazon/nova-2-lite":{"id":"amazon/nova-2-lite","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2024-12-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.3,"output":2.5,"cache_read":0.075}},"amazon/titan-embed-text-v2":{"id":"amazon/titan-embed-text-v2","name":"Titan Text Embeddings V2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"titan-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-30","last_updated":"2024-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"amazon/nova-pro":{"id":"amazon/nova-pro","name":"Nova Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.8,"output":3.2,"cache_read":0.2}},"amazon/nova-lite":{"id":"amazon/nova-lite","name":"Nova Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.06,"output":0.24,"cache_read":0.015}},"amazon/nova-micro":{"id":"amazon/nova-micro","name":"Nova Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875}},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"inclusionai/ling-3.0-flash-fin-free":{"id":"inclusionai/ling-3.0-flash-fin-free","name":"Ling 3.0 Flash Fin (Free)","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"openai/gpt-5-fast":{"id":"openai/gpt-5-fast","name":"GPT-5 (Fast)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":128000,"output":272000},"cost":{"input":15,"output":120}},"openai/gpt-4o-mini-transcribe":{"id":"openai/gpt-4o-mini-transcribe","name":"GPT-4o mini Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":1.25,"output":5}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-5.5-fast":{"id":"openai/gpt-5.5-fast","name":"GPT 5.5 (Fast)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":12.5,"output":75,"cache_read":1.25}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5.4-mini-fast":{"id":"openai/gpt-5.4-mini-fast","name":"GPT 5.4 Mini (Fast)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT 5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-realtime-1.5":{"id":"openai/gpt-realtime-1.5","name":"GPT-Realtime-1.5","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":4,"output":16,"cache_read":0.4}},"openai/gpt-5-mini-fast":{"id":"openai/gpt-5-mini-fast","name":"GPT-5 mini (Fast)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.45,"output":3.6,"cache_read":0.045}},"openai/tts-1":{"id":"openai/tts-1","name":"TTS-1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT 5.2 ","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"openai/gpt-realtime-2":{"id":"openai/gpt-realtime-2","name":"gpt-realtime-2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":4,"output":24,"cache_read":0.4}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT 5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":122880,"output":8192},"cost":{"input":0.05,"output":0.2}},"openai/gpt-4o-transcribe":{"id":"openai/gpt-4o-transcribe","name":"GPT-4o Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2.5,"output":10}},"openai/o4-mini-fast":{"id":"openai/o4-mini-fast","name":"o4-mini (Fast)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"gpt-oss-safeguard-20b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-10-29","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":112000,"output":16000},"cost":{"input":0.07,"output":0.2}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT 5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-oss-safeguard-120b":{"id":"openai/gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":112000,"output":16000},"cost":{"input":0.15,"output":0.6}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT 5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-4.1-fast":{"id":"openai/gpt-4.1-fast","name":"GPT-4.1 (Fast)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":3.5,"output":14,"cache_read":0.875}},"openai/gpt-4o-mini-fast":{"id":"openai/gpt-4o-mini-fast","name":"GPT-4o mini (Fast)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125}},"openai/gpt-5.6-luna-fast":{"id":"openai/gpt-5.6-luna-fast","name":"GPT 5.6 Luna (Fast)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT 5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-image-1.5":{"id":"openai/gpt-image-1.5","name":"GPT Image 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25}},"openai/gpt-5.4-fast":{"id":"openai/gpt-5.4-fast","name":"GPT 5.4 (Fast)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-5.1-thinking-fast":{"id":"openai/gpt-5.1-thinking-fast","name":"GPT 5.1 Thinking (Fast)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25}},"openai/text-embedding-ada-002":{"id":"openai/text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-image-1":{"id":"openai/gpt-image-1","name":"GPT Image 1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT 5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.1-thinking":{"id":"openai/gpt-5.1-thinking","name":"GPT 5.1 Thinking","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-11-12","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT 5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":30,"output":180}},"openai/tts-1-hd":{"id":"openai/tts-1-hd","name":"TTS-1 HD","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/o3-fast":{"id":"openai/o3-fast","name":"o3 (Fast)","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":3.5,"output":14,"cache_read":0.875}},"openai/gpt-image-1-mini":{"id":"openai/gpt-image-1-mini","name":"GPT Image 1 Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2,"output":8,"cache_read":0.2}},"openai/gpt-5.6-terra-fast":{"id":"openai/gpt-5.6-terra-fast","name":"GPT 5.6 Terra (Fast)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":2.5}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT 5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-4.1-nano-fast":{"id":"openai/gpt-4.1-nano-fast","name":"GPT-4.1 nano (Fast)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05}},"openai/gpt-realtime-mini":{"id":"openai/gpt-realtime-mini","name":"GPT-Realtime mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-10-10","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.6,"output":2.4,"cache_read":0.06}},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25}},"openai/gpt-4.1-mini-fast":{"id":"openai/gpt-4.1-mini-fast","name":"GPT-4.1 mini (Fast)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":0.7,"output":2.8,"cache_read":0.175}},"openai/gpt-realtime-whisper":{"id":"openai/gpt-realtime-whisper","name":"gpt-realtime-whisper","description":"Streaming speech-to-text model for low-latency transcript deltas from live audio","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"input":12289,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5.3-codex-fast":{"id":"openai/gpt-5.3-codex-fast","name":"GPT 5.3 Codex (Fast)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35}},"openai/text-embedding-3-small":{"id":"openai/text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT 5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"openai/text-embedding-3-large":{"id":"openai/text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT 5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.2-fast":{"id":"openai/gpt-5.2-fast","name":"GPT 5.2 (Fast)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.6-sol-fast":{"id":"openai/gpt-5.6-sol-fast","name":"GPT 5.6 Sol (Fast)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":2.5}},"openai/whisper-1":{"id":"openai/whisper-1","name":"Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2022-09-21","last_updated":"2022-09-21","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-4o-fast":{"id":"openai/gpt-4o-fast","name":"GPT-4o (Fast)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":4.25,"output":17,"cache_read":2.125}},"openai/gpt-realtime-2.1":{"id":"openai/gpt-realtime-2.1","name":"gpt-realtime-2.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-09-30","release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"input":96000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3 Pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":20,"output":80}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT 5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code High Speed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":216144,"output":216144},"cost":{"input":0.47,"output":2,"cache_read":0.141}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k3-fast":{"id":"moonshotai/kimi-k3-fast","name":"Kimi K3 Fast","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262114,"output":262114},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"cohere/rerank-v4-pro":{"id":"cohere/rerank-v4-pro","name":"Cohere Rerank 4 Pro","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"cohere/rerank-v4-fast":{"id":"cohere/rerank-v4-fast","name":"Cohere Rerank 4 Fast","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"cohere/embed-v4.0":{"id":"cohere/embed-v4.0","name":"Embed v4.0","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":1536}},"cohere/command-a":{"id":"cohere/command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10}},"cohere/rerank-v3.5":{"id":"cohere/rerank-v3.5","name":"Cohere Rerank 3.5","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":80000},"cost":{"input":0.25,"output":0.8999999999999999}},"tencent/hy-mt2-lite":{"id":"tencent/hy-mt2-lite","name":"Tencent Hy-MT2-Lite","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.044,"output":0.177}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Tencent Hy4 Preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"tencent/hy-mt2-plus":{"id":"tencent/hy-mt2-plus","name":"Tencent Hy-MT2-Plus","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-pro":{"id":"tencent/hy-mt2-pro","name":"Tencent Hy-MT2-Pro","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":120000},"cost":{"input":0.6,"output":2.2,"cache_read":0.12}},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM 4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.2,"output":1.1,"cache_read":0.03}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-5.3-promo-50":{"id":"zai/glm-5.3-promo-50","name":"GLM 5.3 (50% off)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-08-18","last_updated":"2026-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.7,"output":2.2,"cache_read":0.13}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16}},"zai/glm-5.3-fast":{"id":"zai/glm-5.3-fast","name":"GLM 5.3 Fast","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"zai/glm-5.2-fast":{"id":"zai/glm-5.2-fast","name":"GLM 5.2 Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM 4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":66000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM 4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":64000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"output":131100},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.7,"output":2.2,"cache_read":0.13}},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.07,"output":0.4}},"mistral/devstral-2":{"id":"mistral/devstral-2","name":"Devstral 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.4,"output":2}},"mistral/mistral-medium":{"id":"mistral/mistral-medium","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.4,"output":2}},"mistral/devstral-small-2":{"id":"mistral/devstral-small-2","name":"Devstral Small 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-09","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3}},"mistral/mistral-embed":{"id":"mistral/mistral-embed","name":"Mistral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"mistral/mistral-large-3":{"id":"mistral/mistral-large-3","name":"Mistral Large 3","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5}},"mistral/mistral-nemo":{"id":"mistral/mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-07-18","last_updated":"2024-07-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15}},"mistral/codestral-embed":{"id":"mistral/codestral-embed","name":"Codestral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"codestral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"mistral/mistral-small":{"id":"mistral/mistral-small","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2024-09-17","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4000},"cost":{"input":0.1,"output":0.3}},"mistral/ministral-14b":{"id":"mistral/ministral-14b","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.2,"output":0.2}},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"Mistral Medium Latest","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-05-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1.5,"output":7.5}},"mistral/codestral":{"id":"mistral/codestral","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9}},"mistral/ministral-8b":{"id":"mistral/ministral-8b","name":"Ministral 8B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.1}},"mistral/ministral-3b":{"id":"mistral/ministral-3b","name":"Ministral 3B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.04,"output":0.04}},"mistral/pixtral-12b":{"id":"mistral/pixtral-12b","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15}},"perplexity/pplx-embed-v1-4b":{"id":"perplexity/pplx-embed-v1-4b","name":"Embed v1 4b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"perplexity/pplx-embed-v1-0.6b":{"id":"perplexity/pplx-embed-v1-0.6b","name":"Embed v1 0.6b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"v0","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-02","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":8000}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-09","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":8000}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000}},"recraft/recraft-v4-pro":{"id":"recraft/recraft-v4-pro","name":"Recraft V4 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-utility":{"id":"recraft/recraft-v4.1-utility","name":"Recraft V4.1 Utility","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-utility-pro":{"id":"recraft/recraft-v4.1-utility-pro","name":"Recraft V4.1 Utility Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v2":{"id":"recraft/recraft-v2","name":"Recraft V2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"recraft/recraft-v3":{"id":"recraft/recraft-v3","name":"Recraft V3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-30","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"recraft/recraft-v4.1-pro":{"id":"recraft/recraft-v4.1-pro","name":"Recraft V4.1 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4":{"id":"recraft/recraft-v4","name":"Recraft V4","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1":{"id":"recraft/recraft-v4.1","name":"Recraft V4.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}}}},"qvac":{"id":"qvac","env":["QVAC_API_KEY"],"npm":"@qvac/ai-sdk-provider","name":"QVAC","doc":"https://www.npmjs.com/package/@qvac/ai-sdk-provider","models":{"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"qwen3.5-0.8b":{"id":"qwen3.5-0.8b","name":"Qwen3.5 0.8B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"qwen3.5-4b":{"id":"qwen3.5-4b","name":"Qwen3.5 4B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"qwen3.5-2b":{"id":"qwen3.5-2b","name":"Qwen3.5 2B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}}}},"wandb":{"id":"wandb","env":["WANDB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inference.wandb.ai/v1","name":"Weights & Biases","doc":"https://docs.wandb.ai/guides/integrations/inference/","models":{"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"DeepSeek V4-Flash is an MoE model with 1M context length great for coding, reasoning, and agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.07}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"DeepSeek V4-Flash-0731 is an MoE model great for coding, reasoning, and agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.28,"cache_read":0.07}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"A large hybrid model that supports both thinking and non-thinking modes via prompt templates.","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":161000,"output":161000},"cost":{"input":0.55,"output":1.65,"cache_read":0.55}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4-Pro-0813 is a 1.6T-parameter MoE model excelling at advanced reasoning, coding, and complex agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.31,"output":3.96,"cache_read":0.044}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4-Pro is a 1.6T-parameter MoE model with 49B active parameters excelling at advanced reasoning, coding, and complex agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.15,"output":2.55,"cache_read":0.2}},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B","name":"Nemotron 3 Ultra","description":"Nemotron 3 Ultra is a powerful MoE model designed for long-running agents across coding, deep research, and enterprise automation.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":2.75,"cache_read":0.15}},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B","name":"Nemotron 3.5 Lightning","description":"Nemotron 3.5 Lightning is an MoE model built for fast, reliable agentic tasks across use cases such as financial services, cybersecurity, telecom, and retail.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.25,"cache_read":0.05}},"OpenPipe/Qwen3-14B-Instruct":{"id":"OpenPipe/Qwen3-14B-Instruct","name":"Qwen3 14B Instruct","description":"An efficient multilingual, dense, instruction-tuned model, optimized by OpenPipe for building agents with finetuning.","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.05,"output":0.22,"cache_read":0.05}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B","description":"Gemma 4 31B Dense is designed for advanced reasoning, agentic workflows, and longer context and is natively trained on 140+ languages.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.34,"cache_read":0.1}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"GLM-5.2 is a Mixture-of-Experts language model featuring 40 billion activated parameters and a total of 744 billion parameters.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.76,"output":2.42,"cache_read":0.14}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen3-30B-A3B-Instruct-2507 is a 30.5B MoE instruction-tuned model with enhanced reasoning, coding, and long-context understanding.","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3,"cache_read":0.1}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Qwen3.8-27B is a dense multimodal model suited for coding, research, vision, and long-running agent tasks.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen3.5-35B-A3B","description":"Qwen3.5-35B-A3B is an open-weights multimodal MoE model built for efficient, high-throughput inference across chat, reasoning, and agentic tasks.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.25,"cache_read":0.25}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen3.6-27B is a 27B dense multimodal model with 262K context built for flagship-level agentic coding.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.6,"cache_read":0.12}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","description":"Qwen3.6-35B-A3B is an MoE multimodal model with 262K context optimized for agentic coding workflows.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.25,"cache_read":0.25}},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"Granite 4.1 8B","description":"Granite 4.1 8B is a long-context instruct model capable of enhanced tool calling, instruction following, and chat capabilities.","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1,"cache_read":0.05}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"Granite 4.2 8B is an instruct model capable of enhanced tool calling, instruction following, and chat capabilities.","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-24","last_updated":"2026-08-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.15,"cache_read":0.05}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax M3","description":"MiniMax M3 is a multimodal MoE model with 23B active parameters optimized for coding and agentic workflows.","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.23,"output":0.96,"cache_read":0.05}},"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama 3.1 8B","description":"Efficient conversational model optimized for responsive multilingual chatbot interactions.","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.22,"output":0.22,"cache_read":0.22}},"meta-llama/Llama-3.1-70B-Instruct":{"id":"meta-llama/Llama-3.1-70B-Instruct","name":"Llama 3.1 70B","description":"Efficient conversational model optimized for responsive multilingual chatbot interactions.","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.8,"output":0.8,"cache_read":0.8}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B","description":"Multilingual model excelling in conversational tasks, detailed instruction-following, and coding.","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.71,"output":0.71,"cache_read":0.71}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"gpt-oss-20b","description":"Lower latency Mixture-of-Experts model trained on OpenAI's Harmony response format with reasoning capabilities.","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.03}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"gpt-oss-120b","description":"Efficient Mixture-of-Experts model designed for high-reasoning, agentic and general-purpose use cases.","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.17,"cache_read":0.03}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Kimi K2.7 Code is a 1T-parameter MoE model with 32B active parameters purpose-built for long-horizon agentic coding and software engineering.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":3.5,"cache_read":0.15}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi K2.6 is a multimodal Mixture-of-Experts language model featuring 32 billion activated parameters and a total of 1 trillion parameters.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.65,"output":3.41,"cache_read":0.15}},"JetBrains/Mellum2-12B-A2.5B-Instruct":{"id":"JetBrains/Mellum2-12B-A2.5B-Instruct","name":"Mellum2 12B A2.5B","description":"Mellum2-12B-A2.5B-Instruct is a fast MoE model with 131K context built for coding, tool use, and low-latency AI workflows.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1,"cache_read":0.05}}}},"friendli":{"id":"friendli","env":["FRIENDLI_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.friendli.ai/serverless/v1","name":"Friendli","doc":"https://friendli.ai/docs/guides/serverless_endpoints/introduction","models":{"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.5,"cache_read":0.25}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens","min":-1,"max":1048576}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}}}},"tokenrouter":{"id":"tokenrouter","env":["TOKENROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokenrouter.com/v1","name":"TokenRouter","doc":"https://www.tokenrouter.com/docs/tokenrouter-feature-guide/","models":{"z-ai/glm-5.3-free":{"id":"z-ai/glm-5.3-free","name":"GLM-5.3 (free)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}}}},"thinkingmachines":{"id":"thinkingmachines","env":["TINKER_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api/v1","name":"Thinking Machines","doc":"https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/anthropic/","models":{"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374}},"thinkingmachines/Inkling:peft:262144":{"id":"thinkingmachines/Inkling:peft:262144","name":"Inkling (256K)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":3.74,"output":9.36,"cache_read":0.748}}}},"standardcompute":{"id":"standardcompute","env":["STANDARDCOMPUTE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stdcmpt.com/v1","name":"Standard Compute","doc":"https://standardcompute.com/models","models":{"standardcompute":{"id":"standardcompute","name":"Standard Compute","description":"Flat-rate smart-routing gateway: one model id, each request routed across a curated catalog of 1M-context models (DeepSeek, GLM, MiniMax, Qwen, GPT-5.6, Claude 5, Gemini 2.5, Kimi) or pinned to a user-selected model","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":24576},"cost":{"input":0,"output":0}}}},"tensorx":{"id":"tensorx","env":["TENSORX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tensorx.ai/v1","name":"TensorX","doc":"https://docs.tensorx.ai/","models":{"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.2,"cache_read":0.0375,"cache_write":0.1875}},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0.06,"output":0.25,"cache_read":0.015,"cache_write":0.075}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen3 235B-A22B-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":262144},"cost":{"input":0.072,"output":0.464,"cache_read":0.018,"cache_write":0.09}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3.5,"cache_read":0.125,"cache_write":0.625}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B-A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131072},"cost":{"input":0.21,"output":1.9,"cache_read":0.0525,"cache_write":0.2625}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.075,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.1}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.9,"cache_read":0.075,"cache_write":0.375}},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek Chat V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":163840},"cost":{"input":0.2,"output":0.8,"cache_read":0.05,"cache_write":0.25}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.06}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.3,"cache_read":0.0375,"cache_write":0.1875}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1-0528","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":8192},"cost":{"input":0.66,"output":2.6,"cache_read":0.165,"cache_write":0.825}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.3,"output":0.5,"cache_read":0.075,"cache_write":0.375}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.75,"output":3.5,"cache_read":0.4375,"cache_write":2.185}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.04,"output":0.2,"cache_read":0.01,"cache_write":0.05}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1,"output":4,"cache_read":0.25,"cache_write":1.25}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.3125}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125,"cache_write":0.625}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":200000},"cost":{"input":0.6,"output":2.2,"cache_read":0.15,"cache_write":0.75}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.5,"output":4.5,"cache_read":0.375}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1,"output":3.2,"cache_read":0.25,"cache_write":1.25}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.4,"output":4.4,"cache_read":0.35,"cache_write":1.75}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5}}}},"meta":{"id":"meta","env":["META_MODEL_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.meta.ai/v1","name":"Meta","doc":"https://dev.meta.ai/docs","models":{"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}}}},"venice":{"id":"venice","env":["VENICE_API_KEY"],"npm":"venice-ai-sdk-provider","name":"Venice AI","doc":"https://docs.venice.ai","models":{"google-gemma-3-27b-it":{"id":"google-gemma-3-27b-it","name":"Google Gemma 3 27B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-11-04","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.12,"output":0.2}},"zai-org-glm-5-2":{"id":"zai-org-glm-5-2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.6,"output":18,"cache_read":0.36,"cache_write":4.5}},"deepseek-v4-flash-0731-fast":{"id":"deepseek-v4-flash-0731-fast","name":"DeepSeek V4 Flash 0731 Fast","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-08-09","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.35,"output":0.7,"cache_read":0.0875}},"qwen3-5-9b":{"id":"qwen3-5-9b","name":"Qwen 3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.15}},"openai-gpt-55-pro":{"id":"openai-gpt-55-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":37.5,"output":225}},"zai-org-glm-4.7-flash":{"id":"zai-org-glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"mistral-small-3-2-24b-instruct":{"id":"mistral-small-3-2-24b-instruct","name":"Mistral Small 3.2 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-15","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.09375,"output":0.25}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":4.95,"cache_read":0.165}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.175,"output":0.35,"cache_read":0.035}},"gemini-3-7-flash":{"id":"gemini-3-7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375}},"venice-uncensored-1-2":{"id":"venice-uncensored-1-2","name":"Venice Uncensored 1.2","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"venice","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-01","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen 3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5}},"gemma-4-uncensored":{"id":"gemma-4-uncensored","name":"Gemma 4 Uncensored","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-13","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.1625,"output":0.5}},"zai-org-glm-5-1":{"id":"zai-org-glm-5-1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":80000},"cost":{"input":1.54,"output":4.84,"cache_read":0.286}},"qwen-3-6-plus":{"id":"qwen-3-6-plus","name":"Qwen 3.6 Plus Uncensored","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-06","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.625,"output":3.75,"cache_read":0.0625,"cache_write":0.78,"tiers":[{"input":2.5,"output":7.5,"cache_read":0.0625,"cache_write":0.78,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2.5,"output":7.5,"cache_read":0.0625,"cache_write":0.78}}},"openai-gpt-55":{"id":"openai-gpt-55","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":131072},"cost":{"input":6.25,"output":37.5,"cache_read":0.625,"tiers":[{"input":12.5,"output":56.25,"cache_read":1.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":12.5,"output":56.25,"cache_read":1.25}}},"claude-opus-5-fast":{"id":"claude-opus-5-fast","name":"Claude Opus 5 Fast","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-23","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15}},"minimax-m25":{"id":"minimax-m25","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32768},"cost":{"input":0.27,"output":0.95,"cache_read":0.03}},"aion-labs-aion-3-0-mini":{"id":"aion-labs-aion-3-0-mini","name":"Aion 3.0 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.875,"output":1.75,"cache_read":0.225}},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-22","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.55,"output":9.45,"cache_read":0.155,"cache_write":0.086}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-23","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5}},"openai-gpt-52-codex":{"id":"openai-gpt-52-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08","release_date":"2025-01-15","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":272000,"output":65536},"cost":{"input":2.19,"output":17.5,"cache_read":0.219}},"qwen-3-7-max":{"id":"qwen-3-7-max","name":"Qwen 3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-22","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.7,"output":8.05,"cache_read":0.27,"cache_write":3.35}},"qwen-3-8-max":{"id":"qwen-3-8-max","name":"Qwen 3.8 Max","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-22","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125,"cache_write":3.125}},"openai-gpt-54":{"id":"openai-gpt-54","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":131072},"cost":{"input":3.13,"output":18.8,"cache_read":0.313}},"z-ai-glm-5-turbo":{"id":"z-ai-glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"zai-org-glm-4.6":{"id":"zai-org-glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2024-04-01","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.43,"output":1.75,"cache_read":0.08}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-12-06","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":198000,"output":32768},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash 0423","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.138,"output":0.275,"cache_read":0.028}},"zai-org-glm-5":{"id":"zai-org-glm-5","name":"GLM 5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-09","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375}},"openai-gpt-56-terra":{"id":"openai-gpt-56-terra","name":"GPT-5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.125,"output":18.75,"cache_read":0.3125,"cache_write":3.90625}},"kimi-k3-fast-api":{"id":"kimi-k3-fast-api","name":"Kimi K3 Fast","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"qwen-3-8-27b":{"id":"qwen-3-8-27b","name":"Qwen 3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-17","last_updated":"2026-08-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.2}},"openai-gpt-oss-120b":{"id":"openai-gpt-oss-120b","name":"OpenAI GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-06","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3}},"olafangensan-glm-4.7-flash-heretic":{"id":"olafangensan-glm-4.7-flash-heretic","name":"GLM 4.7 Flash Heretic","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-02-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":24000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-13","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16}},"aion-labs-aion-3-0":{"id":"aion-labs-aion-3-0","name":"Aion 3.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":3.75,"output":7.5,"cache_read":0.9375}},"llama-3.2-3b":{"id":"llama-3.2-3b","name":"Llama 3.2 3B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-10-03","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.6}},"qwen3-5-397b-a17b":{"id":"qwen3-5-397b-a17b","name":"Qwen 3.5 397B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.75,"output":4.5}},"seed-2-1-turbo":{"id":"seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-28","last_updated":"2026-07-24","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.625,"output":3.125,"cache_read":0.125}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-08-29","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":0.3,"cache_write":15}},"openai-gpt-54-pro":{"id":"openai-gpt-54-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":37.5,"output":225,"tiers":[{"input":75,"output":337.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":75,"output":337.5}}},"hermes-3-llama-3.1-405b":{"id":"hermes-3-llama-3.1-405b","name":"Hermes 3 Llama 3.1 405b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"hermes","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-09-25","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":3}},"venice-uncensored-role-play":{"id":"venice-uncensored-role-play","name":"Venice Role Play Uncensored","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"venice","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-02-20","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":2}},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16}},"openai-gpt-54-mini":{"id":"openai-gpt-54-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-27","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.9375,"output":5.625,"cache_read":0.09375}},"qwen3-6-35b-a3b":{"id":"qwen3-6-35b-a3b","name":"Qwen 3.6 35B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.1,"output":1}},"minimax-m3-preview":{"id":"minimax-m3-preview","name":"MiniMax M3 Preview","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-06-12","last_updated":"2026-06-13","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"qwen3-5-35b-a3b":{"id":"qwen3-5-35b-a3b","name":"Qwen 3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.3125,"output":1.25,"cache_read":0.15625}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5}},"kimi-k2-5":{"id":"kimi-k2-5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-04","release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.56,"output":3.5,"cache_read":0.22}},"gemini-3-5-flash-lite":{"id":"gemini-3-5-flash-lite","name":"Gemini 3.5 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-09","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.375,"output":3.125,"cache_read":0.0375}},"google-gemma-4-26b-a4b-it":{"id":"google-gemma-4-26b-a4b-it","name":"Google Gemma 4 26B A4B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.13,"output":0.4,"cache_read":0.05}},"openai-gpt-53-codex":{"id":"openai-gpt-53-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.19,"output":17.5,"cache_read":0.219}},"qwen-3-8-2-4t-a95b":{"id":"qwen-3-8-2-4t-a95b","name":"Qwen 3.8 2.4T","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3.75,"output":18.75,"cache_read":0.375}},"openai-gpt-56-sol":{"id":"openai-gpt-56-sol","name":"GPT-5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6.25,"output":37.5,"cache_read":0.625,"cache_write":7.8125}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":32768},"cost":{"input":0.33,"output":0.48,"cache_read":0.16}},"xiaomi-mimo-v2-5":{"id":"xiaomi-mimo-v2-5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-06-11","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2,"cache_read":0.08}},"gemini-3-1-pro-preview":{"id":"gemini-3-1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2.5,"output":15,"cache_read":0.5,"cache_write":0.5,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":0.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":0.5}}},"openai-gpt-56-terra-pro":{"id":"openai-gpt-56-terra-pro","name":"GPT-5.6 Terra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.125,"output":18.75,"cache_read":0.3125,"cache_write":3.90625,"tiers":[{"input":6.25,"output":28.125,"cache_read":0.625,"cache_write":7.8125,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":6.25,"output":28.125,"cache_read":0.625,"cache_write":7.8125}}},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32000},"cost":{"input":2.27,"output":6.8,"cache_read":0.34,"tiers":[{"input":4.53,"output":13.6,"cache_read":0.68,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.53,"output":13.6,"cache_read":0.68}}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-10","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15}},"openai-gpt-52":{"id":"openai-gpt-52","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-13","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":272000,"output":65536},"cost":{"input":2.19,"output":17.5,"cache_read":0.219}},"claude-opus-4-8-fast":{"id":"claude-opus-4-8-fast","name":"Claude Opus 4.8 Fast","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15}},"openai-gpt-56-luna-pro":{"id":"openai-gpt-56-luna-pro","name":"GPT-5.6 Luna Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":7.5,"cache_read":0.125,"cache_write":1.5625,"tiers":[{"input":2.5,"output":11.25,"cache_read":0.25,"cache_write":3.125,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2.5,"output":11.25,"cache_read":0.25,"cache_write":3.125}}},"z-ai-glm-5-3-flash":{"id":"z-ai-glm-5-3-flash","name":"GLM 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"grok-4-20":{"id":"grok-4-20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-03-12","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}}},"google-gemma-4-31b-it":{"id":"google-gemma-4-31b-it","name":"Google Gemma 4 31B Instruct","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-03","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.12,"output":0.36,"cache_read":0.09}},"qwen3-6-27b":{"id":"qwen3-6-27b","name":"Qwen 3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.325,"output":3.25}},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-18","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}}},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":1.25,"output":5.0625,"cache_read":0.2125}},"qwen3-coder-480b-a35b-instruct-turbo":{"id":"qwen3-coder-480b-a35b-instruct-turbo","name":"Qwen 3 Coder 480B Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"openai-gpt-4o-2024-11-20":{"id":"openai-gpt-4o-2024-11-20","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2026-02-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":3.125,"output":12.5}},"minimax-m27":{"id":"minimax-m27","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32768},"cost":{"input":0.375,"output":1.5,"cache_read":0.06875}},"qwen3-next-80b":{"id":"qwen3-next-80b","name":"Qwen 3 Next 80b","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.35,"output":1.9}},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-02-20","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.3125,"output":0.9375,"cache_read":0.03125}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-01-15","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":198000,"output":64000},"cost":{"input":3.75,"output":18.75,"cache_read":0.375,"cache_write":4.69}},"nvidia-nemotron-3-nano-30b-a3b":{"id":"nvidia-nemotron-3-nano-30b-a3b","name":"NVIDIA Nemotron 3 Nano 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.3}},"zai-org-glm-4.7":{"id":"zai-org-glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.55,"output":2.65,"cache_read":0.11}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-19","last_updated":"2026-06-11","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.7,"output":3.75,"cache_read":0.07}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen 3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.75}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.1875,"output":0.75}},"z-ai-glm-5v-turbo":{"id":"z-ai-glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32768},"cost":{"input":1.5,"output":5,"cache_read":0.3}},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-10","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":200000},"cost":{"input":2.27,"output":6.8,"cache_read":0.57,"tiers":[{"input":4.53,"output":13.6,"cache_read":1.13,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.53,"output":13.6,"cache_read":1.13}}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5}},"qwen-3-7-plus":{"id":"qwen-3-7-plus","name":"Qwen 3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":1.5,"output":6,"cache_read":0.15,"cache_write":1.875,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.5,"output":6,"cache_read":0.15,"cache_write":1.875}}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":3.301,"cache_read":0.33}},"nvidia-nemotron-3-ultra-550b-a55b":{"id":"nvidia-nemotron-3-ultra-550b-a55b","name":"NVIDIA Nemotron 3 Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.625,"output":3.125,"cache_read":0.1875}},"z-ai-glm-5-3":{"id":"z-ai-glm-5-3","name":"GLM 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.75,"output":5.5,"cache_read":0.325}},"grok-4-20-multi-agent":{"id":"grok-4-20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"release_date":"2026-03-12","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}}},"openai-gpt-56-luna":{"id":"openai-gpt-56-luna","name":"GPT-5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.26666667,"output":1.6,"cache_read":0.02666667,"cache_write":0.33333334}},"llama-3.3-70b":{"id":"llama-3.3-70b","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"release_date":"2025-04-06","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.7,"output":2.8}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-29","last_updated":"2026-07-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3 VL 235B","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-16","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.21,"output":1.9,"cache_read":0.1}},"openai-gpt-4o-mini-2024-07-18":{"id":"openai-gpt-4o-mini-2024-07-18","name":"GPT-4o Mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2026-02-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.1875,"output":0.75,"cache_read":0.09375}},"gemini-3-8-flash":{"id":"gemini-3-8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375}},"openai-gpt-56-sol-pro":{"id":"openai-gpt-56-sol-pro","name":"GPT-5.6 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6.25,"output":37.5,"cache_read":0.625,"cache_write":7.8125,"tiers":[{"input":12.5,"output":56.25,"cache_read":1.25,"cache_write":15.625,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":12.5,"output":56.25,"cache_read":1.25,"cache_write":15.625}}}}},"gmicloud":{"id":"gmicloud","env":["GMICLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.gmi-serving.com/v1","name":"GMI Cloud","doc":"https://docs.gmicloud.ai/inference-engine/api-reference/llm-api-reference","models":{"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":384000},"cost":{"input":0.112,"output":0.224,"cache_read":0.022}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.392,"output":2.784,"cache_read":0.116}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"zai-org/GLM-5.2-FP8":{"id":"zai-org/GLM-5.2-FP8","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.979,"output":3.08,"cache_read":0.182}},"zai-org/GLM-5-FP8":{"id":"zai-org/GLM-5-FP8","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":1.92,"cache_read":0.12}},"zai-org/GLM-5.1-FP8":{"id":"zai-org/GLM-5.1-FP8","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182}},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.855,"output":3.6,"cache_read":0.144}}}},"io-net":{"id":"io-net","env":["IOINTELLIGENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.intelligence.io.solutions/api/v1","name":"IO.NET","doc":"https://io.net/docs/guides/intelligence/io-intelligence","models":{"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{"id":"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar","name":"Qwen 3 Coder 480B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":106000,"output":4096},"cost":{"input":0.22,"output":0.95,"cache_read":0.11,"cache_write":0.44}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8.75,"cache_read":1,"cache_write":4}},"mistralai/Devstral-Small-2505":{"id":"mistralai/Devstral-Small-2505","name":"Devstral Small 2505","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1}},"mistralai/Mistral-Large-Instruct-2411":{"id":"mistralai/Mistral-Large-Instruct-2411","name":"Mistral Large Instruct 2411","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":6,"cache_read":1,"cache_write":4}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo Instruct 2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.04,"cache_read":0.01,"cache_write":0.04}},"mistralai/Magistral-Small-2506":{"id":"mistralai/Magistral-Small-2506","name":"Magistral Small 2506","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0.25,"cache_write":1}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-15","last_updated":"2024-11-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.4,"output":1.75,"cache_read":0.2,"cache_write":0.8}},"Qwen/Qwen2.5-VL-32B-Instruct":{"id":"Qwen/Qwen2.5-VL-32B-Instruct","name":"Qwen 2.5 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1}},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen 3 Next 80B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.8,"cache_read":0.05,"cache_write":0.2}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen 3 235B Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.11,"output":0.6,"cache_read":0.055,"cache_write":0.22}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B 128E Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":430000,"output":4096},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.3}},"meta-llama/Llama-3.2-90B-Vision-Instruct":{"id":"meta-llama/Llama-3.2-90B-Vision-Instruct","name":"Llama 3.2 90B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.35,"output":0.4,"cache_read":0.175,"cache_write":0.7}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.13,"output":0.38,"cache_read":0.065,"cache_write":0.26}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT-OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":4096},"cost":{"input":0.03,"output":0.14,"cache_read":0.015,"cache_write":0.06}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.04,"output":0.4,"cache_read":0.02,"cache_write":0.08}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.55,"output":2.25,"cache_read":0.275,"cache_write":1.1}},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-09-05","last_updated":"2024-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.39,"output":1.9,"cache_read":0.195,"cache_write":0.78}}}},"llmgateway":{"id":"llmgateway","env":["LLMGATEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmgateway.io/v1","name":"DevPass (LLM Gateway)","doc":"https://llmgateway.io/docs","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.2}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.38,"output":1.98,"cache_read":0.19,"cache_write":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":3.125}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34}},"minimax-m2.1-lightning":{"id":"minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48}},"gemini-pro-latest":{"id":"gemini-pro-latest","name":"Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025,"cache_write":0}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"codestral-2508":{"id":"codestral-2508","name":"Codestral","description":"Mistral coding model for code completion, generation, and developer workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":0.9}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"seed-1-8-251228":{"id":"seed-1-8-251228","name":"Seed 1.8 (251228)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5,"cache_read":0.2,"cache_write":1.25}},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3}},"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8 27B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.41,"output":2.5,"cache_read":0.08}},"llama-4-scout-17b-instruct":{"id":"llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":2048},"cost":{"input":0.18,"output":0.59}},"qwen35-397b-a17b":{"id":"qwen35-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking (2507)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":8192},"cost":{"input":0.3,"output":3}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11,"cache_write":0}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"gpt-4o-mini-transcribe":{"id":"gpt-4o-mini-transcribe","name":"GPT-4o Mini Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":1.25,"output":5}},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.27,"output":1.1}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375}},"glm-4.6v-flashx":{"id":"glm-4.6v-flashx","name":"GLM-4.6V FlashX","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"ling-3.0-flash":{"id":"ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"minimax-m2":{"id":"minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"minimax-m2.7-highspeed":{"id":"minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-22","last_updated":"2026-06-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"qwen3-235b-a22b-fp8":{"id":"qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B FP8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":8192},"cost":{"input":0.2,"output":0.8}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.08,"output":0.32,"cache_read":0.017,"cache_write":0.375}},"custom":{"id":"custom","name":"Custom Model","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.22,"output":1.137,"cache_read":0.048}},"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.55,"output":1.784,"cache_read":0.111,"cache_write":0}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":228700,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"grok-4":{"id":"grok-4","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":384000},"cost":{"input":0.051,"output":0.104,"cache_read":0.0097}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.89,"output":3.71,"cache_read":0.18}},"seed-1-6-flash-250715":{"id":"seed-1-6-flash-250715","name":"Seed 1.6 Flash (250715)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.015}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.06}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.36,"output":0.87,"reasoning":8.4}},"llama-3.2-11b-instruct":{"id":"llama-3.2-11b-instruct","name":"Llama 3.2 11B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.07,"output":0.33}},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"minimax-m2.5-highspeed":{"id":"minimax-m2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"llama-3.2-3b-instruct":{"id":"llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"glm-4.5-x":{"id":"glm-4.5-x","name":"GLM-4.5 X","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"beta","cost":{"input":2.2,"output":8.9,"cache_read":0.45}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32766},"cost":{"input":0.04,"output":0.19,"cache_read":0.01}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333}},"gpt-4o-transcribe":{"id":"gpt-4o-transcribe","name":"GPT-4o Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":2.5,"output":10}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"reasoning":4.8,"cache_read":0.04,"cache_write":0.25}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.108,"output":0.675,"cache_read":0.06}},"qwen-coder-plus":{"id":"qwen-coder-plus","name":"Qwen Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.502,"output":1.004}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0.07,"output":0.27}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"ernie-4.5-vl-424b-a47b":{"id":"ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":123000,"output":123000},"cost":{"input":0.42,"output":1.25}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333}},"minimax-text-01":{"id":"minimax-text-01","name":"MiniMax Text 01","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"glm-4.5-airx":{"id":"glm-4.5-airx","name":"GLM-4.5 AirX","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":4.5,"cache_read":0.22}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"ministral-3b-2512":{"id":"ministral-3b-2512","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.1,"output":0.1}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.83,"output":14.13,"cache_read":0.28}},"kimi-k3-fast":{"id":"kimi-k3-fast","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.26,"output":0.38,"cache_read":0.13}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485}},"nemotron-3-ultra-550b":{"id":"nemotron-3-ultra-550b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1}},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.99,"output":6.16,"cache_read":0.4}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38,"cache_read":0.6,"cache_write":3.75}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.13,"output":0.4,"cache_read":0.024}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333}},"qwen3-vl-flash":{"id":"qwen3-vl-flash","name":"Qwen3 VL Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-09","last_updated":"2025-10-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"qwen3-vl-30b-a3b-instruct":{"id":"qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.2,"reasoning":4,"cache_read":0.08,"cache_write":0.5}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"sonar":{"id":"sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":4096},"cost":{"input":1,"output":1}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}},"llama-4-maverick-17b-instruct":{"id":"llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":2048},"cost":{"input":0.27,"output":0.85}},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125}},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.3,"output":7.8,"cache_read":0.13,"cache_write":1.625}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.57,"output":2.3,"cache_read":0.5}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.102,"output":0.297,"cache_read":0.012}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":0.72,"output":2.3,"cache_read":0.144,"cache_write":0}},"glm-4-32b-0414-128k":{"id":"glm-4-32b-0414-128k","name":"GLM-4 32B (0414-128k)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.1}},"seed-1-6-250615":{"id":"seed-1-6-250615","name":"Seed 1.6 (250615)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.815,"output":5.4461,"cache_read":0.21,"cache_write":2.5}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225}},"gpt-3.5-turbo":{"id":"gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.931,"output":2.93,"cache_read":0.173,"cache_write":0}},"qwen3-vl-235b-a22b-thinking":{"id":"qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.98,"output":3.95}},"qwen3-vl-235b-a22b-instruct":{"id":"qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.88,"cache_read":0.11}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"llama-3.1-70b-instruct":{"id":"llama-3.1-70b-instruct","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"status":"beta","cost":{"input":0.72,"output":0.72}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct (2507)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.09,"output":0.58}},"qwen-omni-turbo":{"id":"qwen-omni-turbo","name":"Qwen-Omni Turbo","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.2,"output":0.8}},"grok-4-20-beta-0309-reasoning":{"id":"grok-4-20-beta-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"grok-4-20-beta-0309-non-reasoning":{"id":"grok-4-20-beta-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"sonar-pro":{"id":"sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"ministral-8b-2512":{"id":"ministral-8b-2512","name":"Ministral 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.15}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32766},"cost":{"input":0.032,"output":0.14,"cache_read":0.032}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55}},"seed-1-6-250915":{"id":"seed-1-6-250915","name":"Seed 1.6 (250915)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.2}},"gpt-4":{"id":"gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60}},"grok-4-20-non-reasoning":{"id":"grok-4-20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"qwen-plus-latest":{"id":"qwen-plus-latest","name":"Qwen Plus Latest","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-25","last_updated":"2025-01-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":8192},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.135,"output":0.4}},"llama-3-70b-instruct":{"id":"llama-3-70b-instruct","name":"Llama 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-04-18","last_updated":"2024-04-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74}},"grok-4-20-reasoning":{"id":"grok-4-20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01,"cache_write":0}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"auto":{"id":"auto","name":"Auto Route","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}}}},"infomaniak":{"id":"infomaniak","env":["INFOMANIAK_API_KEY","INFOMANIAK_PRODUCT_ID"],"npm":"@ai-sdk/openai-compatible","api":"https://api.infomaniak.com/2/ai/${INFOMANIAK_PRODUCT_ID}/openai/v1","name":"Infomaniak","doc":"https://www.infomaniak.com/en/hosting/ai-services/open-source-models","models":{"bge_multilingual_gemma2":{"id":"bge_multilingual_gemma2","name":"BGE Multilingual Gemma2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-25","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"input":8000,"output":3584},"cost":{"input":0.08,"output":0}},"mini_lm_l12_v2":{"id":"mini_lm_l12_v2","name":"All-MiniLM-L12-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128,"input":128,"output":384},"cost":{"input":0,"output":0}},"swiss-ai/Apertus-v1.5-70B":{"id":"swiss-ai/Apertus-v1.5-70B","name":"Apertus v1.5 70B","description":"Open, ethically-sourced Swiss AI model for multilingual, multimodal chat and instruction following","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-07-24","last_updated":"2026-08-01","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":8192},"status":"beta","cost":{"input":0.87,"output":3.1}},"mistralai/Mistral-Small-4-119B-2603":{"id":"mistralai/Mistral-Small-4-119B-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.25,"output":0.93}},"mistralai/Ministral-3-14B-Instruct-2512":{"id":"mistralai/Ministral-3-14B-Instruct-2512","name":"Ministral 3 14B Instruct","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":25600},"status":"beta","cost":{"input":0.37,"output":0.5}},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8":{"id":"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8","name":"Nemotron 3 Nano 30B A3B FP8","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":262144},"status":"beta","cost":{"input":0.06,"output":0.25}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":32768},"cost":{"input":0.25,"output":0.5}},"Qwen/Qwen3.5-122B-A10B-FP8":{"id":"Qwen/Qwen3.5-122B-A10B-FP8","name":"Qwen3.5 122B-A10B FP8","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65536},"cost":{"input":0.5,"output":3.97}},"Qwen/Qwen3.5-397B-A17B-FP8":{"id":"Qwen/Qwen3.5-397B-A17B-FP8","name":"Qwen3.5 397B-A17B FP8","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65536},"status":"beta","cost":{"input":0.99,"output":4.46}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"status":"beta","cost":{"input":0.74,"output":3.72}}}},"inception":{"id":"inception","env":["INCEPTION_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inceptionlabs.ai/v1/","name":"Inception","doc":"https://platform.inceptionlabs.ai/docs","models":{"mercury-edit-2":{"id":"mercury-edit-2","name":"Mercury Edit 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}}}},"lilac":{"id":"lilac","env":["LILAC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.getlilac.com/v1","name":"Lilac","doc":"https://docs.getlilac.com/inference/models","models":{"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":262100},"cost":{"input":0.11,"output":0.35}},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":524288},"cost":{"input":0.9,"output":3,"cache_read":0.27}},"minimaxai/minimax-m3":{"id":"minimaxai/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.28,"output":1.1,"cache_read":0.05}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.2}}}},"fastrouter":{"id":"fastrouter","env":["FASTROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://go.fastrouter.ai/api/v1","name":"FastRouter","doc":"https://fastrouter.ai/models","models":{"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen3 Coder","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1.2}},"deepseek-ai/deepseek-r1-distill-llama-70b":{"id":"deepseek-ai/deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.14}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"google/veo3.1-fast":{"id":"google/veo3.1-fast","name":"Veo 3.1 Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/veo3.1":{"id":"google/veo3.1","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12}},"google/veo3.1-lite":{"id":"google/veo3.1-lite","name":"Veo 3.1 Lite","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9}},"google/imagen-4.0-ultra":{"id":"google/imagen-4.0-ultra","name":"Imagen 4 Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/imagen-4.0-fast":{"id":"google/imagen-4.0-fast","name":"Imagen 4 Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31}},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.0375}},"bytedance/seedance-2":{"id":"bytedance/seedance-2","name":"Seedance 2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":4096,"output":0}},"wanx/wan-v2-6":{"id":"wanx/wan-v2-6","name":"Wan 2.6","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":true,"limit":{"context":400000,"output":0}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48}},"leonardo-ai/lucid-realism":{"id":"leonardo-ai/lucid-realism","name":"Lucid Realism","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"lucid","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0}},"leonardo-ai/lucid-origin":{"id":"leonardo-ai/lucid-origin","name":"Lucid Origin","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"lucid","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5}},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.75,"cache_write":15}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-realtime-1.5":{"id":"openai/gpt-realtime-1.5","name":"GPT Realtime 1.5","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","audio","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32000,"output":4096},"cost":{"input":4,"output":16}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.05,"output":0.2}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5}},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5}},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.55,"output":2.2}},"sarvam/sarvam-105b":{"id":"sarvam/sarvam-105b","name":"Sarvam 105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16}},"sarvam/sarvam-30b":{"id":"sarvam/sarvam-30b","name":"Sarvam 30B","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.1}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.95,"output":3.15}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.05,"output":3.5}}}},"cloudflare-ai-gateway":{"id":"cloudflare-ai-gateway","env":["CLOUDFLARE_API_TOKEN","CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_GATEWAY_ID"],"npm":"ai-gateway-provider","name":"Cloudflare AI Gateway","doc":"https://developers.cloudflare.com/ai-gateway/","models":{"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25}},"alibaba/qwen3.5-397b-a17b":{"id":"alibaba/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"alibaba/qwen3-max":{"id":"alibaba/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6}},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25}},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.25,"cache_write":3.125}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":5,"cache_read":0.625}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":5,"output":30}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2}}}},"github-copilot":{"id":"github-copilot","env":["GITHUB_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.githubcopilot.com","name":"GitHub Copilot","doc":"https://docs.github.com/en/copilot","models":{"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":64000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"claude-opus-4.7":{"id":"claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":32000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":224000,"output":32000},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"claude-sonnet-4.6":{"id":"claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":32000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":372000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":256,"max":32000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"mai-code-1-flash-picker":{"id":"mai-code-1-flash-picker","name":"MAI-Code-1-Flash","description":"Microsoft coding model built for fast, efficient assistance in everyday developer workflows","family":"mai","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-06-02","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":128000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":136000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":256,"max":24000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":128000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"mai-code-1.1-flash":{"id":"mai-code-1.1-flash","name":"MAI-Code-1.1-Flash","description":"Microsoft coding model with native vision support, optimized for fast and efficient software development","family":"mai","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":128000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":372000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":264000,"input":128000,"output":64000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-fable-5.1":{"id":"claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}}}},"zhipuai":{"id":"zhipuai","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://open.bigmodel.cn/api/paas/v4","name":"Zhipu AI","doc":"https://docs.z.ai/guides/overview/pricing","models":{"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":5,"output":22,"cache_read":1.2,"cache_write":0}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}}}},"jalapeno":{"id":"jalapeno","env":["JALAPENO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.jalapeno-cloud.ai/v1","name":"Jalapeno Cloud","doc":"https://www.jalapeno-cloud.ai/docs/","models":{"Qwen3.5-27B":{"id":"Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4}},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28}},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.38,"output":4.4}},"Qwen3.5-122B-A10B":{"id":"Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2}},"Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":129024,"output":32768},"cost":{"input":0.3,"output":1.5}},"Kimi-K2.5":{"id":"Kimi-K2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":180224},"cost":{"input":0.6,"output":3}},"Kimi-K2.7-Code":{"id":"Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":271360,"output":262144},"cost":{"input":0.95,"output":4}},"Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":129024,"output":32768},"cost":{"input":0.15,"output":1.5}},"Qwen3.5-397B-A17B":{"id":"Qwen3.5-397B-A17B","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"Qwen3.5-35B-A3B":{"id":"Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2}},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2}},"Hy3":{"id":"Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58}},"Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen3-VL-235B-A22B-Thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95}},"Qwen3-Next-80B-A3B-Thinking":{"id":"Qwen3-Next-80B-A3B-Thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5}},"Kimi-K3":{"id":"Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15}},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.6,"output":3.38}}}},"perplexity-agent":{"id":"perplexity-agent","env":["PERPLEXITY_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.perplexity.ai/v1","name":"Perplexity Agent","doc":"https://docs.perplexity.ai/docs/agent-api/models","models":{"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32000},"cost":{"input":0.25,"output":2.5}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"tiers":[{"input":0.5,"output":3,"cache_read":0.05,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.5,"output":3,"cache_read":0.05}}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"moonshot-ai/kimi-k2.7-code":{"id":"moonshot-ai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-07-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshot-ai/kimi-k3":{"id":"moonshot-ai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"xai/grok-4-1-fast-non-reasoning":{"id":"xai/grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.25,"output":2.5,"cache_read":0.0625}}}},"fireworks-ai":{"id":"fireworks-ai","env":["FIREWORKS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.fireworks.ai/inference/v1/","name":"Fireworks AI","doc":"https://fireworks.ai/docs/","models":{"accounts/fireworks/routers/kimi-k3-fast":{"id":"accounts/fireworks/routers/kimi-k3-fast","name":"Kimi K3 Fast","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45}},"accounts/fireworks/routers/glm-5p2-fast":{"id":"accounts/fireworks/routers/glm-5p2-fast","name":"GLM 5.2 Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-26","last_updated":"2026-06-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":131072},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"accounts/fireworks/models/qwen3p7-plus":{"id":"accounts/fireworks/models/qwen3p7-plus","name":"Qwen 3.7 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08}},"accounts/fireworks/models/deepseek-v4-flash-vision-exp":{"id":"accounts/fireworks/models/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"accounts/fireworks/models/deepseek-v4-pro-0813":{"id":"accounts/fireworks/models/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"accounts/fireworks/models/deepseek-v4-flash-0731":{"id":"accounts/fireworks/models/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"accounts/fireworks/models/minimax-m3":{"id":"accounts/fireworks/models/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"accounts/fireworks/models/kimi-k2p6":{"id":"accounts/fireworks/models/kimi-k2p6","name":"Kimi K2.6","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"accounts/fireworks/models/nemotron-3-ultra-nvfp4":{"id":"accounts/fireworks/models/nemotron-3-ultra-nvfp4","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.119}},"accounts/fireworks/models/kimi-k3":{"id":"accounts/fireworks/models/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"accounts/fireworks/models/glm-5p3":{"id":"accounts/fireworks/models/glm-5p3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"accounts/fireworks/models/kimi-k2p7-code":{"id":"accounts/fireworks/models/kimi-k2p7-code","name":"Kimi K2.7 Code","description":"Kimi coding model for software agents, refactors, and repository reasoning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"accounts/fireworks/models/glm-5p3-flash":{"id":"accounts/fireworks/models/glm-5p3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-09-04","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"accounts/fireworks/models/muse-glimmer-30b":{"id":"accounts/fireworks/models/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"accounts/fireworks/models/inkling":{"id":"accounts/fireworks/models/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"accounts/fireworks/models/gpt-oss-120b":{"id":"accounts/fireworks/models/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"accounts/fireworks/models/glm-5p2":{"id":"accounts/fireworks/models/glm-5p2","name":"GLM 5.2","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14}},"accounts/fireworks/models/qwen3p8-max":{"id":"accounts/fireworks/models/qwen3p8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25}},"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b":{"id":"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}}}},"opper":{"id":"opper","env":["OPPER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.opper.ai/v3/compat","name":"Opper","doc":"https://opper.ai/models","models":{"minimax/m3":{"id":"minimax/m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":524288}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"gemini/gemini-3.1-pro-preview":{"id":"gemini/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini/gemini-3.5-flash":{"id":"gemini/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"gemini/gemini-3.5-flash-lite":{"id":"gemini/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemini/gemini-3-flash-preview":{"id":"gemini/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-5.3-chat-latest":{"id":"openai/gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2}},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"mistral/mistral-small-2603":{"id":"mistral/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6}},"vertexai/gemini-3.7-flash-eu":{"id":"vertexai/gemini-3.7-flash-eu","name":"Gemini 3.7 Flash (EU)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"vertexai/gemini-3.7-flash":{"id":"vertexai/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}}}},"stackit":{"id":"stackit","env":["STACKIT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1","name":"STACKIT","doc":"https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models","models":{"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-05-17","last_updated":"2025-05-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":37000,"output":4096},"cost":{"input":0.53,"output":0.76}},"Qwen/Qwen3-VL-Embedding-8B":{"id":"Qwen/Qwen3-VL-Embedding-8B","name":"Qwen3-VL Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.09,"output":0.09}},"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8","name":"Qwen3-VL 235B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":218000,"output":16384},"cost":{"input":1.76,"output":2.05}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.53,"output":0.76}},"intfloat/e5-mistral-7b-instruct":{"id":"intfloat/e5-mistral-7b-instruct","name":"E5 Mistral 7B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.02,"output":0.02}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.29}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":8192},"cost":{"input":0.53,"output":0.76}},"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{"id":"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.53,"output":0.76}}}},"crof":{"id":"crof","env":["CROF_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://crof.ai/v1","name":"CrofAI","doc":"https://crof.ai/docs","models":{"greg-2-super":{"id":"greg-2-super","name":"Greg 2 Super","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-14","last_updated":"2026-06-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":1.5,"output":5,"cache_read":0.25}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro (0813)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":0.8,"cache_read":0.01}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash (New)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.08,"output":0.1,"cache_read":0.003}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-13","last_updated":"2026-03-13","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.04,"output":0.15,"cache_read":0.008}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.5,"cache_read":0.03}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.5,"output":1.99,"cache_read":0.05}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.3,"output":1.05,"cache_read":0.05}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.12,"output":0.21,"cache_read":0.003}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.55,"output":2.25,"cache_read":0.05}},"greg-1-mini":{"id":"greg-1-mini","name":"Greg 1 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":0.07,"output":0.15,"cache_read":0.01}},"greg-2-ultra":{"id":"greg-2-ultra","name":"Greg 2 Ultra","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-14","last_updated":"2026-06-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":3,"output":10,"cache_read":0.5}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":1.75,"cache_read":0.07}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.5,"cache_read":0.04}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2,"output":8,"cache_read":0.25}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":163840},"cost":{"input":0.18,"output":0.35,"cache_read":0.04}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM 5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.07,"output":0.22,"cache_read":0.01}},"greg-rp":{"id":"greg-rp","name":"Greg (Roleplay)","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.45,"output":2.15,"cache_read":0.08,"cache_write":0}},"kimi-k3-eco":{"id":"kimi-k3-eco","name":"Kimi K3 Eco","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":1,"output":4,"cache_read":0.1}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":0.8,"cache_read":0.003}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.4,"output":1.4,"cache_read":0.06}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.4,"output":0.8,"cache_read":0.003,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}}}},"crusoe":{"id":"crusoe","env":["CRUSOE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inference.crusoecloud.com/v1","name":"Crusoe","doc":"https://docs.crusoecloud.com/managed-inference/overview","models":{"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.5,"cache_read":0.25}},"nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B":{"id":"nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.3,"output":1.83,"cache_read":0.3,"input_audio":0.5}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4,"cache_read":0.14}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.25,"output":0.75,"cache_read":0.13}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2,"cache_read":0.05}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.35}},"zai/GLM-5.1":{"id":"zai/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4.4,"cache_read":0.25}},"zai/GLM-5.2":{"id":"zai/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}}}},"empiriolabs":{"id":"empiriolabs","env":["EMPIRIOLABS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.empiriolabs.ai/v1","name":"EmpirioLabs AI","doc":"https://docs.empiriolabs.ai","models":{"glm-5-1":{"id":"glm-5-1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":38912}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.165,"tiers":[{"input":1.1,"output":3.851,"cache_read":0.22,"tier":{"type":"context","size":32000}}]}},"qwen3-5-9b":{"id":"qwen3-5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13,"cache_read":0.045}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":1.32}},"kimi-k2-7-code-highspeed":{"id":"kimi-k2-7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":1.9,"output":8,"cache_read":1.9}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.424,"output":1.272,"cache_read":0.424}},"mistral-small-4":{"id":"mistral-small-4","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.15}},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax M2.7 Highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"qwen3-8-max-0902":{"id":"qwen3-8-max-0902","name":"Qwen3.8 Max 0902","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2}},"seed-2-0-pro":{"id":"seed-2-0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.63,"output":3.79,"cache_read":0.63,"tiers":[{"input":1.26,"output":7.58,"cache_read":1.26,"tier":{"type":"context","size":128000}}]}},"qwen3-7-plus":{"id":"qwen3-7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":256000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.4,"tiers":[{"input":1.2,"output":4.8,"cache_read":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":1.2}}},"qwen3-6-flash":{"id":"qwen3-6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":64000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.25,"tiers":[{"input":1,"output":4,"cache_read":1,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1,"output":4,"cache_read":1}}},"qwen3-5-27b":{"id":"qwen3-5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.086,"output":0.688,"cache_read":0.086,"tiers":[{"input":0.258,"output":2.064,"cache_read":0.258,"tier":{"type":"context","size":128000}}]}},"glm-4-6v-flash":{"id":"glm-4-6v-flash","name":"GLM 4.6V Flash","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0}},"seed-2-0-mini":{"id":"seed-2-0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.12,"output":0.5,"cache_read":0.12,"tiers":[{"input":0.24,"output":1,"cache_read":0.24,"tier":{"type":"context","size":128000}}]}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":524288},"cost":{"input":0.225,"output":0.9,"cache_read":0.045,"tiers":[{"input":0.45,"output":1.8,"cache_read":0.09,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.45,"output":1.8,"cache_read":0.09}}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.14}},"qwen3-5-4b":{"id":"qwen3-5-4b","name":"Qwen3.5 4B","description":"Qwen3.5 4B is a low-cost multimodal reasoning model with 256K context, image and video input, function tools, and structured output.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-02","last_updated":"2026-03-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.04,"output":0.07,"cache_read":0.02}},"glm-5-3":{"id":"glm-5-3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4}},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.95}},"fugu-ultra-v1-1":{"id":"fugu-ultra-v1-1","name":"Fugu Ultra v1.1","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"step-3-5-flash-2603":{"id":"step-3-5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"qwen3-5-397b-a17b":{"id":"qwen3-5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":1.032,"cache_read":0.172,"tiers":[{"input":0.43,"output":2.58,"cache_read":0.43,"tier":{"type":"context","size":128000}}]}},"seed-2-1-turbo":{"id":"seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.63,"output":3.13,"cache_read":0.63}},"deepseek-v3-2":{"id":"deepseek-v3-2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.57,"output":1.71,"cache_read":0.57}},"glm-4-7-flash":{"id":"glm-4-7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0}},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16000},"cost":{"input":0.8939,"output":3.7131,"cache_read":0.1788}},"gemma-4-26b-a4b":{"id":"gemma-4-26b-a4b","name":"Gemma 4 26B-A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.29,"cache_read":0.025}},"qwen3-6-35b-a3b":{"id":"qwen3-6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.07,"output":0.42,"cache_read":0.035}},"qwen3-5-35b-a3b":{"id":"qwen3-5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.057,"output":0.459,"cache_read":0.057,"tiers":[{"input":0.229,"output":1.835,"cache_read":0.229,"tier":{"type":"context","size":128000}}]}},"muse-spark-1-2":{"id":"muse-spark-1-2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1}},"qwen3-6-plus":{"id":"qwen3-6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.5,"tiers":[{"input":2,"output":6,"cache_read":2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":2}}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":3}},"qwen3-5-122b-a10b":{"id":"qwen3-5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.115,"output":0.917,"cache_read":0.115,"tiers":[{"input":0.287,"output":2.294,"cache_read":0.287,"tier":{"type":"context","size":128000}}]}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.08,"output":5.52,"cache_read":1.08,"tiers":[{"input":2.16,"output":11.04,"cache_read":2.16,"tier":{"type":"context","size":32000}},{"input":2.7,"output":13.8,"cache_read":2.7,"tier":{"type":"context","size":128000}}]}},"glm-4-5-flash":{"id":"glm-4-5-flash","name":"GLM 4.5 Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":98304},"cost":{"input":0,"output":0}},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.075}},"step-3-5-flash":{"id":"step-3-5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05}},"qwen3-6-27b":{"id":"qwen3-6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.412564,"output":2.475384,"cache_read":0.412564}},"qwen3-8-27b":{"id":"qwen3-8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.17,"output":0.5,"cache_read":0.08}},"muse-spark-1-1":{"id":"muse-spark-1-1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1}},"glm-5-2":{"id":"glm-5-2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4}},"seed-2-0-code":{"id":"seed-2-0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.4,"tiers":[{"input":0.8,"output":4.8,"cache_read":0.8,"tier":{"type":"context","size":128000}}]}},"qwen3-7-max":{"id":"qwen3-7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":64000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":2.5}},"mimo-v2-5":{"id":"mimo-v2-5","name":"MiMo V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.7,"output":1.4,"cache_read":0.014}},"qwen3-5-flash":{"id":"qwen3-5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.09,"output":0.368,"cache_read":0.09}},"seed-2-0-lite":{"id":"seed-2-0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.31,"output":2.5,"cache_read":0.31,"tiers":[{"input":0.62,"output":5,"cache_read":0.62,"tier":{"type":"context","size":128000}}]}},"muse-spark-1-3":{"id":"muse-spark-1-3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1}},"mimo-v2-5-pro":{"id":"mimo-v2-5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.175,"output":4.35,"cache_read":0.018}},"step-3-7-flash":{"id":"step-3-7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3,"cache_read":1.65}},"fugu-ultra-v1-0":{"id":"fugu-ultra-v1-0","name":"Fugu Ultra v1.0","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":7.5,"output":45,"cache_read":1.5,"tiers":[{"input":15,"output":67.5,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":15,"output":67.5,"cache_read":3}}},"qwen3-8-max":{"id":"qwen3-8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.03}},"qwen3-5-plus":{"id":"qwen3-5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.36,"output":2.21,"cache_read":0.36,"tiers":[{"input":1.08,"output":6.62,"cache_read":1.08,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.08,"output":6.62,"cache_read":1.08}}},"qwen3-7-flash":{"id":"qwen3-7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.02,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.04,"tier":{"type":"context","size":256000}}]}},"qwen3-8-flash":{"id":"qwen3-8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.16}},"qwen3-6-max-preview":{"id":"qwen3-6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.31,"output":7.88,"cache_read":1.31,"tiers":[{"input":1.97,"output":11.82,"cache_read":1.97,"tier":{"type":"context","size":128000}}]}}}},"klokintegration":{"id":"klokintegration","env":["KLOKINTEGRATION_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-gw.klok.ipaas.se/proxy/kloker-key/v1","name":"klokintegration.se","doc":"https://klokintegration.se/docs/ai-api","models":{"Kloker-Integration-Developer":{"id":"Kloker-Integration-Developer","name":"Kloker Integration Developer","description":"Knows the customer integration environment and Klok best practices. Opinionated about implementation. The gateway runs ecosystem lookup tools server-side and appends a system-prompt injection. Client system prompts and OpenAI tool calls are preserved.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}},"Kloker-Integration-Architect":{"id":"Kloker-Integration-Architect","name":"Kloker Integration Architect","description":"Knows the customer integration environment and Klok best practices. Opinionated about structure. The gateway runs ecosystem lookup tools server-side and appends a system-prompt injection (data contracts, CloudEvents, event-driven flows). Client system prompts and OpenAI tool calls are preserved.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}},"Kloker":{"id":"Kloker","name":"Kloker","description":"Cheap general model with a clean context. Nothing from the customer environment is packed in. It tracks the current best open source model. The Klok team verifies it and upgrades it periodically.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}}}},"privatemode-ai":{"id":"privatemode-ai","env":["PRIVATEMODE_API_KEY","PRIVATEMODE_ENDPOINT"],"npm":"@ai-sdk/openai-compatible","api":"http://localhost:8080/v1","name":"Privatemode AI","doc":"https://docs.privatemode.ai/api/overview","models":{"kimi-latest":{"id":"kimi-latest","name":"Kimi (latest)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":262144},"cost":{"input":1.791,"output":8.9436,"cache_read":0.1733}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":262144},"cost":{"input":1.791,"output":8.9436,"cache_read":0.1733}},"voxtral-mini-3b":{"id":"voxtral-mini-3b","name":"Voxtral Mini 3B","description":"Speech-to-text model for audio transcription, translation, and audio understanding","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07","last_updated":"2025-07","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.00462,"output":0}},"qwen3-embedding-4b":{"id":"qwen3-embedding-4b","name":"Qwen3-Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-06","last_updated":"2025-06-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2560},"cost":{"input":0.1502,"output":0}},"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper large-v3","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0.01618,"output":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.4969,"output":1.9644,"cache_read":0.0462}},"deepseek-ocr-2":{"id":"deepseek-ocr-2","name":"DeepSeek OCR 2","description":"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"status":"beta","cost":{"input":0.8897,"output":1.4675,"cache_read":0.0924}}}},"minimax-coding-plan":{"id":"minimax-coding-plan","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.io/anthropic/v1","name":"MiniMax Token Plan (minimax.io)","doc":"https://platform.minimax.io/docs/token-plan/intro","models":{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"inferx":{"id":"inferx","env":["INFERX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://model.inferx.net/endpoints/v1","name":"InferX","doc":"https://model.inferx.net/endpoints","models":{"gemma-4-31B-it-fp8":{"id":"gemma-4-31B-it-fp8","name":"Gemma 4 31B IT FP8","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"Qwen3-Coder-Next-FP8-no-thinking":{"id":"Qwen3-Coder-Next-FP8-no-thinking","name":"Qwen3-Coder-Next-FP8-no-thinking","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":260000,"output":65536},"cost":{"input":0,"output":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"deepseek-v4-flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0}},"Devstral-2-123B-Instruct-2512-int4-AutoRound":{"id":"Devstral-2-123B-Instruct-2512-int4-AutoRound","name":"Devstral-2-123B-Instruct-2512-int4-AutoRound","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0,"output":0}},"Agents-A1":{"id":"Agents-A1","name":"Agents-A1","description":"35B MoE agentic model built for long-horizon search, engineering, and scientific reasoning tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-06-26","last_updated":"2026-06-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0}},"Ornith-1.0-35B-FP8":{"id":"Ornith-1.0-35B-FP8","name":"Ornith-1.0-35B-FP8","description":"Large coding-reasoning model for agentic software tasks and RL search","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-25","last_updated":"2026-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0}},"Qwen3.6-35B-A3B-FP8":{"id":"Qwen3.6-35B-A3B-FP8","name":"Qwen3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0}},"Qwen3.6-27B-FP8":{"id":"Qwen3.6-27B-FP8","name":"Qwen3.6 27B FP8","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"Qwen3.6-35B-A3B-fp8-no-thinking":{"id":"Qwen3.6-35B-A3B-fp8-no-thinking","name":"Qwen3.6-35B-A3B-fp8-no-thinking","description":"Qwen3.6-35B-A3B-fp8 disable thinking","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0}},"Qwen3-Coder-Next-FP8":{"id":"Qwen3-Coder-Next-FP8","name":"Qwen3 Coder Next FP8","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256144,"output":65536},"cost":{"input":0,"output":0}},"Qwen3-Embedding-8B":{"id":"Qwen3-Embedding-8B","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":0},"cost":{"input":0,"output":0}},"mimo-v25":{"id":"mimo-v25","name":"mimo-v25","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0}}}},"umans-ai-coding-plan":{"id":"umans-ai-coding-plan","env":["UMANS_AI_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.code.umans.ai/v1","name":"Umans AI Coding Plan","doc":"https://app.umans.ai/offers/code/docs","models":{"umans-qwen3.6-35b-a3b":{"id":"umans-qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-glm-5.2":{"id":"umans-glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":405504,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-kimi-k3":{"id":"umans-kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-kimi-k2.7":{"id":"umans-kimi-k2.7","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-deepseek-v4-flash-0731":{"id":"umans-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-coder":{"id":"umans-coder","name":"Umans Coder","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-flash":{"id":"umans-flash","name":"Umans Flash","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"umans-deepseek-v4-pro-0813":{"id":"umans-deepseek-v4-pro-0813","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"databricks":{"id":"databricks","env":["DATABRICKS_HOST","DATABRICKS_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1","name":"Databricks","doc":"https://docs.databricks.com/aws/en/machine-learning/foundation-models/","models":{"databricks-claude-opus-4-5":{"id":"databricks-claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"databricks-claude-sonnet-4-6":{"id":"databricks-claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"databricks-gemini-3-pro":{"id":"databricks-gemini-3-pro","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"databricks-kimi-k2-7-code":{"id":"databricks-kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"databricks-gpt-5-6-luna":{"id":"databricks-gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"tiers":[{"input":2,"output":9,"cache_read":0.2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2}}},"databricks-claude-opus-4-1":{"id":"databricks-claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"databricks-gpt-5-mini":{"id":"databricks-gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"databricks-gemini-2-5-flash":{"id":"databricks-gemini-2-5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"databricks-claude-haiku-4-5":{"id":"databricks-claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"databricks-claude-sonnet-4-5":{"id":"databricks-claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"databricks-gpt-5-4":{"id":"databricks-gpt-5-4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"databricks-gpt-5-6-sol":{"id":"databricks-gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"databricks-glm-5-2":{"id":"databricks-glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"databricks-gpt-5-4-nano":{"id":"databricks-gpt-5-4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"databricks-gpt-5-5":{"id":"databricks-gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"databricks-gemini-3-1-flash-lite":{"id":"databricks-gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"databricks-gemini-3-flash":{"id":"databricks-gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"databricks-claude-opus-4-7":{"id":"databricks-claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"databricks-claude-opus-4-6":{"id":"databricks-claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"databricks-claude-sonnet-4":{"id":"databricks-claude-sonnet-4","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"databricks-gpt-5-1":{"id":"databricks-gpt-5-1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"databricks-gpt-oss-20b":{"id":"databricks-gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2}},"databricks-gpt-5-4-mini":{"id":"databricks-gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"databricks-gemini-3-1-pro":{"id":"databricks-gemini-3-1-pro","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"databricks-gpt-5-6-terra":{"id":"databricks-gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"databricks-gemini-2-5-pro":{"id":"databricks-gemini-2-5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"databricks-gpt-5":{"id":"databricks-gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"databricks-gpt-5-nano":{"id":"databricks-gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"databricks-gpt-oss-120b":{"id":"databricks-gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.072,"output":0.28}},"databricks-gpt-5-2":{"id":"databricks-gpt-5-2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}}}},"modal":{"id":"modal","env":["MODAL_PROXY_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.us-west.modal.direct/v1","name":"Modal","doc":"https://modal.com/docs/guide/endpoints","models":{"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.45,"output":1.5,"cache_read":0.09}},"thinkingmachines/Inkling-NVFP4":{"id":"thinkingmachines/Inkling-NVFP4","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.2,"output":5,"cache_read":0.27}},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8-Max","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"reasoning":15,"cache_read":0.3}}}},"lucidquery":{"id":"lucidquery","env":["LUCIDQUERY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lucidquery.com/v1","name":"LucidQuery","doc":"https://lucidquery.com/docs","models":{"lucidquery-nexus-coder":{"id":"lucidquery-nexus-coder","name":"LucidQuery Nexus Coder","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"lucid","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-08-01","release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":250000,"output":60000},"cost":{"input":2,"output":5}},"lucidquery-agi-01-frontier":{"id":"lucidquery-agi-01-frontier","name":"AGI-01 Frontier","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-06-05","release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":120000},"cost":{"input":4.5,"output":22}},"lucidquery-agi-01-swift":{"id":"lucidquery-agi-01-swift","name":"AGI-01 Swift","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-06-05","release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":120000},"cost":{"input":2.5,"output":15}},"lucidnova-rf1-100b":{"id":"lucidnova-rf1-100b","name":"LucidNova RF1 100B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-09-16","release_date":"2024-12-28","last_updated":"2025-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":120000,"output":8000},"cost":{"input":2,"output":5}}}},"atomic-chat":{"id":"atomic-chat","env":["ATOMIC_CHAT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:1337/v1","name":"Atomic Chat","doc":"https://atomic.chat","models":{"Meta-Llama-3_1-8B-Instruct-GGUF":{"id":"Meta-Llama-3_1-8B-Instruct-GGUF","name":"Meta Llama 3.1 8B Instruct (GGUF)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0,"output":0}},"Qwen3_5-9B-Q4_K_M":{"id":"Qwen3_5-9B-Q4_K_M","name":"Qwen 3.5 9B (Q4_K_M)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"Qwen3_5-9B-MLX-4bit":{"id":"Qwen3_5-9B-MLX-4bit","name":"Qwen 3.5 9B (MLX 4-bit)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gemma-4-E4B-it-MLX-4bit":{"id":"gemma-4-E4B-it-MLX-4bit","name":"Gemma 4 E4B Instruct (MLX 4-bit)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gemma-4-E4B-it-IQ4_XS":{"id":"gemma-4-E4B-it-IQ4_XS","name":"Gemma 4 E4B Instruct (IQ4_XS)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}}}},"umans-ai":{"id":"umans-ai","env":["UMANS_AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.code.umans.ai/v1","name":"Umans AI","doc":"https://app.umans.ai/offers/code/docs/orgs","models":{"umans-glm-5.2":{"id":"umans-glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":405504,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"umans-kimi-k3":{"id":"umans-kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"umans-kimi-k2.7":{"id":"umans-kimi-k2.7","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"umans-deepseek-v4-flash-0731":{"id":"umans-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"umans-coder":{"id":"umans-coder","name":"Umans Coder","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"umans-flash":{"id":"umans-flash","name":"Umans Flash","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1,"cache_read":0.05}},"umans-deepseek-v4-pro-0813":{"id":"umans-deepseek-v4-pro-0813","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}}}},"sakana":{"id":"sakana","env":["SAKANA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.sakana.ai/v1","name":"Sakana AI","doc":"https://console.sakana.ai/models","models":{"fugu":{"id":"fugu","name":"Fugu","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"}},"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"fugu-ultra-20260615":{"id":"fugu-ultra-20260615","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"sakana-namazu":{"id":"sakana-namazu","name":"Sakana Namazu","description":"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15}}}},"deepinfra":{"id":"deepinfra","env":["DEEPINFRA_API_KEY"],"npm":"@ai-sdk/deepinfra","name":"Deep Infra","doc":"https://deepinfra.com/models","models":{"ByteDance/Seed-2.0-mini":{"id":"ByteDance/Seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02,"tiers":[{"input":0.2,"output":0.8,"cache_read":0.2,"tier":{"type":"context","size":128000}}]}},"ByteDance/Seed-2.0-code":{"id":"ByteDance/Seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":1,"output":6,"cache_read":0.2,"tier":{"type":"context","size":128000}}]}},"ByteDance/Seed-2.0-pro":{"id":"ByteDance/Seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":1,"output":6,"cache_read":0.2,"tier":{"type":"context","size":128000}}]}},"stepfun-ai/Step-3.7-Flash":{"id":"stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0.09,"output":0.18,"cache_read":0.018}},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.24,"output":0.9,"cache_read":0.135}},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"id":"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.14}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.08,"output":0.18,"cache_read":0.016}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.25,"output":0.95,"cache_read":0.13}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15,"cache_read":0.35}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":64000},"cost":{"input":0.26,"output":0.38,"cache_read":0.13}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":1.3,"output":2.6,"cache_read":0.1}},"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{"id":"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.2,"output":0.8}},"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5","name":"Llama 3.3 Nemotron Super 49B v1.5","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0.4,"output":0.4}},"nvidia/Nemotron-3-Nano-30B-A3B":{"id":"nvidia/Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38}},"google/gemma-4-E4B-it":{"id":"google/gemma-4-E4B-it","name":"Gemma 4 E4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.02,"output":0.1}},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":1.05,"output":3.5,"cache_read":0.205}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.12}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.75,"output":2.4,"cache_read":0.14}},"zai-org/GLM-4.7-Flash":{"id":"zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.4,"output":1.75,"cache_read":0.08}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.6,"output":2.08,"cache_read":0.12}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.1}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1}},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16}},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"tiers":[{"input":5,"output":15,"cache_read":1,"tier":{"type":"context","size":32000}},{"input":6.25,"output":18.5,"cache_read":1.25,"tier":{"type":"context","size":128000}}]}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.04}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.6}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo","name":"Qwen3 Coder 480B A35B Instruct Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1,"cache_read":0.1}},"Qwen/Qwen3.8-Max":{"id":"Qwen/Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":1.65,"output":4.951,"cache_read":0.206}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15}},"Qwen/Qwen3-30B-A3B":{"id":"Qwen/Qwen3-30B-A3B","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.4}},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.2}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11}},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":1.1}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen 3.5 397B A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-01","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.45,"output":3,"cache_read":0.22}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen 3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-01","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.14,"output":1,"cache_read":0.05}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.1,"output":0.95}},"Qwen/Qwen3-Max":{"id":"Qwen/Qwen3-Max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24,"tiers":[{"input":2.4,"output":12,"cache_read":0.48,"tier":{"type":"context","size":32000}},{"input":3,"output":15,"cache_read":0.6,"tier":{"type":"context","size":128000}}]}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"status":"deprecated","cost":{"input":0.15,"output":1.15,"cache_read":0.03}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.056}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.25,"output":1,"cache_read":0.05}},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{"id":"meta-llama/Llama-4-Scout-17B-16E-Instruct","name":"Llama 4 Scout 17B","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0.2,"output":0.8}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.03,"output":0.14}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.037,"output":0.17}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.68,"output":3.4,"cache_read":0.136}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.75,"output":3.5,"cache_read":0.15}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.85,"output":14.25,"cache_read":0.285}},"tencent/Hy3":{"id":"tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":1,"output":3,"cache_read":0.2}},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.4,"output":2,"cache_read":0.08}}}},"wafer.ai":{"id":"wafer.ai","env":["WAFER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://pass.wafer.ai/v1","name":"Wafer","doc":"https://docs.wafer.ai/wafer-pass","models":{"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"General Language Model 5.1 — high-quality bilingual (EN/ZH) generation with strong coding and reasoning capabilities.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.1,"cache_write":0}},"glm5.2-fast":{"id":"glm5.2-fast","name":"GLM5.2-Fast","description":"The same model served for high TPS.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":10.25,"cache_read":0.5,"cache_write":0}},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.1,"cache_read":0.2,"cache_write":0}},"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Kimi K2.6 sparse MoE model with a 262K context window. Available serverless and not included in standard Wafer Pass. Non-ZDR only: requests with `Wafer-ZDR: required` are rejected.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":1.14,"output":4.8,"cache_read":0.19,"cache_write":0}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.07,"cache_write":0,"tiers":[{"input":0.66,"output":2.64,"cache_read":0.13,"cache_write":0,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.66,"output":2.64,"cache_read":0.13,"cache_write":0}}}}},"kilo":{"id":"kilo","env":["KILO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.kilo.ai/api/gateway","name":"Kilo Gateway","doc":"https://kilo.ai","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.25,"output":3.75,"cache_read":0.125,"cache_write":1.5625}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.65,"output":3.25,"cache_read":0.13,"cache_write":0.8125}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen: Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.23,"output":2.3}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.15}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.0975,"output":0.78}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375}},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.2275,"output":0.91}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.195,"output":1.56}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen3.8 27B is an open-weight dense vision-language model from Qwen. It is suited for coding, professional workflows, research, multimodal interaction, and long-running agent tasks, with flexible thinking that can be...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.425,"output":2.55,"cache_read":0.085,"cache_write":0.53125}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1625,"output":1.3}},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen: Qwen3.5 Plus 2026-04-20","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28}},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen: Qwen3.5 Plus 2026-02-15","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56}},"qwen/qwen-plus-2025-07-28":{"id":"qwen/qwen-plus-2025-07-28","name":"Qwen: Qwen Plus 0728","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3 Coder 480B A35B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.975,"output":4.875}},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen: Qwen2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-02-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.3,"output":1.5}},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.2925,"output":1.4625}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen: Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.1495,"output":0.598}},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen: Qwen3.5-Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.39,"output":2.34}},"qwen/qwen3-vl-8b-thinking":{"id":"qwen/qwen3-vl-8b-thinking","name":"Qwen: Qwen3 VL 8B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.18,"output":2.1}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.45,"output":2.7}},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Qwen3.7 Flash is a vision-language reasoning model from Alibaba. It is suited for multimodal agents, visual coding, search, and computer interaction, with strengths in object recognition, spatial understanding, and real-world...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038}},"qwen/qwen3-30b-a3b-thinking-2507":{"id":"qwen/qwen3-30b-a3b-thinking-2507","name":"Qwen: Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":81920,"output":32768},"cost":{"input":0.2,"output":2.4}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.9,"cache_read":0.05}},"qwen/qwen3-max-thinking":{"id":"qwen/qwen3-max-thinking","name":"Qwen: Qwen3 Max Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-09","last_updated":"2026-02-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.78,"output":3.9}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.78,"output":3.9,"cache_read":0.156,"cache_write":0.975}},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen: Qwen3 VL 8B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.117,"output":0.455}},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen: Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.13,"output":0.52}},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.26,"output":2.08}},"qwen/qwen-2.5-coder-32b-instruct":{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen: Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":0.13,"output":0.52}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.13,"output":0.52}},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen: Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen3.8 Flash is a multimodal reasoning model from Alibaba. It is suited for coding assistance, agentic workflows, visual understanding, document and codebase analysis, desktop interaction, chart analysis, and long-video analysis.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen: Qwen3 VL 30B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":2.4}},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.027,"output":6.162,"cache_write":1.28375}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"Qwen3.8 Max is the flagship model in Alibaba's Qwen3.8 series, the general-availability successor to the Qwen3.8 Max Preview. It is a multimodal reasoning model intended for complex reasoning, visual understanding,...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4}},"qwen/qwen3-8b":{"id":"qwen/qwen3-8b","name":"Qwen: Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.117,"output":0.455}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.455,"output":1.82}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":4}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.26,"output":1.04}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Qwen3.7-Plus is a cost-effective model in Alibaba's Qwen3.7 series. It supports text and image input with text output, building on the series' text capabilities with a comprehensive upgrade to its...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.032,"cache_write":0.4}},"qwen/qwen3-vl-32b-instruct":{"id":"qwen/qwen3-vl-32b-instruct","name":"Qwen: Qwen3 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-23","last_updated":"2025-10-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.104,"output":0.416}},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"Baidu: ERNIE 4.5 VL 424B A47B ","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"AionLabs: Aion-RP 1.0 (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-02-04","last_updated":"2025-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion-3.0","description":"Aion-3.0 is a multi-model roleplaying and storytelling system from AionLabs, built on the GLM family of models. It uses a collaborative generation process in which multiple specialized models each contribute...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion-3.0-Mini","description":"Aion-3.0 Mini is a multi-model roleplaying and storytelling system from AionLabs, built on the DeepSeek family of models. It uses a collaborative generation process in which multiple specialized models each...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Anthropic: Claude Fable Latest ($$$$)","description":"This model always redirects to the latest model in the Claude Fable family.","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Anthropic: Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Anthropic Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Anthropic Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph: Morph V3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph: Morph V3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":81920,"output":38000},"cost":{"input":0.8,"output":1.2}},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-07-22","last_updated":"2023-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65}},"~deepseek/deepseek-v4-flash-latest":{"id":"~deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"This model always redirects to the latest model in the DeepSeek V4 Flash family.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-01","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":393216},"cost":{"input":0.05,"output":0.16,"cache_read":0.013}},"dots-studio/dots-3-note-preview:free":{"id":"dots-studio/dots-3-note-preview:free","name":"Dots Studio: Dots3-Note Preview (free)","description":"Dots3-Note Preview is an open-weight mixture-of-experts model from Dots Studio, with 16B active parameters out of 280B total. It is the lightest model in the Dots 3 family and is...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0}},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"xAI: Grok Latest","description":"This model always redirects to the latest Grok model from xAI.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"Meituan: LongCat 2.0","description":"LongCat 2.0 is a sparse mixture-of-experts language model from Meituan, with 48B active parameters out of 1.6T total. It is suited for coding, repository-level changes, long-horizon problem solving, and agentic...","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"output":262144},"cost":{"input":0.75,"output":3,"cache_read":0.015}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Poolside: Laguna XS 2.1","description":"Laguna XS 2.1 is the latest coding agent model in the 33B-A3B category from [Poolside](https://poolside.ai/) and a step forward from their Laguna XS.2 model (released in April 2026). It combines...","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Poolside: Laguna XS 2.1 (free)","description":"Laguna XS 2.1 is the latest coding agent model in the 33B-A3B category from [Poolside](https://poolside.ai/) and a step forward from their Laguna XS.2 model (released in April 2026). It combines...","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Poolside: Laguna S 2.1 (free)","description":"Laguna S 2.1 is the latest coding agent model from [Poolside](). Laguna S 2.1 is a 118B total parameter model with 8B active parameters, scoring 70.2% on Terminal-Bench 2.1 and...","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Poolside: Laguna S 2.1","description":"Laguna S 2.1 is the latest coding agent model from [Poolside](). Laguna S 2.1 is a 118B total parameter model with 8B active parameters, scoring 70.2% on Terminal-Bench 2.1 and...","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01}},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"Kwaipilot: KAT-Coder-Pro V2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":144000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"Kwaipilot: KAT-Coder-Pro V2.5","description":"KAT-Coder-Pro V2.5 is a flagship-level Agentic Coding model that can directly hand over an entire issue or an entire business workflow to it, allowing it to autonomously locate and make...","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.74,"output":2.96,"cache_read":0.15}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Step 3.7 Flash is StepFun's latest high-efficiency multimodal Mixture-of-Experts model. It pairs a 196B-parameter language backbone with a vision encoder for native image and video understanding, activating roughly 11B parameters...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3}},"stepfun/step-3.7-flash:free":{"id":"stepfun/step-3.7-flash:free","name":"StepFun: Step 3.7 Flash (free)","description":"Step 3.7 Flash is StepFun's latest high-efficiency multimodal Mixture-of-Experts model. It pairs a 196B-parameter language backbone with a vision encoder for native image and video understanding, activating roughly 11B parameters per token. The model supports a 256K context window and exposes selectable reasoning levels (high/medium/low), letting callers trade off speed, cost, and depth of reasoning. Designed for coding, agentic workflows, structured outputs, and long-context productivity tasks.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"reasoning":0,"cache_read":0}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Mistral: Ministral 3 14B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-02-26","last_updated":"2024-02-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Mistral: Codestral 2508","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-01","last_updated":"2025-08-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03}},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral: Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5}},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Devstral 2 is a state-of-the-art open-source model by Mistral AI specializing in agentic coding. It is a 123B-parameter dense transformer model supporting a 256K context window. Devstral 2 supports exploring...","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-19","last_updated":"2024-11-19","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral: Mistral Small 3.2 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.2}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral: Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02}},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Mistral: Ministral 3 3B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01}},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.019,"output":0.03}},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral: Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555}},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral Small 4","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Mistral: Ministral 3 8B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015}},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Mistral: Voxtral Small 24B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral: Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.004,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax-M2 Her","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax: MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":40000},"cost":{"input":0.4,"output":2.2}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax: MiniMax-01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000192,"output":900172},"cost":{"input":0.2,"output":1.1}},"minimax/minimax-m3:free":{"id":"minimax/minimax-m3:free","name":"MiniMax: MiniMax M3 (free)","description":"MiniMax-M3 is a multimodal foundation model from MiniMax. It supports text, image, and video inputs with text output, a 1M-token context window, and is suited for long-horizon agentic work, coding,...","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0,"output":0}},"minimax/minimax-m2.7:free":{"id":"minimax/minimax-m2.7:free","name":"MiniMax: MiniMax M2.7 (free)","description":"MiniMax-M2.7 is a next-generation large language model designed for autonomous, real-world productivity and continuous improvement. Built to actively participate in its own evolution, M2.7 integrates advanced agentic capabilities through multi-agent...","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":176947},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-lightning:free":{"id":"nvidia/nemotron-3.5-lightning:free","name":"NVIDIA: Nemotron 3.5 Lightning (free)","description":"NVIDIA Nemotron 3.5 Lightning is an open mixture-of-experts model from NVIDIA, with 3B active parameters out of 30B total. It is suited for high-throughput agentic workloads and specialized tasks that... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"NVIDIA Nemotron 3.5 Content Safety is a compact 4B-parameter multimodal guardrail model from NVIDIA, fine-tuned from Google Gemma-3-4B. It moderates both inputs to and responses from LLMs and VLMs, accepting...","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2}},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"NVIDIA Nemotron 3.5 Lightning is an open mixture-of-experts model from NVIDIA, with 3B active parameters out of 30B total. It is suited for high-throughput agentic workloads and specialized tasks that...","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.08,"output":0.2,"cache_read":0.04}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"NVIDIA: Nemotron 3 Nano Omni (free)","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.085,"output":0.4}},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"NVIDIA: Nemotron 3 Ultra (free)","description":"NVIDIA Nemotron 3 Ultra is an open frontier-reasoning and orchestration model from NVIDIA, with 55B active parameters out of 550B total (MoE). Built on a hybrid Transformer-Mamba mixture-of-experts architecture, it... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"NVIDIA: Nemotron 3 Super (free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-content-safety:free":{"id":"nvidia/nemotron-3.5-content-safety:free","name":"NVIDIA: Nemotron 3.5 Content Safety (free)","description":"NVIDIA Nemotron 3.5 Content Safety is a compact 4B-parameter multimodal guardrail model from NVIDIA, fine-tuned from Google Gemma-3-4B. It moderates both inputs to and responses from LLMs and VLMs, accepting... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"NVIDIA Nemotron 3 Ultra is an open frontier-reasoning and orchestration model from NVIDIA, with 55B active parameters out of 550B total (MoE). Built on a hybrid Transformer-Mamba mixture-of-experts architecture, it...","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.5,"output":2.2,"cache_read":0.1}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.05,"output":0.2,"cache_read":0.03}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Claude Opus 4.8 is Anthropic's most capable generally available model in the Opus family. It supports text, image, and file inputs with text output, with reasoning support and a 1M-token...","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Claude Opus 5 is Anthropic’s flagship model for demanding reasoning, coding, and long-horizon agentic work. It is particularly strong at end-to-end software tasks, code review and bug finding, visual analysis...","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Anthropic: Claude 3 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude Fable 5 is a Mythos-class model from Anthropic, built for autonomous knowledge work and coding. It supports text, image, and file inputs with text output, with reasoning support and...","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Anthropic: Claude Opus 4 ($$$$)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic: Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Sonnet 5 is Anthropic's most capable Sonnet-class model, with frontier performance across coding, agents, and professional work. It supports adaptive thinking with selectable reasoning effort levels (low, medium, high, max,...","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude Fable 5.1 improves on Claude Fable 5 across the board, with the biggest gains in agentic coding, long-running agentic workflows, and knowledge work: long code refactors, front-end and visual...","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.042,"output":0.22}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image) is Google's fastest, most cost-efficient Gemini image model, built for high-velocity developer pipelines and rapid-fire visual exploration. It delivers text-to-image generation...","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5}},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Google: Gemma 3 4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.1}},"google/lyria-3-clip-preview":{"id":"google/lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.25,"cache_read":0.015,"cache_write":0.041667}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro is Google’s most advanced image-generation and editing model, built on Gemini 3 Pro. It extends the original Nano Banana with significantly improved multimodal reasoning, real-world grounding, and...","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":6,"reasoning":6,"cache_read":0.1,"cache_write":0.1875}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"reasoning":0.4,"cache_read":0.01,"cache_write":0.083333}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Gemini 3.6 Flash is a high-efficiency model from Google for coding, agentic workflows, and web and app development. It is designed to produce polished outputs with fewer unnecessary edits and...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.375,"output":1.875,"reasoning":1.875,"cache_read":0.0375,"cache_write":0.020833}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"reasoning":0.75,"cache_read":0.0125,"cache_write":0.041667}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":4.5,"reasoning":4.5,"cache_read":0.075,"cache_write":0.041667}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"reasoning":0.75,"cache_read":0.0125,"cache_write":0.041667}},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Google: Gemma 3 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.16}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Gemini 3.1 Flash Image, a.k.a. \"Nano Banana 2,\" is Google’s latest state of the art image generation and editing model, delivering Pro-level visual quality at Flash speed. It combines advanced...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Gemini 3.5 Flash Lite is a high-efficiency model from Google with upgraded agentic capabilities. It is suited for subagents that execute focused tasks within complex, multi-agent workflows.","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":1.25,"reasoning":1.25,"cache_read":0.015,"cache_write":0.041667}},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Google: Gemini 2.5 Pro Preview 06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":1,"output":6,"reasoning":6,"cache_read":0.1,"cache_write":0.1875}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.34,"cache_read":0.05}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.041667}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Gemini 3.8 Flash is Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows.","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/lyria-3-pro-preview":{"id":"google/lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Gemini 3.7 Flash is a multimodal model from Google for fast agentic workflows, coding, and complex multi-step reasoning. It is designed for tasks that require responsive performance and reliable multi-step...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375}},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333}},"google/gemini-2.5-pro-preview-05-06":{"id":"google/gemini-2.5-pro-preview-05-06","name":"Google: Gemini 2.5 Pro Preview 05-06","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.15}},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-07-13","last_updated":"2024-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65}},"relace/relace-apply-3":{"id":"relace/relace-apply-3","name":"Relace: Relace Apply 3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25}},"relace/relace-search":{"id":"relace/relace-search","name":"Relace: Relace Search","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3}},"nex-agi/nex-n2-mini":{"id":"nex-agi/nex-n2-mini","name":"Nex AGI: Nex-N2-Mini (retires Sep 8)","description":"Nex-N2-Mini is an open-source agentic mixture-of-experts model from Nex AGI, the smaller sibling in the Nex-N2 series. It accepts text and image input and is built for coding, tool use,...","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-24","last_updated":"2026-06-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025}},"nex-agi/nex-n2-pro":{"id":"nex-agi/nex-n2-pro","name":"Nex AGI: Nex-N2-Pro (retires Sep 8)","description":"Nex-N2-Pro is an agentic mixture-of-experts model from Nex AGI, with 17B active parameters out of 397B total. Built on the Qwen3.5 architecture, it accepts text and image input and produces...","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-08","last_updated":"2026-06-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":1,"cache_read":0.025}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Inkling Small is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 12B active parameters out of 276B total. It is positioned as the smaller, more efficient member of...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1}},"thinkingmachines/inkling-small:free":{"id":"thinkingmachines/inkling-small:free","name":"Thinking Machines: Inkling Small (free)","description":"Inkling Small is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 12B active parameters out of 276B total. It is positioned as the smaller, more efficient member of...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0}},"thinkingmachines/inkling:free":{"id":"thinkingmachines/inkling:free","name":"Thinking Machines: Inkling (free)","description":"Inkling is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 41B active parameters out of 975B total. It is designed for general-purpose reasoning, coding, agentic and tool-use systems,...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Inkling is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 41B active parameters out of 975B total. It is designed for general-purpose reasoning, coding, agentic and tool-use systems,...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":471859},"cost":{"input":0.95,"output":4.05,"cache_read":0.16}},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-07-02","last_updated":"2023-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3686},"cost":{"input":0.06,"output":0.06}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It is designed to keep track of information across extended tasks, work through...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a reasoning model from Meta, designed for complex agentic tasks. It accepts text, images, video, audio, and PDF documents, returns text, and offers a 1M-token context...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Meta: Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 contributor tier is a reasoning model from Meta designed for developers who want to start building at an even lower cost. It’s meaningfully cheaper than Muse Spark...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Meta: Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 Contributor is the cost-efficient contributor tier of Meta’s multimodal reasoning model for experimentation, learning, and early-stage agentic, multi-agent, and coding workflows. It is designed to track information...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark 1.1 is a multimodal reasoning model from Meta, built for agentic tasks. It accepts text, images, video, audio, and PDF documents and returns text, with a 1M-token context...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer 30B is a dense, open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark and optimized for autonomous agents on consumer hardware. It is suited for long-horizon...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":1.1,"cache_read":0.04}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron: Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5}},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"TheDrummer: Skyfall 36B V2","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"TheDrummer: UnslopNemo 12B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-08","last_updated":"2024-11-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.4,"output":0.4}},"thedrummer/cydonia-24b-v4.1":{"id":"thedrummer/cydonia-24b-v4.1","name":"TheDrummer: Cydonia 24B V4.1","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-09-27","last_updated":"2025-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"bytedance/ui-tars-1.5-7b":{"id":"bytedance/ui-tars-1.5-7b","name":"ByteDance: UI-TARS 7B ","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1}},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"ByteDance Seed: Seed 1.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3}},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"ByteDance Seed: Seed 2.1 Turbo","description":"Seed 2.1 Turbo is a multimodal model from ByteDance Seed for coding and long-horizon agent workflows. It is suited for end-to-end software delivery, multi-step task execution, and understanding visual and...","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5}},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"Seed 2.0 Code","description":"Seed 2.0 Code is a model from ByteDance Seed optimized for agentic coding. It is suited for frontend development, multilingual programming tasks, and coding-agent workflows in tools such as Claude...","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3}},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"ByteDance Seed: Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2}},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2}},"inception/mercury-2.5-preview":{"id":"inception/mercury-2.5-preview","name":"Inception: Mercury 2.5 Preview","description":"Mercury 2.5 is the fastest reasoning LLM, and the latest diffusion LLM (dLLM) from Inception. Instead of generating tokens sequentially, Mercury 2.5 produces and refines multiple tokens in parallel, achieving...","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.2,"output":0.75,"cache_read":0.02}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Inception: Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Writer: Palmyra X5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"palmyra","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-21","last_updated":"2026-01-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6}},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Google Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["audio","pdf","image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Google Gemini Flash Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"microsoft/phi-4":{"id":"microsoft/phi-4","name":"Microsoft: Phi 4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":14745},"cost":{"input":0.07,"output":0.14}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-16","last_updated":"2024-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Fugu Ultra is the higher-performance model in Sakana AI's Fugu family. Rather than a single monolithic model, Fugu is a learned multi-agent orchestration system: a language model trained to route...","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Sakana Namazu is a Japanese-specialized reasoning model from Sakana AI, based on Kimi K2.6 with additional training for Japanese language and business contexts. It is suited for Japanese instruction following,...","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15}},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"MoonshotAI Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":2.5,"output":14,"cache_read":0.29}},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"IBM: Granite 4.1 8B","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.1,"cache_read":0.05}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"IBM: Granite 4.2 8B","description":"Granite 4.2 8B is a dense reasoning model from IBM. It is suited for mathematics, code generation, multilingual dialogue, and agentic workflows that need multi-step reasoning. It supports full, low-effort,...","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015}},"ibm-granite/granite-4.0-h-micro":{"id":"ibm-granite/granite-4.0-h-micro","name":"IBM: Granite 4.0 Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112}},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek: DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":161000,"output":144900},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"DeepSeek V4 Flash Vision Exp is an experimental vision-enabled version of [DeepSeek V4 Flash 0731](https://openrouter.ai/deepseek/deepseek-v4-flash-0731) from DeepSeek, adding image understanding while matching the base model on text capabilities including agents,...","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.028}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro 0813 is a large-scale mixture-of-experts model from DeepSeek. This is the GA release of DeepSeek V4 Pro.","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.132}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"DeepSeek V4 Flash 0731 is a sparse mixture-of-experts model from DeepSeek, with 13B active parameters out of 284B total. This re-post-trained revision is suited for coding, reasoning, and agent workflows.","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.44,"output":1.32,"cache_read":0.028}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek: R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5,"cache_read":0.35}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345}},"deepseek/deepseek-r1-distill-llama-70b":{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"DeepSeek: R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":7372},"cost":{"input":0.8,"output":0.8}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek: DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek: DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":1.6,"output":3.2,"cache_read":0.135}},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":147456},"cost":{"input":0.25,"output":1}},"~openai/gpt-latest":{"id":"~openai/gpt-latest","name":"OpenAI GPT Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"OpenAI GPT Mini Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon: Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2}},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Amazon: Nova Premier 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24}},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling-3.0-flash","description":"*Ling-3.0-flash* is a *124B-parameter Mixture-of-Experts (MoE) model*, with approximately *5.1B parameters activated per token*. The model is designed with *token efficiency and production-scale agentic inference* as key priorities, enabling developers...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Ling 3.0 Flash Fin is a finance-focused mixture-of-experts model from InclusionAI, built on Ling 3.0 Flash with 5.1B active parameters out of 124B total. It is designed for real-world investment...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"inclusionai/ling-3.0-flash-fin:free":{"id":"inclusionai/ling-3.0-flash-fin:free","name":"Ling 3.0 Flash Fin (free)","description":"Ling 3.0 Flash Fin is a finance-focused mixture-of-experts model from InclusionAI, built on Ling 3.0 Flash with 5.1B active parameters out of 124B total. It is designed for real-world investment...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5}},"mancer/weaver":{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","description":"An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.","family":"alpha","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2023-08-02","last_updated":"2023-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75}},"openrouter/free":{"id":"openrouter/free","name":"OpenRouter Free Models Router","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32768},"cost":{"input":0,"output":0}},"openrouter/pareto-code":{"id":"openrouter/pareto-code","name":"Pareto Code Router","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-05-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65536},"cost":{"input":0,"output":0}},"openrouter/bodybuilder":{"id":"openrouter/bodybuilder","name":"Body Builder (beta)","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"status":"beta","cost":{"input":0,"output":0}},"openrouter/auto":{"id":"openrouter/auto","name":"Auto Router","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["audio","image","pdf","text","video"],"output":["image","text"]},"open_weights":false,"limit":{"context":2000000,"output":32768},"cost":{"input":0,"output":0}},"sao10k/l3.3-euryale-70b":{"id":"sao10k/l3.3-euryale-70b","name":"Sao10K: Llama 3.3 Euryale 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.65,"output":0.75}},"sao10k/l3-lunaris-8b":{"id":"sao10k/l3-lunaris-8b","name":"Sao10K: Llama 3 8B Lunaris","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05}},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-08-28","last_updated":"2024-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85}},"kilo-auto/free":{"id":"kilo-auto/free","name":"Auto Free","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":10000},"cost":{"input":0,"output":0,"reasoning":0,"cache_read":0,"cache_write":0}},"kilo-auto/efficient":{"id":"kilo-auto/efficient","name":"Auto Efficient","description":"Routes each request to the cheapest model that gets the job done, based on continuously benchmarked accuracy and cost.","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"reasoning":0,"cache_read":0.0325,"cache_write":0.40625}},"kilo-auto/small":{"id":"kilo-auto/small","name":"Auto Small","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.4,"reasoning":0,"cache_read":0.005}},"kilo-auto/frontier":{"id":"kilo-auto/frontier","name":"Auto Frontier","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"reasoning":0,"cache_read":0.5,"cache_write":6.25}},"kilo-auto/balanced":{"id":"kilo-auto/balanced","name":"Auto Balanced","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"reasoning":0,"cache_read":0.0325,"cache_write":0.40625}},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"SpaceXAI: Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"SpaceXAI: Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"Grok 4.5 is SpaceXAI's smartest model with frontier performance on coding, knowledge work, and STEM.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"Grok 4.6 is SpaceXAI's smartest model with frontier performance on coding, knowledge work, and STEM.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.02,"output":0.04}},"meta-llama/llama-guard-4-12b":{"id":"meta-llama/llama-guard-4-12b","name":"Meta: Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":16384},"cost":{"input":0.18,"output":0.18}},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Meta: Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.33}},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Meta: Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":0.2,"output":0.696}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":327680,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32}},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Nous: Hermes 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-18","last_updated":"2024-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7}},"nousresearch/hermes-3-llama-3.1-405b":{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Nous: Hermes 3 405B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-16","last_updated":"2024-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1}},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"Nous: Hermes 4 405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"nousresearch","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3}},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"Nous: Hermes 4 70B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"nousresearch","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.13,"output":0.4}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120}},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-02-12","last_updated":"2025-02-12","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"OpenAI: GPT Audio Mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio","pdf"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"GPT-5.6 Sol is the flagship model in OpenAI's GPT-5.6 series. It is suited for complex reasoning, coding, and agentic workflows, and is particularly strong at command-line and multi-step coding tasks...","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5}},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview ($$$$)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT-5.6 Luna","description":"GPT-5.6 Luna Pro is the same underlying model as [GPT-5.6 Luna](https://openrouter.ai/openai/gpt-5.6-luna), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.02,"output":0.1}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"OpenAI: GPT-5 Image ($$$$)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT-5.6 Sol","description":"GPT-5.6 Sol Pro is the same underlying model as [GPT-5.6 Sol](https://openrouter.ai/openai/gpt-5.6-sol), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"OpenAI: gpt-oss-safeguard-20b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.4-image-2":{"id":"openai/gpt-5.4-image-2","name":"OpenAI: GPT-5.4 Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2}},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2}},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"OpenAI: GPT Audio","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio","pdf"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"GPT-5.6 Luna is a fast, cost-efficient model in OpenAI's GPT-5.6 series. It is suited for high-volume, latency-sensitive tasks such as chat, classification, and lightweight agentic workflows, providing capable reasoning for...","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT-5.6 Terra","description":"GPT-5.6 Terra Pro is the same underlying model as [GPT-5.6 Terra](https://openrouter.ai/openai/gpt-5.6-terra), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"OpenAI: GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-05-05","last_updated":"2026-05-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2023-08-28","last_updated":"2023-08-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4}},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"OpenAI: GPT-5 Image Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["pdf","image","text"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.03,"output":0.17,"cache_read":0.03}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180}},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-09-28","last_updated":"2023-09-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"GPT-5.6 Terra is a balanced model in OpenAI's GPT-5.6 series, positioned between the flagship Sol tier and the cost-efficient Luna tier. It is suited for everyday coding, reasoning, and agentic...","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.6-sol-discounted":{"id":"openai/gpt-5.6-sol-discounted","name":"OpenAI: GPT-5.6 Sol (50% off)","description":"GPT-5.6 Sol served by OpenAI through Vercel AI Gateway at 50% lower cost than other available inference providers. This promotion runs through September 18, 2026.","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"reasoning":0,"cache_read":0.25,"cache_write":3.125}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"~z-ai/glm-flash-latest":{"id":"~z-ai/glm-flash-latest","name":"Z.ai: GLM Flash Latest","description":"This model always redirects to the latest model in the GLM Flash family.","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"~z-ai/glm-latest":{"id":"~z-ai/glm-latest","name":"Z.ai: GLM Latest","description":"This model always redirects to the latest GLM model from Z.ai.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":1.15,"output":3.5,"cache_read":0.1}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"MoonshotAI: Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":100352},"cost":{"input":0.6,"output":2.5}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.8,"output":3.4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"MoonshotAI: Kimi K2.7 Code is a coding-focused model in Moonshot AI's Kimi K2 family, built to complete end-to-end programming tasks reliably over long contexts. It uses a native multimodal mixture-of-experts...","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":100352},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi K3 is a 2.8T parameter open-weight multimodal reasoning model from Moonshot AI. It is suited for complex coding, knowledge work, and long-horizon agentic workflows, and is particularly strong at...","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"MoonshotAI: Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":100352},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"Cohere: North Mini Code (free)","description":"North Mini Code is Cohere's first agentic coding model and the debut of its North family. A sparse mixture-of-experts model with 30B total parameters and 3B active, it is optimized...","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10}},"cohere/command-a":{"id":"cohere/command-a","name":"Cohere: Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Upstage: Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Upstage: Solar Pro 4","description":"Solar Pro 4 is a large language model from Upstage. It is suited for agentic workflows, office productivity, document-intensive work, and coding.","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Hy3 is a 295B-parameter Mixture-of-Experts model from Tencent (21B active, 192 experts with top-8 routing) built for reasoning, agentic workflows, and real-world production use. It supports a configurable reasoning effort:...","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"Tencent: Hy4 preview is a mixture-of-experts model from Tencent, with 49B active parameters out of 770B total. It is designed for coding agents, complex tool-use workflows, and productivity tasks that...","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"tencent/hy-mt2-30b-a3b":{"id":"tencent/hy-mt2-30b-a3b","name":"Tencent: Hy-MT2-30B-A3B","description":"Hy-MT2-30B-A3B is Tencent's flagship translation model in the Hy-MT2 family. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and...","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-7b":{"id":"tencent/hy-mt2-7b","name":"Tencent: Hy-MT2-7B","description":"Hy-MT2-7B is a 7B-parameter translation model from Tencent. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and style-guided translation.","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-1.8b":{"id":"tencent/hy-mt2-1.8b","name":"Tencent: Hy-MT2-1.8B","description":"Hy-MT2-1.8B is a compact 1.8B-parameter translation model from Tencent. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and style-guided...","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177}},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06}},"tencent/hunyuan-a13b-instruct":{"id":"tencent/hunyuan-a13b-instruct","name":"Tencent: Hunyuan A13B Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57}},"liquid/lfm-2.5-2.6b:free":{"id":"liquid/lfm-2.5-2.6b:free","name":"LiquidAI: LFM2.5-2.6B (free)","description":"LFM2.5-2.6B is a compact reasoning model from Liquid AI. It is suited for agent workflows, data extraction, RAG, and long-context processing. Liquid advises against using it for agentic coding or...","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.4,"output":1.75,"cache_read":0.08}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"GLM 5.2 is a large-scale reasoning model from Z.ai. It supports text input and output with a 1M-token context window, and is suited for long-horizon agent workflows, project-level software engineering,...","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"GLM-5.3-Flash is a native multimodal model from Z.ai. It is suited for efficient coding and long-horizon agent tasks. Its hybrid sparse and linear attention architecture maintains accurate long-context behavior while...","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":128000},"cost":{"input":0.6,"output":1.92,"cache_read":0.12}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"GLM-5.3 is a large-scale reasoning model from Z.ai, built for complex software engineering and long-horizon agent tasks. It supports text input and output with a 1M-token context window, and improves...","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","name":"Venice: Uncensored","description":"Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving...","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"perplexity/sonar-pro-search":{"id":"perplexity/sonar-pro-search","name":"Perplexity: Sonar Pro Search","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Perplexity: Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Perplexity: Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Perplexity: Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Perplexity: Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3}},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1}},"rekaai/reka-flash-3":{"id":"rekaai/reka-flash-3","name":"Reka Flash 3","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"reka","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2}},"stealth/claude-opus-4.8":{"id":"stealth/claude-opus-4.8","name":"Stealth: Claude Opus 4.8 (20% off)","description":"Your prompts and completions may be retained and used to train or improve the provider's services. This third-party-served variant of Claude Opus 4.8 is offered at 20% lower cost than standard Claude Opus 4.8 pricing and is not served by Anthropic or Kilo Code.","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}},"stealth/qwen3.6-plus":{"id":"stealth/qwen3.6-plus","name":"Stealth: Qwen3.6 Plus (50% off)","description":"Your prompts and completions may be retained and used to train or improve the provider's services. This third-party-served variant of Qwen3.6 Plus is offered at 50% lower cost than standard Qwen3.6 Plus pricing and is not served by Alibaba or Kilo Code. Note: a surcharge applies to long-context workloads exceeding 256K input tokens.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":0,"cache_read":0.025,"cache_write":0.3125}},"stealth/claude-opus-4.7":{"id":"stealth/claude-opus-4.7","name":"Stealth: Claude Opus 4.7 (20% off)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}},"stealth/claude-sonnet-4.6":{"id":"stealth/claude-sonnet-4.6","name":"Stealth: Claude Sonnet 4.6 (20% off)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.4,"output":12,"reasoning":0,"cache_read":0.24,"cache_write":3}},"stealth/claude-opus-4.6":{"id":"stealth/claude-opus-4.6","name":"Stealth: Claude Opus 4.6 (20% off)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}}}},"alibaba-coding-plan":{"id":"alibaba-coding-plan","env":["ALIBABA_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding-intl.dashscope.aliyuncs.com/v1","name":"Alibaba Coding Plan","doc":"https://www.alibabacloud.com/help/en/model-studio/coding-plan","models":{"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"submodel":{"id":"submodel","env":["SUBMODEL_INSTAGEN_ACCESS_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llm.submodel.ai/v1","name":"submodel","doc":"https://submodel.gitbook.io","models":{"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.5,"output":2.15}},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5}},"zai-org/GLM-4.5-FP8":{"id":"zai-org/GLM-4.5-FP8","name":"GLM 4.5 FP8","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.8}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.3}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.8}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.6}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5}}}},"openreason":{"id":"openreason","env":["OPENREASON_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.openreason.app/v1","name":"OpenReason","doc":"https://openreason.app/docs","models":{"deepseek-ai/deepseek-v4-flash-0731":{"id":"deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.1371,"output":0.2743}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1055,"output":0.422}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.0022,"output":4.22}}}},"azure":{"id":"azure","env":["AZURE_RESOURCE_NAME","AZURE_API_KEY"],"npm":"@ai-sdk/azure","name":"Azure","doc":"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"mistral-small-2503":{"id":"mistral-small-2503","name":"Mistral Small 3.1","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"status":"beta","cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"ministral-3b":{"id":"ministral-3b","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"gpt-3.5-turbo-1106":{"id":"gpt-3.5-turbo-1106","name":"GPT-3.5 Turbo 1106","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"status":"deprecated","cost":{"input":1,"output":2}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":272000},"cost":{"input":15,"output":120}},"phi-4-mini-reasoning":{"id":"phi-4-mini-reasoning","name":"Phi-4-mini-reasoning","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"codex-mini":{"id":"codex-mini","name":"Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-04","release_date":"2025-05-16","last_updated":"2025-05-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.5,"output":6,"cache_read":0.375}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":4,"output":20,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"phi-4-reasoning-plus":{"id":"phi-4-reasoning-plus","name":"Phi-4-reasoning-plus","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4}},"cohere-command-a":{"id":"cohere-command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1}},"cohere-embed-v3-english":{"id":"cohere-embed-v3-english","name":"Embed v3 English","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek-V4-Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.19,"output":0.51}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"cohere-embed-v-4-0":{"id":"cohere-embed-v-4-0","name":"Embed v4","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0}},"phi-4":{"id":"phi-4","name":"Phi-4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gpt-3.5-turbo-0125":{"id":"gpt-3.5-turbo-0125","name":"GPT-3.5 Turbo 0125","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"phi-4-multimodal":{"id":"phi-4-multimodal","name":"Phi-4-multimodal","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"phi","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32,"input_audio":4}},"phi-4-mini":{"id":"phi-4-mini","name":"Phi-4-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"status":"beta","cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-07-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"status":"deprecated","cost":{"input":1.35,"output":5.4}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"gpt-4-turbo-vision":{"id":"gpt-4-turbo-vision","name":"GPT-4 Turbo Vision","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"llama-4-scout-17b-16e-instruct":{"id":"llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"GPT-Image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":2,"output":8,"cache_read":0.5}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"gpt-image-1":{"id":"gpt-image-1","name":"GPT-Image-1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"model-router":{"id":"model-router","name":"Model Router","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-05-19","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"cost":{"input":0.14,"output":0}},"gpt-chat-latest":{"id":"gpt-chat-latest","name":"GPT Chat Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"status":"beta","cost":{"input":5,"output":30,"cache_read":0.5}},"cohere-embed-v3-multilingual":{"id":"cohere-embed-v3-multilingual","name":"Embed v3 Multilingual","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"status":"beta"},"deepseek-v3.2-speciale":{"id":"deepseek-v3.2-speciale","name":"DeepSeek-V3.2-Speciale","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.6,"output":3}},"phi-4-reasoning":{"id":"phi-4-reasoning","name":"Phi-4-reasoning","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek-V4-Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":1.74,"output":3.48}},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.13,"output":0}},"codestral-2501":{"id":"codestral-2501","name":"Codestral 25.01","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"gpt-3.5-turbo-instruct":{"id":"gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-09-21","last_updated":"2023-09-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096},"status":"deprecated","cost":{"input":1.5,"output":2}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"grok-4-20-non-reasoning":{"id":"grok-4-20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":8192},"status":"beta","cost":{"input":2,"output":6}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.125}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71}},"grok-4-20-reasoning":{"id":"grok-4-20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":8192},"status":"beta","cost":{"input":2,"output":6}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"claude-mythos-5":{"id":"claude-mythos-5","name":"Claude Mythos 5","description":"Restricted Claude model for advanced cybersecurity and biology research workflows","family":"claude-mythos","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}}}},"amazon-bedrock":{"id":"amazon-bedrock","env":["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_REGION","AWS_BEARER_TOKEN_BEDROCK"],"npm":"@ai-sdk/amazon-bedrock","name":"Amazon Bedrock","doc":"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html","models":{"moonshotai.kimi-k2.5":{"id":"moonshotai.kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262143,"output":16000},"cost":{"input":0.6,"output":3}},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"global.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (Global)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"us.anthropic.claude-opus-5":{"id":"us.anthropic.claude-opus-5","name":"Claude Opus 5 (US)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"us.anthropic.claude-opus-4-6-v1":{"id":"us.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (US)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"qwen.qwen3-coder-next":{"id":"qwen.qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.22,"output":1.8}},"global.openai.gpt-5.6-luna":{"id":"global.openai.gpt-5.6-luna","name":"GPT-5.6 Luna (Global)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"global.anthropic.claude-opus-4-6-v1":{"id":"global.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (Global)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"openai.gpt-5.5":{"id":"openai.gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":5.5,"output":33,"cache_read":0.55}},"qwen.qwen3-coder-30b-a3b-v1:0":{"id":"qwen.qwen3-coder-30b-a3b-v1:0","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6}},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (Global)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"qwen.qwen3-235b-a22b-2507-v1:0":{"id":"qwen.qwen3-235b-a22b-2507-v1:0","name":"Qwen3 235B A22B 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.22,"output":0.88}},"mistral.ministral-3-3b-instruct":{"id":"mistral.ministral-3-3b-instruct","name":"Ministral 3 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.1,"output":0.1}},"global.anthropic.claude-sonnet-4-6":{"id":"global.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Global)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"openai.gpt-5.4":{"id":"openai.gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.75,"output":16.5,"cache_read":0.275}},"mistral.pixtral-large-2502-v1:0":{"id":"mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6}},"mistral.mistral-large-3-675b-instruct":{"id":"mistral.mistral-large-3-675b-instruct","name":"Mistral Large 3","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.5,"output":1.5}},"anthropic.claude-opus-4-5-20251101-v1:0":{"id":"anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"jp.anthropic.claude-opus-4-7":{"id":"jp.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (JP)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"eu.anthropic.claude-sonnet-5":{"id":"eu.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (EU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75}},"nvidia.nemotron-nano-9b-v2":{"id":"nvidia.nemotron-nano-9b-v2","name":"NVIDIA Nemotron Nano 9B v2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.06,"output":0.23}},"au.anthropic.claude-sonnet-4-6":{"id":"au.anthropic.claude-sonnet-4-6","name":"AU Anthropic Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125}},"anthropic.claude-opus-4-7":{"id":"anthropic.claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"mistral.ministral-3-8b-instruct":{"id":"mistral.ministral-3-8b-instruct","name":"Ministral 3 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.15}},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"au.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (AU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic.claude-opus-5":{"id":"anthropic.claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"eu.anthropic.claude-opus-4-6-v1":{"id":"eu.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (EU)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"anthropic.claude-sonnet-4-6":{"id":"anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"mistral.voxtral-mini-3b-2507":{"id":"mistral.voxtral-mini-3b-2507","name":"Voxtral Mini 3B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["audio","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.04,"output":0.04}},"nvidia.nemotron-nano-12b-v2":{"id":"nvidia.nemotron-nano-12b-v2","name":"NVIDIA Nemotron Nano 12B v2 VL BF16","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.6}},"nvidia.nemotron-nano-3-30b":{"id":"nvidia.nemotron-nano-3-30b","name":"NVIDIA Nemotron Nano 3 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.06,"output":0.24}},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"eu.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (EU)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"minimax.minimax-m2.1":{"id":"minimax.minimax-m2.1","name":"MiniMax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"meta.llama3-3-70b-instruct-v1:0":{"id":"meta.llama3-3-70b-instruct-v1:0","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72}},"deepseek.v3-v1:0":{"id":"deepseek.v3-v1:0","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.58,"output":1.68}},"eu.anthropic.claude-opus-5":{"id":"eu.anthropic.claude-opus-5","name":"Claude Opus 5 (EU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"anthropic.claude-sonnet-5":{"id":"anthropic.claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"us.meta.llama4-maverick-17b-instruct-v1:0":{"id":"us.meta.llama4-maverick-17b-instruct-v1:0","name":"Llama 4 Maverick 17B Instruct (US)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.24,"output":0.97}},"meta.llama3-1-8b-instruct-v1:0":{"id":"meta.llama3-1-8b-instruct-v1:0","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.22,"output":0.22}},"minimax.minimax-m2":{"id":"minimax.minimax-m2","name":"MiniMax M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204608,"output":128000},"cost":{"input":0.3,"output":1.2}},"global.anthropic.claude-opus-5":{"id":"global.anthropic.claude-opus-5","name":"Claude Opus 5 (Global)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"qwen.qwen3-32b-v1:0":{"id":"qwen.qwen3-32b-v1:0","name":"Qwen3 32B (dense)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.15,"output":0.6}},"writer.palmyra-x4-v1:0":{"id":"writer.palmyra-x4-v1:0","name":"Palmyra X4","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":122880,"output":8192},"cost":{"input":2.5,"output":10}},"google.gemma-3-12b-it":{"id":"google.gemma-3-12b-it","name":"Google Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.049999999999999996,"output":0.09999999999999999}},"au.anthropic.claude-opus-4-8":{"id":"au.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (AU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"jp.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"jp.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (JP)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"eu.anthropic.claude-opus-4-8":{"id":"eu.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (EU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"jp.anthropic.claude-opus-5":{"id":"jp.anthropic.claude-opus-5","name":"Claude Opus 5 (JP)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"mistral.ministral-3-14b-instruct":{"id":"mistral.ministral-3-14b-instruct","name":"Ministral 14B 3.0","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2}},"openai.gpt-oss-safeguard-20b":{"id":"openai.gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.2}},"openai.gpt-5.6-luna":{"id":"openai.gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275,"tiers":[{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55}}},"anthropic.claude-opus-4-6-v1":{"id":"anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"openai.gpt-oss-20b-1:0":{"id":"openai.gpt-oss-20b-1:0","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3}},"qwen.qwen3-vl-235b-a22b":{"id":"qwen.qwen3-vl-235b-a22b","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.3,"output":1.5}},"amazon.nova-2-lite-v1:0":{"id":"amazon.nova-2-lite-v1:0","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.33,"output":2.75}},"global.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"global.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (Global)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"amazon.nova-lite-v1:0":{"id":"amazon.nova-lite-v1:0","name":"Nova Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.06,"output":0.24,"cache_read":0.015}},"anthropic.claude-opus-4-8":{"id":"anthropic.claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"amazon.nova-pro-v1:0":{"id":"amazon.nova-pro-v1:0","name":"Nova Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.8,"output":3.2,"cache_read":0.2}},"us.anthropic.claude-opus-4-7":{"id":"us.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (US)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"au.anthropic.claude-opus-4-6-v1":{"id":"au.anthropic.claude-opus-4-6-v1","name":"AU Anthropic Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":16.5,"output":82.5,"cache_read":1.65,"cache_write":20.625}},"writer.palmyra-x5-v1:0":{"id":"writer.palmyra-x5-v1:0","name":"Palmyra X5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6}},"global.openai.gpt-5.6-sol":{"id":"global.openai.gpt-5.6-sol","name":"GPT-5.6 Sol (Global)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"openai.gpt-5.6-sol":{"id":"openai.gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5,"tiers":[{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11}}},"global.anthropic.claude-opus-4-8":{"id":"global.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (Global)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax.minimax-m2.5":{"id":"minimax.minimax-m2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":98304},"cost":{"input":0.3,"output":1.2}},"openai.gpt-oss-120b-1:0":{"id":"openai.gpt-oss-120b-1:0","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6}},"eu.anthropic.claude-opus-4-7":{"id":"eu.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (EU)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875}},"us.meta.llama4-scout-17b-instruct-v1:0":{"id":"us.meta.llama4-scout-17b-instruct-v1:0","name":"Llama 4 Scout 17B Instruct (US)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":3500000,"output":16384},"cost":{"input":0.17,"output":0.66}},"moonshot.kimi-k2-thinking":{"id":"moonshot.kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262143,"output":16000},"cost":{"input":0.6,"output":2.5}},"anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"deepseek.r1-v1:0":{"id":"deepseek.r1-v1:0","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4}},"mistral.magistral-small-2509":{"id":"mistral.magistral-small-2509","name":"Magistral Small 1.2","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":40000},"cost":{"input":0.5,"output":1.5}},"us.anthropic.claude-fable-5":{"id":"us.anthropic.claude-fable-5","name":"Claude Fable 5 (US)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"eu.anthropic.claude-fable-5":{"id":"eu.anthropic.claude-fable-5","name":"Claude Fable 5 (EU)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75}},"us.anthropic.claude-fable-5-1":{"id":"us.anthropic.claude-fable-5-1","name":"Claude Fable 5.1 (US)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75}},"meta.llama4-scout-17b-instruct-v1:0":{"id":"meta.llama4-scout-17b-instruct-v1:0","name":"Llama 4 Scout 17B Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":3500000,"output":16384},"cost":{"input":0.17,"output":0.66}},"google.gemma-3-27b-it":{"id":"google.gemma-3-27b-it","name":"Google Gemma 3 27B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-27","last_updated":"2025-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":8192},"cost":{"input":0.12,"output":0.2}},"amazon.nova-micro-v1:0":{"id":"amazon.nova-micro-v1:0","name":"Nova Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875}},"anthropic.claude-fable-5":{"id":"anthropic.claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"xai.grok-4.6":{"id":"xai.grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":6.6,"cache_read":0.55}},"global.anthropic.claude-fable-5":{"id":"global.anthropic.claude-fable-5","name":"Claude Fable 5 (Global)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"au.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (AU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"eu.anthropic.claude-sonnet-4-6":{"id":"eu.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (EU)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125}},"jp.anthropic.claude-opus-4-8":{"id":"jp.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (JP)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"eu.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (EU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375}},"qwen.qwen3-next-80b-a3b":{"id":"qwen.qwen3-next-80b-a3b","name":"Qwen/Qwen3-Next-80B-A3B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.14,"output":1.4}},"us.anthropic.claude-sonnet-5":{"id":"us.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (US)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"global.anthropic.claude-opus-4-7":{"id":"global.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (Global)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"qwen.qwen3-coder-480b-a35b-v1:0":{"id":"qwen.qwen3-coder-480b-a35b-v1:0","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.22,"output":1.8}},"openai.gpt-5.6-terra":{"id":"openai.gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5}}},"nvidia.nemotron-super-3-120b":{"id":"nvidia.nemotron-super-3-120b","name":"NVIDIA Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.65}},"zai.glm-4.7-flash":{"id":"zai.glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4}},"google.gemma-3-4b-it":{"id":"google.gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.04,"output":0.08}},"global.openai.gpt-5.6-terra":{"id":"global.openai.gpt-5.6-terra","name":"GPT-5.6 Terra (Global)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"zai.glm-5":{"id":"zai.glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":101376},"cost":{"input":1,"output":3.2}},"openai.gpt-oss-safeguard-120b":{"id":"openai.gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6}},"mistral.devstral-2-123b":{"id":"mistral.devstral-2-123b","name":"Devstral 2 123B","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.4,"output":2}},"us.anthropic.claude-opus-4-1-20250805-v1:0":{"id":"us.anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1 (US)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"us.anthropic.claude-sonnet-4-6":{"id":"us.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (US)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"mistral.voxtral-small-24b-2507":{"id":"mistral.voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":8192},"cost":{"input":0.15,"output":0.35}},"openai.gpt-oss-20b":{"id":"openai.gpt-oss-20b","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/v1","shape":"responses"},"cost":{"input":0.07,"output":0.3}},"meta.llama4-maverick-17b-instruct-v1:0":{"id":"meta.llama4-maverick-17b-instruct-v1:0","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.24,"output":0.97}},"zai.glm-4.7":{"id":"zai.glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2}},"us.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"us.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (US)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"jp.anthropic.claude-sonnet-4-6":{"id":"jp.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (JP)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"us.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (US)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"us.deepseek.r1-v1:0":{"id":"us.deepseek.r1-v1:0","name":"DeepSeek-R1 (US)","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4}},"us.anthropic.claude-opus-4-8":{"id":"us.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (US)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"au.anthropic.claude-opus-5":{"id":"au.anthropic.claude-opus-5","name":"Claude Opus 5 (AU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic.claude-opus-4-1-20250805-v1:0":{"id":"anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"jp.anthropic.claude-sonnet-5":{"id":"jp.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (JP)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"au.anthropic.claude-sonnet-5":{"id":"au.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (AU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"xai.grok-4.3":{"id":"xai.grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-06-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"openai.gpt-oss-120b":{"id":"openai.gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/v1","shape":"responses"},"cost":{"input":0.15,"output":0.6}},"meta.llama3-1-70b-instruct-v1:0":{"id":"meta.llama3-1-70b-instruct-v1:0","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72}},"global.anthropic.claude-fable-5-1":{"id":"global.anthropic.claude-fable-5-1","name":"Claude Fable 5.1 (Global)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"us.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (US)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic.claude-fable-5-1":{"id":"anthropic.claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"global.anthropic.claude-sonnet-5":{"id":"global.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (Global)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"jp.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (JP)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125}},"deepseek.v3.2":{"id":"deepseek.v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.62,"output":1.85}}}},"merge-gateway":{"id":"merge-gateway","env":["MERGE_GATEWAY_API_KEY"],"npm":"merge-gateway-ai-sdk-provider","api":"https://api-gateway.merge.dev/v1/ai-sdk","name":"Merge Gateway","doc":"https://docs.merge.dev/merge-gateway","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.825,"output":2.4755,"cache_read":0.165}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.574,"output":2.294,"cache_read":0.1148}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":0.574,"cache_read":0.0288}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.144,"output":0.574,"cache_read":0.0288}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.276,"output":1.651,"cache_read":0.0552}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.086,"output":0.688,"cache_read":0.0172}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.057,"output":0.459,"cache_read":0.020357}},"qwen/qwen-flash":{"id":"qwen/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.022,"output":0.216,"cache_read":0.0044}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.029,"output":0.287,"cache_read":0.0058}},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.143,"output":1.434,"cache_read":0.0286}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.8,"cache_read":0.075}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":1.032,"cache_read":0.0344}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.289,"output":2.4}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485,"cache_read":0.0496}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434,"cache_read":0.0718}},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":1010000},"cost":{"input":2.5,"output":6.25,"cache_read":0.5}},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.287,"cache_read":0.023}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.115,"output":0.917,"cache_read":0.023}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.165,"output":0.99,"cache_read":0.033}},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":1.076,"cache_read":0.0216}},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.31,"output":7.88}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3 235B A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":1.147,"cache_read":0.0574}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3-VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":2.867,"cache_read":0.0574}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3-VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":1.147,"cache_read":0.15785}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6}},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":1.8}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.688,"cache_read":0.023}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 Highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":128000}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"Nemotron Nano 9B","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.06,"output":0.23}},"nvidia/nemotron-3.5-lightning-30b-a3b":{"id":"nvidia/nemotron-3.5-lightning-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":0,"output":0}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-3-7-sonnet-20250219":{"id":"anthropic/claude-3-7-sonnet-20250219","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-1-20250805":{"id":"anthropic/claude-opus-4-1-20250805","name":"Claude Opus 4.1 (20250805)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-4-20250514":{"id":"anthropic/claude-opus-4-20250514","name":"Claude Opus 4 (20250514)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4-5-20250929":{"id":"anthropic/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (20250929)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-haiku-4-5-20251001":{"id":"anthropic/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (20251001)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":128000}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4-20250514":{"id":"anthropic/claude-sonnet-4-20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (20251101)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.13,"output":0.4}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Gemini 2.5 Flash Image","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Gemini 3 Pro Image","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":2,"output":12}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"google/gemini-2.5-computer-use-preview-10-2025":{"id":"google/gemini-2.5-computer-use-preview-10-2025","name":"Gemini 2.5 Computer Use Preview (10-2025)","description":"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemini-embedding-001":{"id":"google/gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":4096},"cost":{"input":0.15,"output":0}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Gemini 3.1 Flash Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":3}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash-Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B It","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.14,"output":0.4}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"output":32000},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"cost":{"input":0.22,"output":0.22}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":0.5,"cache_read":0.11}},"bytedance/dola-seed-2.0-code-preview":{"id":"bytedance/dola-seed-2.0-code-preview","name":"Dola Seed 2.0 Code (preview)","description":"Preview coding model for repository understanding, refactors, and engineering tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"bytedance/dola-seed-2.0-code":{"id":"bytedance/dola-seed-2.0-code","name":"Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4}},"bytedance/dola-seed-2.0-lite":{"id":"bytedance/dola-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Efficient Seed model for general chat, analysis, and lightweight production tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-28","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":2}},"bytedance/dola-seed-2.0-pro":{"id":"bytedance/dola-seed-2.0-pro","name":"Seed 2.0 Pro","description":"Higher-capability Seed model for complex chat, analysis, and production tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"bytedance/dola-seed-2.0-mini":{"id":"bytedance/dola-seed-2.0-mini","name":"Seed 2.0 Mini","description":"Low-cost Seed model for general chat, extraction, and lightweight production tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.4}},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Palmyra X5","description":"Enterprise multimodal model for writing, analysis, and tool-assisted workflows","family":"palmyra","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.6,"output":6}},"writer/palmyra-x4":{"id":"writer/palmyra-x4","name":"Palmyra X4","description":"Enterprise language model for writing, analysis, and tool-assisted workflows","family":"palmyra","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-10-09","last_updated":"2024-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":2.5,"output":10}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":5,"output":30,"cache_read":0.5}},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15}},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":2.9,"output":14,"cache_read":0.3}},"moonshot/kimi-k2.5":{"id":"moonshot/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"deepseek/deepseek-v4-flash-0731-fast":{"id":"deepseek/deepseek-v4-flash-0731-fast","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":0.56,"cache_read":0.07}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-v3":{"id":"deepseek/deepseek-v3","name":"DeepSeek V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.58,"output":1.68}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":40960},"cost":{"input":1.35,"output":5.4}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":40960},"cost":{"input":0.28,"output":0.45,"cache_read":0.14}},"deepseek/deepseek-v4-pro-0423":{"id":"deepseek/deepseek-v4-pro-0423","name":"DeepSeek V4 Pro 0423","description":"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":41000},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 Nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 Mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"GPT-5 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT-OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.04,"output":0.2,"cache_read":0.02}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"GPT-5.1 Chat Latest","description":"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-oss-safeguard-120b":{"id":"openai/gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.15,"output":0.6}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o Mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.36}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.2-chat-latest":{"id":"openai/gpt-5.2-chat-latest","name":"GPT-5.2 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4 Mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3 Mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.3-chat-latest":{"id":"openai/gpt-5.3-chat-latest","name":"GPT-5.3 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.6,"output":2.5}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+ 08-2024","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10}},"cohere/command-a-03-2025":{"id":"cohere/command-a-03-2025","name":"Command A 03-2025","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B 12-2024","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R 08-2024","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":50000}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.05,"output":3.3,"cache_read":0.195}},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.015,"output":0.05,"cache_read":0.003}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"Glm 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11,"cache_write":0}},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM-4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.7,"output":2.2,"cache_read":0.13}},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4}},"mistral/devstral-small-2507":{"id":"mistral/devstral-small-2507","name":"Devstral Small","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistral/magistral-medium-latest":{"id":"mistral/magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2,"output":5}},"mistral/mistral-medium-latest":{"id":"mistral/mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2}},"mistral/devstral-medium-2507":{"id":"mistral/devstral-medium-2507","name":"Devstral Medium","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistral/devstral-medium-latest":{"id":"mistral/devstral-medium-latest","name":"Devstral 2 (latest)","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral/mistral-small-latest":{"id":"mistral/mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6}},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"mistral/mistral-large-2411":{"id":"mistral/mistral-large-2411","name":"Mistral Large 2.1","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":2,"output":6}},"mistral/mistral-medium-2505":{"id":"mistral/mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistral/codestral-latest":{"id":"mistral/codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9}},"mistral/pixtral-large-latest":{"id":"mistral/pixtral-large-latest","name":"Pixtral Large (latest)","description":"Mistral's larger vision model for document-heavy image understanding and chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":2,"output":6}}}},"deepseek":{"id":"deepseek","env":["DEEPSEEK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.deepseek.com","name":"DeepSeek","doc":"https://api-docs.deepseek.com/quick_start/pricing","models":{"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"status":"beta","cost":{"input":0.14,"output":0.28,"reasoning":0.28,"cache_read":0.0028}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"reasoning":0.28,"cache_read":0.0028}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"reasoning":0.87,"cache_read":0.003625}}}},"abacus":{"id":"abacus","env":["ABACUS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://routellm.abacus.ai/v1","name":"Abacus","doc":"https://abacus.ai/help/api","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"qwen-2.5-coder-32b":{"id":"qwen-2.5-coder-32b","name":"Qwen 2.5 Coder 32B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.79,"output":0.79}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.2,"output":1.5}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"claude-3-7-sonnet-20250219":{"id":"claude-3-7-sonnet-20250219","name":"Claude Sonnet 3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"kimi-k2-turbo-preview":{"id":"kimi-k2-turbo-preview","name":"Kimi K2 Turbo Preview","description":"Fast Kimi model for responsive chat, coding help, and agent loops","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":0.15,"output":8}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"GPT-5.1 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":1.2,"output":6}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5}},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"grok-4-0709":{"id":"grok-4-0709","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":3,"output":15}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.3-codex-xhigh":{"id":"gpt-5.3-codex-xhigh","name":"GPT-5.3 Codex XHigh","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2}},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.5}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3}},"route-llm":{"id":"route-llm","name":"RouteLLM","description":"RouteLLM routes prompts to an appropriate Abacus-backed text-generation model","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2026-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":3,"output":15}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"GPT-5.2 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Llama 3.3 70B Versatile","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.59,"output":0.79}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"Grok 4 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"o3-pro":{"id":"o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":40}},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"gpt-4o-2024-11-20":{"id":"gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.14,"output":0.28,"cache_read":0.03}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":3,"output":7}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-15","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":0.4}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.74,"output":3.48,"cache_read":0.15}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-4.5":{"id":"zai-org/GLM-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":96000},"cost":{"input":0.6,"output":2.2}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2}},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":3.74,"output":9.36,"cache_read":0.748}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.13,"output":0.6}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.29,"output":1.2}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen 2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":0.38}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.09,"output":0.29}},"Qwen/QwQ-32B":{"id":"Qwen/QwQ-32B","name":"QwQ 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2024-11-28","last_updated":"2024-11-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.4,"output":0.4}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.32,"output":3.2}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.55,"output":1.66}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"meta-llama/Meta-Llama-3.1-8B-Instruct":{"id":"meta-llama/Meta-Llama-3.1-8B-Instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.05}},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{"id":"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","name":"Llama 3.1 405B Instruct Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":3.5,"output":3.5}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.14,"output":0.59}},"meta-llama/Meta-Llama-3.3-70B-Instruct":{"id":"meta-llama/Meta-Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.59,"output":0.79}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.08,"output":0.44}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}}}},"blueclaw":{"id":"blueclaw","env":["BLUECLAW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://openai.blueclaw.network/v1","name":"Blue Claw","doc":"https://blueclaw.network","models":{"Qwen3.6-27B":{"id":"Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":65536},"status":"beta"},"Qwen/Qwen3.6-35B-A3B-FP8":{"id":"Qwen/Qwen3.6-35B-A3B-FP8","name":"Qwen3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"status":"beta"}}},"kosmik":{"id":"kosmik","env":["KOSMIK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.koscompute.com/v1","name":"Kosmik Compute","doc":"https://api.koscompute.com/docs/","models":{"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.35,"output":2.2,"cache_read":0.09}}}},"opencode":{"id":"opencode","env":["OPENCODE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://opencode.ai/zen/v1","name":"OpenCode Zen","doc":"https://opencode.ai/docs/zen","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"nemotron-3-ultra-free":{"id":"nemotron-3-ultra-free","name":"Nemotron 3 Ultra Free","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-02","release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Legacy model retained for compatibility with older integrations","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":2.2,"cache_read":0.1}},"hy3-preview-free":{"id":"hy3-preview-free","name":"Hy3 preview Free","description":"Legacy model retained for compatibility with older integrations","family":"hy3-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"grok-code":{"id":"grok-code","name":"Grok Code Fast 1","description":"Legacy model retained for compatibility with older integrations","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-20","last_updated":"2025-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"muse-spark-1.3-contributor-free":{"id":"muse-spark-1.3-contributor-free","name":"Muse Spark 1.3 Free","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for coding and agentic workflows.","family":"muse-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0,"output":0,"cache_read":0}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Legacy model retained for compatibility with older integrations","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":2.2,"cache_read":0.1}},"north-mini-code-free":{"id":"north-mini-code-free","name":"North Mini Code Free","description":"Cohere coding model for practical software engineering and agentic edits","family":"north-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09-23","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0}},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.3,"output":1.2,"cache_read":0.1}},"minimax-m2.1-free":{"id":"minimax-m2.1-free","name":"MiniMax-M2.1 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol (50% Off)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"longcat-2.0-free":{"id":"longcat-2.0-free","name":"LongCat-2.0 Free","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"deepseek-v4-flash-free":{"id":"deepseek-v4-flash-free","name":"DeepSeek V4 Flash Free","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"laguna-s-2.1-free":{"id":"laguna-s-2.1-free","name":"Laguna S 2.1 Free","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Legacy model retained for compatibility with older integrations","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2.5,"cache_read":0.4}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 Codex Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-spark","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5}},"minimax-m3-free":{"id":"minimax-m3-free","name":"MiniMax-M3 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-m3-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1,"output":2,"cache_read":0.2}},"qwen3-coder":{"id":"qwen3-coder","name":"Qwen3 Coder","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.45,"output":1.8}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"muse-spark-1.2-contributor-free":{"id":"muse-spark-1.2-contributor-free","name":"Muse Spark 1.2 Free","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0,"output":0,"cache_read":0}},"x-preview-f-free":{"id":"x-preview-f-free","name":"Ox Alpha Free (Unlimited)","description":"Stealth reasoning model for coding, agentic tasks, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"ling-2.6-flash-free":{"id":"ling-2.6-flash-free","name":"Ling 2.6 Flash Free","description":"Legacy model retained for compatibility with older integrations","family":"ling-flash-free","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":32800},"status":"deprecated","cost":{"input":0,"output":0}},"gemini-3-pro":{"id":"gemini-3-pro","name":"Gemini 3 Pro","description":"Legacy model retained for compatibility with older integrations","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/google"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"nemotron-3.5-lightning-free":{"id":"nemotron-3.5-lightning-free","name":"Nemotron 3.5 Lightning Free","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"hy3-free":{"id":"hy3-free","name":"Hy3 Free","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hy3-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":190000,"input":192000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"kimi-k2.5-free":{"id":"kimi-k2.5-free","name":"Kimi K2.5 Free","description":"Legacy model retained for compatibility with older integrations","family":"kimi-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"ring-2.6-1t-free":{"id":"ring-2.6-1t-free","name":"Ring 2.6 1T Free","description":"Legacy model retained for compatibility with older integrations","family":"ring-1t-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-05-08","last_updated":"2026-05-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":66000},"status":"deprecated","cost":{"input":0,"output":0}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"mimo-v2.5-free":{"id":"mimo-v2.5-free","name":"MiMo V2.5 Free","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo-v2.5-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0}},"claude-3-5-haiku":{"id":"claude-3-5-haiku","name":"Claude Haiku 3.5","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"nemotron-3-super-free":{"id":"nemotron-3-super-free","name":"Nemotron 3 Super Free","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180,"cache_read":30}},"big-pickle":{"id":"big-pickle","name":"Big Pickle","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"big-pickle","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-17","last_updated":"2025-10-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":160000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"ling-3.0-flash-fin-free":{"id":"ling-3.0-flash-fin-free","name":"Ling 3.0 Flash Fin Free","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Legacy model retained for compatibility with older integrations","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2.5,"cache_read":0.4}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3,"cache_read":0.08}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"ling-3.0-flash-free":{"id":"ling-3.0-flash-free","name":"Ling-3.0-flash Free","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"trinity-large-preview-free":{"id":"trinity-large-preview-free","name":"Trinity Large Preview","description":"Legacy model retained for compatibility with older integrations","family":"trinity","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-01-27","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0,"output":0}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.84,"cache_read":0.145}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180,"cache_read":30}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5}},"glm-4.7-free":{"id":"glm-4.7-free","name":"GLM-4.7 Free","description":"Legacy model retained for compatibility with older integrations","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"glm-5-free":{"id":"glm-5-free","name":"GLM-5 Free","description":"Legacy model retained for compatibility with older integrations","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}}},"mimo-v2-flash-free":{"id":"mimo-v2-flash-free","name":"MiMo V2 Flash Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-flash-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"minimax-m2.5-free":{"id":"minimax-m2.5-free","name":"MiniMax-M2.5 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2-omni-free":{"id":"mimo-v2-omni-free","name":"MiMo V2 Omni Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-omni-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2-pro-free":{"id":"mimo-v2-pro-free","name":"MiMo V2 Pro Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-pro-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"qwen3.6-plus-free":{"id":"qwen3.6-plus-free","name":"Qwen3.6 Plus Free","description":"Legacy model retained for compatibility with older integrations","family":"qwen-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"ling-3.0-tiny-free":{"id":"ling-3.0-tiny-free","name":"Ling-3.0-tiny Free","description":"Compact MoE model for responsive agents, instruction following, and multi-turn conversations","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0,"output":0}}}},"moonshotai-cn":{"id":"moonshotai-cn","env":["MOONSHOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.moonshot.cn/v1","name":"Moonshot AI (China)","doc":"https://platform.moonshot.cn/docs/api/chat","models":{"kimi-k2-thinking-turbo":{"id":"kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.15,"output":8,"cache_read":0.15}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"kimi-k2-0905-preview":{"id":"kimi-k2-0905-preview","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"kimi-k2-0711-preview":{"id":"kimi-k2-0711-preview","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-14","last_updated":"2025-07-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"kimi-k2-turbo-preview":{"id":"kimi-k2-turbo-preview","name":"Kimi K2 Turbo","description":"Fast Kimi model for responsive chat, coding help, and agent loops","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.4,"output":10,"cache_read":0.6}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code HighSpeed","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}}}},"stepfun-step-plan":{"id":"stepfun-step-plan","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.com/step_plan/v1","name":"StepFun Step Plan (China)","doc":"https://platform.stepfun.com/docs/zh/step-plan/integrations/reasoning-api","models":{"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}},"step-router-v1":{"id":"step-router-v1","name":"Step Router v1","description":"StepFun routing model that dispatches requests to the appropriate Step model.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":256000}}}},"nearai":{"id":"nearai","env":["NEARAI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://cloud-api.near.ai/v1","name":"NEAR AI Cloud","doc":"https://docs.near.ai/","models":{"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15.5,"cache_read":0.3,"cache_write":3.75}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4,"cache_read":0.026}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"google/gemini-3-pro":{"id":"google/gemini-3-pro","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":15,"cache_read":0}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"zai-org/GLM-5.1-FP8":{"id":"zai-org/GLM-5.1-FP8","name":"GLM-5.1 FP8","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.85,"output":3.3}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B-A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.55}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":3.2}},"Qwen/Qwen3.6-35B-A3B-FP8":{"id":"Qwen/Qwen3.6-35B-A3B-FP8","name":"Qwen 3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.17,"output":1.1,"cache_read":0.056}},"Qwen/Qwen3-Embedding-0.6B":{"id":"Qwen/Qwen3-Embedding-0.6B","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":1024},"cost":{"input":0.01,"output":0}},"Qwen/Qwen3-Reranker-0.6B":{"id":"Qwen/Qwen3-Reranker-0.6B","name":"Qwen3 Reranker 0.6B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":1024},"cost":{"input":0.01,"output":0.01}},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen3-VL 30B-A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.15,"output":0.55}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.01,"output":0}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":32768},"cost":{"input":0.15,"output":0.55}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.8,"output":15.5,"cache_read":0.18}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"black-forest-labs/FLUX.2-klein-4B":{"id":"black-forest-labs/FLUX.2-klein-4B","name":"FLUX.2 Klein 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["image"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":1,"output":1}}}},"openrouter":{"id":"openrouter","env":["OPENROUTER_API_KEY"],"npm":"@openrouter/ai-sdk-provider","api":"https://openrouter.ai/api/v1","name":"OpenRouter","doc":"https://openrouter.ai/models","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.65,"output":3.25,"cache_read":0.13,"cache_write":0.8125,"tiers":[{"input":1.17,"output":5.85,"cache_read":0.234,"cache_write":1.4625,"tier":{"type":"context","size":32000}},{"input":1.95,"output":9.75,"cache_read":0.39,"cache_write":2.4375,"tier":{"type":"context","size":128000}}]}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.23,"output":2.3}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.15}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":1.1,"cache_read":0.07}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375,"tiers":[{"input":0.325,"output":1.625,"cache_read":0.065,"cache_write":0.40625,"tier":{"type":"context","size":32000}},{"input":0.52,"output":2.6,"cache_read":0.104,"cache_write":0.65,"tier":{"type":"context","size":128000}}]}},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.12,"output":0.24}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625,"tiers":[{"input":1.3,"output":3.9,"cache_write":1.625,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.3,"output":3.9,"cache_write":1.625}}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.195,"output":1.56}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":1.25,"cache_read":0.25}},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen3.5 Plus 2026-04-20","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375,"tiers":[{"input":0.375,"output":2.25,"cache_write":0.46875,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.375,"output":2.25,"cache_write":0.46875}}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.08,"output":0.28}},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen3.5 Plus 2026-02-15","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56,"tiers":[{"input":0.325,"output":1.95,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.325,"output":1.95}}},"qwen/qwen-plus-2025-07-28":{"id":"qwen/qwen-plus-2025-07-28","name":"Qwen Plus 0728","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"tiers":[{"input":0.78,"output":2.34,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.78,"output":2.34}}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen3 Coder 480B A35B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.1}},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-02-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.12,"output":0.8,"cache_read":0.07}},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.28}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.0875,"output":0.35,"cache_read":0.0175}},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen3.5-Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.55,"output":3.5,"cache_read":0.225}},"qwen/qwen3-vl-8b-thinking":{"id":"qwen/qwen3-vl-8b-thinking","name":"Qwen3 VL 8B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.18,"output":2.1}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.6,"output":3.6,"cache_read":0.12}},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991000,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.02,"cache_write":0.125,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.04,"cache_write":0.25,"tier":{"type":"context","size":256000}}]}},"qwen/qwen3-30b-a3b-thinking-2507":{"id":"qwen/qwen3-30b-a3b-thinking-2507","name":"Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":81920,"output":32768},"cost":{"input":0.2,"output":2.4}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.9,"cache_read":0.05}},"qwen/qwen3-max-thinking":{"id":"qwen/qwen3-max-thinking","name":"Qwen3 Max Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-09","last_updated":"2026-02-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.78,"output":3.9,"tiers":[{"input":1.56,"output":7.8,"tier":{"type":"context","size":32000}},{"input":1.95,"output":9.75,"tier":{"type":"context","size":128000}}]}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.78,"output":3.9,"cache_read":0.156,"cache_write":0.975,"tiers":[{"input":1.56,"output":7.8,"cache_read":0.312,"cache_write":1.95,"tier":{"type":"context","size":32000}},{"input":1.95,"output":9.75,"cache_read":0.39,"cache_write":2.4375,"tier":{"type":"context","size":128000}}]}},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen3 VL 8B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.117,"output":0.455}},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.25}},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.6}},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325,"tiers":[{"input":0.78,"output":2.34,"cache_read":0.156,"cache_write":0.975,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.78,"output":2.34,"cache_read":0.156,"cache_write":0.975}}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.29,"output":2.4}},"qwen/qwen-2.5-coder-32b-instruct":{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.04815,"output":0.19305}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375,"tiers":[{"input":0.75,"output":3,"cache_write":0.9375,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.75,"output":3,"cache_write":0.9375}}},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.12,"output":0.5}},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen3 VL 30B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":2.4}},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.027,"output":6.162,"cache_write":1.28375,"tiers":[{"input":1.58,"output":9.48,"cache_write":1.975,"tier":{"type":"context","size":128000}}]}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4}},"qwen/qwen3-8b":{"id":"qwen/qwen3-8b","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.117,"output":0.455}},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.455,"output":1.82}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":4}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.1}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4,"tiers":[{"input":0.96,"output":3.84,"cache_read":0.192,"cache_write":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.96,"output":3.84,"cache_read":0.192,"cache_write":1.2}}},"qwen/qwen3-vl-32b-instruct":{"id":"qwen/qwen3-vl-32b-instruct","name":"Qwen3 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-23","last_updated":"2025-10-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.104,"output":0.416}},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B ","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"Aion-2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"Aion-RP 1.0 (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12-31","release_date":"2025-02-04","last_updated":"2025-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"Aion-3.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"Aion-3.0-Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Claude Fable Latest","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Anthropic Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Anthropic Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph V3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph V3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":81920,"output":38000},"cost":{"input":0.8,"output":1.2}},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-07-22","last_updated":"2023-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65}},"~deepseek/deepseek-v4-flash-latest":{"id":"~deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-01","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1310720,"output":393216},"cost":{"input":0.05,"output":0.16,"cache_read":0.013}},"dots-studio/dots-3-note-preview:free":{"id":"dots-studio/dots-3-note-preview:free","name":"Dots3-Note Preview (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0}},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"Grok Latest","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"LongCat 2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048756,"output":262144},"cost":{"input":0.3,"output":1.2,"cache_read":0.006}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.12,"cache_read":0.03}},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Laguna XS 2.1 (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Laguna S 2.1 (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.09,"output":0.18,"cache_read":0.009}},"kwaipilot/kat-coder-pro-v2":{"id":"kwaipilot/kat-coder-pro-v2","name":"KAT-Coder-Pro V2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":144000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kwaipilot/kat-coder-pro-v2.5":{"id":"kwaipilot/kat-coder-pro-v2.5","name":"KAT-Coder-Pro V2.5","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.74,"output":2.96,"cache_read":0.15}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":256000,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Ministral 3 14B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11-30","release_date":"2024-02-26","last_updated":"2024-02-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Codestral 2508","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-01","last_updated":"2025-08-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03}},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5}},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-03-31","release_date":"2024-11-19","last_updated":"2024-11-19","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral Small 3.2 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.075,"output":0.2}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-01-31","release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02}},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Ministral 3 3B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01}},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.019,"output":0.03}},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral Small 3","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral Small 3.1 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555}},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Ministral 3 8B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015}},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.255,"output":1.02}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.27,"output":1.08,"cache_read":0.027}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax-M2 Her","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax-01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-03-31","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000192,"output":900172},"cost":{"input":0.2,"output":1.1}},"minimax/minimax-m3:free":{"id":"minimax/minimax-m3:free","name":"MiniMax M3 (free)","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0,"output":0}},"minimax/minimax-m2.7:free":{"id":"minimax/minimax-m2.7:free","name":"MiniMax M2.7 (free)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":176947},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-lightning:free":{"id":"nvidia/nemotron-3.5-lightning:free","name":"Nemotron 3.5 Lightning (free)","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2}},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.08,"output":0.2,"cache_read":0.04}},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"Nemotron 3 Nano Omni (free)","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.085,"output":0.4}},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra (free)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"Nemotron 3 Super (free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0}},"nvidia/nemotron-3.5-content-safety:free":{"id":"nvidia/nemotron-3.5-content-safety:free","name":"Nemotron 3.5 Content Safety (free)","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.625,"output":3.125,"cache_read":0.1875}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.05,"output":0.2,"cache_read":0.03}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Claude 3 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.07,"output":0.34}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5}},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.1}},"google/lyria-3-clip-preview":{"id":"google/lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"reasoning":0.4,"cache_read":0.01,"cache_write":0.083333}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333}},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.45,"cache_read":0.04}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333}},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Gemini 2.5 Pro Preview 06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"google/gemma-4-31b-it:free":{"id":"google/gemma-4-31b-it:free","name":"Gemma 4 31B (free)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.34,"cache_read":0.05}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/lyria-3-pro-preview":{"id":"google/lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333}},"google/gemini-2.5-pro-preview-05-06":{"id":"google/gemini-2.5-pro-preview-05-06","name":"Gemini 2.5 Pro Preview 05-06","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.15}},"google/gemma-4-26b-a4b-it:free":{"id":"google/gemma-4-26b-a4b-it:free","name":"Gemma 4 26B A4B (free)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Gemma 2 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-07-13","last_updated":"2024-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65}},"relace/relace-apply-3":{"id":"relace/relace-apply-3","name":"Relace Apply 3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25}},"relace/relace-search":{"id":"relace/relace-search","name":"Relace Search","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3}},"nex-agi/nex-n2-mini":{"id":"nex-agi/nex-n2-mini","name":"Nex-N2-Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-24","last_updated":"2026-06-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025}},"nex-agi/nex-n2-pro":{"id":"nex-agi/nex-n2-pro","name":"Nex-N2-Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-08","last_updated":"2026-06-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":1,"cache_read":0.025}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1}},"thinkingmachines/inkling-small:free":{"id":"thinkingmachines/inkling-small:free","name":"Inkling Small (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0}},"thinkingmachines/inkling:free":{"id":"thinkingmachines/inkling:free","name":"Inkling (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0}},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":471859},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-07-02","last_updated":"2023-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":3686},"cost":{"input":0.06,"output":0.06}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":1.1,"cache_read":0.04}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5}},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"Skyfall 36B V2","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"UnslopNemo 12B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-11-08","last_updated":"2024-11-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":26214},"cost":{"input":0.4,"output":0.4}},"thedrummer/cydonia-24b-v4.1":{"id":"thedrummer/cydonia-24b-v4.1","name":"Cydonia 24B V4.1","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2025-09-27","last_updated":"2025-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"bytedance/ui-tars-1.5-7b":{"id":"bytedance/ui-tars-1.5-7b","name":"UI-TARS 7B ","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1}},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"Seed 1.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3,"tiers":[{"input":0.1,"output":0.8,"tier":{"type":"context","size":128000}}]}},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5}},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"tiers":[{"input":1,"output":6,"tier":{"type":"context","size":128000}}]}},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2,"tiers":[{"input":0.5,"output":4,"tier":{"type":"context","size":128000}}]}},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4,"tiers":[{"input":0.2,"output":0.8,"tier":{"type":"context","size":128000}}]}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2,"tiers":[{"input":0.5,"output":4,"tier":{"type":"context","size":128000}}]}},"inception/mercury-2.5-preview":{"id":"inception/mercury-2.5-preview","name":"Mercury 2.5 Preview","description":"Preview model for early access evaluation, prototyping, and compatibility testing","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Palmyra X5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"palmyra","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-21","last_updated":"2026-01-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6}},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Google Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["audio","pdf","image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Google Gemini Flash Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"microsoft/phi-4":{"id":"microsoft/phi-4","name":"Phi 4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":14745},"cost":{"input":0.07,"output":0.14}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-04-16","last_updated":"2024-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15}},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"MoonshotAI Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":2.5,"output":14,"cache_read":0.29}},"ibm-granite/granite-4.1-8b":{"id":"ibm-granite/granite-4.1-8b","name":"Granite 4.1 8B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.1,"cache_read":0.05}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.1,"output":0.15,"cache_read":0.05}},"ibm-granite/granite-4.0-h-micro":{"id":"ibm-granite/granite-4.0-h-micro","name":"Granite 4.0 Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112}},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":144900},"cost":{"input":0.55,"output":1.65,"cache_read":0.55}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.1154,"output":3.3462,"cache_read":0.03718}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":943718},"cost":{"input":0.065,"output":0.18,"cache_read":0.016}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.088606,"output":0.177212,"cache_read":0.017721}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345}},"deepseek/deepseek-r1-distill-llama-70b":{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07-31","release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":7372},"cost":{"input":0.8,"output":0.8}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.27,"output":1,"cache_read":0.135}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.04226,"output":2.08452,"cache_read":0.086855}},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":147456},"cost":{"input":0.25,"output":1}},"~openai/gpt-latest":{"id":"~openai/gpt-latest","name":"OpenAI GPT Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"OpenAI GPT Mini Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Nova Micro 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2}},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Nova Premier 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24}},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling-3.0-flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.021,"output":0.063,"cache_read":0.0042}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"inclusionai/ling-3.0-flash-fin:free":{"id":"inclusionai/ling-3.0-flash-fin:free","name":"Ling 3.0 Flash Fin (free)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5}},"mancer/weaver":{"id":"mancer/weaver","name":"Weaver (alpha)","description":"General-purpose chat model for instruction following, writing, and analysis","family":"alpha","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-08-02","last_updated":"2023-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75}},"openrouter/free":{"id":"openrouter/free","name":"Free Models Router","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":8000},"cost":{"input":0,"output":0}},"openrouter/pareto-code":{"id":"openrouter/pareto-code","name":"Pareto Code Router","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":200000}},"openrouter/bodybuilder":{"id":"openrouter/bodybuilder","name":"Body Builder (beta)","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000}},"openrouter/fusion":{"id":"openrouter/fusion","name":"Fusion","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"openrouter/auto":{"id":"openrouter/auto","name":"Auto Router","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2023-11-08","last_updated":"2023-11-08","modalities":{"input":["text","image","audio","pdf","video"],"output":["text","image"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"sao10k/l3.3-euryale-70b":{"id":"sao10k/l3.3-euryale-70b","name":"Llama 3.3 Euryale 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.65,"output":0.75}},"sao10k/l3-lunaris-8b":{"id":"sao10k/l3-lunaris-8b","name":"Llama 3 8B Lunaris","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05}},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Llama 3.1 Euryale 70B v2.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-28","last_updated":"2024-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85}},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.08,"cache_read":0.025}},"meta-llama/llama-guard-4-12b":{"id":"meta-llama/llama-guard-4-12b","name":"Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.18,"output":0.18}},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.33}},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":115200},"cost":{"input":0.2,"output":0.696}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32}},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Hermes 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-18","last_updated":"2024-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7}},"nousresearch/hermes-3-llama-3.1-405b":{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Hermes 3 405B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-16","last_updated":"2024-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1}},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"Hermes 4 405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3}},"nousresearch/hermes-4-70b":{"id":"nousresearch/hermes-4-70b","name":"Hermes 4 70B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.13,"output":0.4}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"o4 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-06-30","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120}},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"GPT-4o-mini (2024-07-18)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"o-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"o3 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-10-31","release_date":"2025-02-12","last_updated":"2025-02-12","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"GPT Audio Mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"openai/gpt-4-turbo-preview":{"id":"openai/gpt-4-turbo-preview","name":"GPT-4 Turbo Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT-5.6 Luna Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.03,"output":0.13,"cache_read":0.03}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"GPT-5 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT-5.6 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"gpt-oss-safeguard-20b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.4-image-2":{"id":"openai/gpt-5.4-image-2","name":"GPT-5.4 Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2}},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"GPT-3.5 Turbo (older v0613)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2}},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"GPT Audio","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT-5.6 Terra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-05-05","last_updated":"2026-05-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"GPT-3.5 Turbo 16k","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2023-08-28","last_updated":"2023-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4}},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"GPT-5 Image Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["pdf","image","text"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.037,"output":0.17}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2023-09-28","last_updated":"2023-09-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"~z-ai/glm-flash-latest":{"id":"~z-ai/glm-flash-latest","name":"GLM Flash Latest","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1310720,"output":943718},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"~z-ai/glm-latest":{"id":"~z-ai/glm-latest","name":"GLM Latest","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1310720,"output":235929},"cost":{"input":1.15,"output":3.5,"cache_read":0.1}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12-31","release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":100352},"cost":{"input":0.6,"output":2.5}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.66,"output":3.4,"cache_read":0.18}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":100352},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12-31","release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":100352},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"North Mini Code (free)","description":"Cohere coding model for practical software engineering and agentic edits","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10}},"cohere/command-a":{"id":"cohere/command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"tencent/hy-mt2-30b-a3b":{"id":"tencent/hy-mt2-30b-a3b","name":"Hy-MT2-30B-A3B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-7b":{"id":"tencent/hy-mt2-7b","name":"Hy-MT2-7B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-1.8b":{"id":"tencent/hy-mt2-1.8b","name":"Hy-MT2-1.8B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177}},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06}},"tencent/hunyuan-a13b-instruct":{"id":"tencent/hunyuan-a13b-instruct","name":"Hunyuan A13B Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57}},"liquid/lfm-2.5-2.6b:free":{"id":"liquid/lfm-2.5-2.6b:free","name":"LFM2.5-2.6B (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.4,"output":1.75,"cache_read":0.08}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.966,"output":3.036,"cache_read":0.1932}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1310720,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11}},"z-ai/glm-5.2:free":{"id":"z-ai/glm-5.2:free","name":"GLM 5.2 (free)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":230400},"cost":{"input":0,"output":0}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.6,"output":1.92,"cache_read":0.12}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.966,"output":3.036,"cache_read":0.1794}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.14}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","name":"Uncensored","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04-30","release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"perplexity/sonar-pro-search":{"id":"perplexity/sonar-pro-search","name":"Sonar Pro Search","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3}},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1}},"rekaai/reka-flash-3":{"id":"rekaai/reka-flash-3","name":"Reka Flash 3","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"reka","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2}}}},"cline-pass":{"id":"cline-pass","env":["CLINE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cline.bot/api/v1","name":"ClinePass","doc":"https://docs.cline.bot/getting-started/clinepass","models":{"cline-pass/qwen3.7-max":{"id":"cline-pass/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"cline-pass/kimi-k2.6":{"id":"cline-pass/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"cline-pass/glm-5.2":{"id":"cline-pass/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"cline-pass/minimax-m3":{"id":"cline-pass/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"cline-pass/deepseek-v4-flash":{"id":"cline-pass/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"cline-pass/kimi-k2.7-code":{"id":"cline-pass/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"cline-pass/kimi-k3":{"id":"cline-pass/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"cline-pass/qwen3.8-max":{"id":"cline-pass/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"cline-pass/qwen3.7-plus":{"id":"cline-pass/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5}}},"cline-pass/deepseek-v4-pro":{"id":"cline-pass/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145}},"cline-pass/glm-5.3":{"id":"cline-pass/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"cline-pass/mimo-v2.5":{"id":"cline-pass/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"cline-pass/mimo-v2.5-pro":{"id":"cline-pass/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145}}}},"iteracompute":{"id":"iteracompute","env":["ITERACOMPUTE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.iteracompute.com/v1","name":"IteraCompute","doc":"https://iteracompute.com/docs.html","models":{"iteracompute/qwen3.8-27b":{"id":"iteracompute/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":262144,"output":65536},"cost":{"input":0.3,"output":2.5}},"iteracompute/ornith-1.5-35b-a3b":{"id":"iteracompute/ornith-1.5-35b-a3b","name":"Ornith 1.5 35B A3B","description":"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding","family":"ornith","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":262144,"output":65536},"cost":{"input":0.3,"output":3}}}},"model-oracle-ai":{"id":"model-oracle-ai","env":["MODEL_ORACLE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.modeloracle.com/api/v1","name":"Model Oracle AI","doc":"https://modeloracle.com/setup/","models":{"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000}},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000}},"auto":{"id":"auto","name":"Auto","description":"Model Oracle AI decision engine that selects and routes among configured coding-agent models","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-29","last_updated":"2026-07-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000}}}},"ofox":{"id":"ofox","env":["OFOX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ofox.ai/v1","name":"Ofox","doc":"https://ofox.ai/docs","models":{"bailian/qwen3.7-max":{"id":"bailian/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"bailian/qwen3-coder-plus":{"id":"bailian/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":9,"cache_read":0.2,"cache_write":1}},"bailian/qwen-vl-max":{"id":"bailian/qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.58,"cache_read":0.046}},"bailian/qwen3-coder-flash":{"id":"bailian/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.06,"cache_write":0.27}},"bailian/qwen-max":{"id":"bailian/qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.35,"output":1.38,"cache_read":0.069}},"bailian/qwen3.6-plus":{"id":"bailian/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625}},"bailian/qwen3.5-27b":{"id":"bailian/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.05,"cache_read":0.29}},"bailian/qwen3.8-27b":{"id":"bailian/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1131072,"output":131072},"cost":{"input":0.45,"output":3.2,"cache_read":0.05,"cache_write":0.5625}},"bailian/qwen3.5-35b-a3b":{"id":"bailian/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.83,"cache_read":0.29}},"bailian/qwen-flash":{"id":"bailian/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.22,"cache_read":0.0043,"cache_write":0.027}},"bailian/qwen-turbo":{"id":"bailian/qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.05,"output":0.09,"cache_read":0.0086}},"bailian/qwen3.5-flash":{"id":"bailian/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125}},"bailian/qwen3-coder-next":{"id":"bailian/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"bailian/qwen3.5-397b-a17b":{"id":"bailian/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.55,"output":3.5,"cache_read":0.55}},"bailian/qwen3.6-27b":{"id":"bailian/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.6,"output":3.6}},"bailian/qwen3.8-max-0902":{"id":"bailian/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"bailian/qwen3-max":{"id":"bailian/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.36,"output":1.43,"cache_read":0.072}},"bailian/qwen-plus":{"id":"bailian/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.12,"output":0.29,"cache_read":0.023}},"bailian/qwen3.5-122b-a10b":{"id":"bailian/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.29,"cache_read":0.29}},"bailian/qwen3.6-flash":{"id":"bailian/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.31}},"bailian/qwen3.6-max-preview":{"id":"bailian/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":2.15,"output":12.86,"cache_read":0.2,"cache_write":1.17}},"bailian/qwen3.8-max":{"id":"bailian/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"bailian/qwen3.7-plus":{"id":"bailian/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5}},"bailian/qwen3.5-plus":{"id":"bailian/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.4}},"volcengine/doubao-seed-2.1-turbo":{"id":"volcengine/doubao-seed-2.1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3536,"output":1.7696,"cache_read":0.068,"cache_write":0.0019}},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.06,"output":0.56,"cache_read":0.02,"cache_write":0.0024}},"volcengine/doubao-seed-2.1-pro":{"id":"volcengine/doubao-seed-2.1-pro","name":"Seed 2.1 Pro","description":"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.7072,"output":3.536,"cache_read":0.1416,"cache_write":0.002}},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024}},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024}},"volcengine/doubao-seed-1-8":{"id":"volcengine/doubao-seed-1-8","name":"Seed 1.8","description":"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-28","last_updated":"2025-12-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023}},"volcengine/doubao-seed-evolving":{"id":"volcengine/doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.884,"output":4.42,"cache_read":0.177,"cache_write":0.0025}},"volcengine/doubao-seed-character":{"id":"volcengine/doubao-seed-character","name":"Seed Character","description":"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.177,"output":0.884,"cache_read":0.024,"cache_write":0.0025}},"volcengine/doubao-seed-1-6-vision":{"id":"volcengine/doubao-seed-1-6-vision","name":"Seed 1.6 Vision","description":"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks","family":"seed","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.12,"output":1.15,"cache_read":0.023}},"volcengine/doubao-seed-1-6-flash":{"id":"volcengine/doubao-seed-1-6-flash","name":"Seed 1.6 Flash","description":"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use","family":"seed","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.03,"output":0.22,"cache_read":0.0043}},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.13,"output":0.76,"cache_read":0.03,"cache_write":0.0024}},"volcengine/doubao-seed-1-6":{"id":"volcengine/doubao-seed-1-6","name":"Seed 1.6","description":"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023}},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax-M2.1 Lightning","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/m2-her":{"id":"minimax/m2-her","name":"MiniMax-M2 Her","description":"MiniMax M2 variant tuned for conversational and character-driven agent interactions","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax-M2.5 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.025,"cache_write":1,"input_audio":0.3}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415,"input_audio":1.5}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1,"input_audio":0.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083,"input_audio":3}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415,"input_audio":1.5}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":4.5}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":1,"input_audio":1}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"status":"beta","cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.29,"output":0.43,"cache_read":0.06}},"deepseek/deepseek-v4-pro-0423":{"id":"deepseek/deepseek-v4-pro-0423","name":"DeepSeek V4 Pro 0423","description":"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":4,"output":12,"cache_read":0.4}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.3}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.5}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","description":"xAI's fast agentic tool-calling model with a 2M context window; non-reasoning variant for low-latency responses","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.18}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.18}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":30,"output":180}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.18}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":5,"output":30,"cache_read":0.5}},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.4,"output":1.9,"cache_read":0.11}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.072,"output":0.43,"cache_read":0.015}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}}}},"arcee":{"id":"arcee","env":["ARCEE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.arcee.ai/api/v1","name":"Arcee","doc":"https://docs.arcee.ai","models":{"trinity-large-thinking":{"id":"trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0.25,"output":0.8,"cache_read":0.06}},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"status":"beta","cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"status":"beta","cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"deepseek/deepseek-v4-flash-latest":{"id":"deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"status":"beta","cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":384000},"status":"beta","cost":{"input":1.74,"output":3.48,"cache_read":0.2}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"beta","cost":{"input":3,"output":15,"cache_read":0.3}}}},"kuae-cloud-coding-plan":{"id":"kuae-cloud-coding-plan","env":["KUAE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding-plan-endpoint.kuaecloud.net/v1","name":"KUAE Cloud Coding Plan","doc":"https://docs.mthreads.com/kuaecloud/kuaecloud-doc-online/coding_plan/","models":{"GLM-4.7":{"id":"GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"ebcloud":{"id":"ebcloud","env":["EBCLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://maas-api.ebcloud.com/v1","name":"EBCloud","doc":"https://docs.ebtech.com/ai/model-api.html","models":{"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.143,"output":0.2857}},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.8571,"output":3.4286}},"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.9286,"output":3.8571}},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.4286,"output":0.8571}}}},"agnes":{"id":"agnes","env":["AGNES_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://apihub.agnes-ai.com/v1","name":"Agnes AI","doc":"https://agnes-ai.com/doc","models":{"agnes-2.5-pro-alpha":{"id":"agnes-2.5-pro-alpha","name":"Agnes 2.5 Pro Alpha","description":"Paid reasoning model for advanced coding, scientific reasoning, long-context analysis, agentic workflows, and multimodal understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.45,"output":0.9,"cache_read":0.0038}},"agnes-2.5-flash":{"id":"agnes-2.5-flash","name":"Agnes 2.5 Flash","description":"Upgraded model with improved coding, agent workflows, tool calling, and multimodal understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07","last_updated":"2026-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0}},"agnes-2.0-flash":{"id":"agnes-2.0-flash","name":"Agnes 2.0 Flash","description":"Fast and efficient model for agent workflows, tool calling, coding, and image understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-25","last_updated":"2026-05-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0}}}},"amd":{"id":"amd","env":["AMD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://developer.amd.com.cn/radeon/api/v1","name":"AMD","doc":"https://developer.amd.com.cn/radeon/tokenfactory","models":{"Qwen3.8-Flash-Next":{"id":"Qwen3.8-Flash-Next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016}},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"DeepSeek-V4-Flash-Vision-Exp":{"id":"DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"MiniCPM5-1B":{"id":"MiniCPM5-1B","name":"MiniCPM5-1B","description":"Dense 1B-class open-source model for on-device and resource-constrained use, with native long-context support, Think / No Think chat modes, and tool calling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.124,"output":0.7425,"cache_read":0.124}}}},"xiaomi-token-plan-sgp":{"id":"xiaomi-token-plan-sgp","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-sgp.xiaomimimo.com/v1","name":"Xiaomi Token Plan (Singapore)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}}}},"neon":{"id":"neon","env":["NEON_AI_GATEWAY_BASE_URL","NEON_AI_GATEWAY_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"${NEON_AI_GATEWAY_BASE_URL}/v1","name":"Neon","doc":"https://neon.com/docs","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5-6-terra":{"id":"gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"qwen35-122b-a10b":{"id":"qwen35-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":25000},"cost":{"input":0.22,"output":2.2}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":10000},"cost":{"input":0.15,"output":1.2}},"gpt-5-4-nano":{"id":"gpt-5-4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5-6-sol":{"id":"gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"meta-llama-3-3-70b-instruct":{"id":"meta-llama-3-3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.5,"output":1.5}},"gpt-5-3-codex":{"id":"gpt-5-3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5-6-luna":{"id":"gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":25000},"cost":{"input":0.07,"output":0.3}},"gemini-3-1-pro":{"id":"gemini-3-1-pro","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gpt-5-2":{"id":"gpt-5-2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gemini-3-1-flash-lite":{"id":"gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"llama-4-maverick":{"id":"llama-4-maverick","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":8192},"cost":{"input":0.5,"output":1.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-3-5-flash-lite":{"id":"gemini-3-5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.3}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"meta-llama-3-1-8b-instruct":{"id":"meta-llama-3-1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Meta's compact open-weight Llama 3.1 model for fast, low-cost text generation","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.45}},"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"glm-5-2":{"id":"glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-5-1":{"id":"gpt-5-1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5-5-pro":{"id":"gpt-5-5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":25000},"cost":{"input":0.15,"output":0.6}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"gemma-3-12b":{"id":"gemma-3-12b","name":"Gemma 3 12B","description":"Google's open-weight Gemma 3 vision-language model for text and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.5}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"gpt-5-4":{"id":"gpt-5-4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}}}},"qihang-ai":{"id":"qihang-ai","env":["QIHANG_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.qhaigc.net/v1","name":"QiHang","doc":"https://www.qhaigc.net/docs","models":{"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.14,"output":1.14}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.57,"output":3.43}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.43,"output":2.14}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.14,"output":0.71}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.07,"output":0.43,"tiers":[{"input":0.07,"output":0.43,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.07,"output":0.43}}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5-Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.04,"output":0.29}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.71,"tiers":[{"input":0.09,"output":0.71,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.09,"output":0.71}}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":0.71,"output":3.57}}}},"scnet-token-plan":{"id":"scnet-token-plan","env":["SCNET_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scnet.cn/api/llm/v1","name":"SCNet Token Plan","doc":"https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/plans/token-plan.html","models":{"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"Qwen3.8-Max":{"id":"Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"DeepSeek-V4-Flash-0731":{"id":"DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"Qwen3.8-Flash":{"id":"Qwen3.8-Flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"Kimi-K2.5":{"id":"Kimi-K2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"GLM-5.3":{"id":"GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"Kimi-K2.7-Code":{"id":"Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"MiMo-V2.5-Pro":{"id":"MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"GLM-5":{"id":"GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0}},"DeepSeek-V4-Pro-0813":{"id":"DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"Kimi-K3":{"id":"Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"GLM-5.3-Flash":{"id":"GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"DeepSeek-V3.2":{"id":"DeepSeek-V3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0}},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}}}},"inference":{"id":"inference","env":["INFERENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.net/v1","name":"Inference","doc":"https://inference.net/models","models":{"qwen/qwen-2.5-7b-vision-instruct":{"id":"qwen/qwen-2.5-7b-vision-instruct","name":"Qwen 2.5 7B Vision Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":125000,"output":4096},"cost":{"input":0.2,"output":0.2}},"qwen/qwen3-embedding-4b":{"id":"qwen/qwen3-embedding-4b","name":"Qwen 3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0}},"google/gemma-3":{"id":"google/gemma-3","name":"Google Gemma 3","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":125000,"output":4096},"cost":{"input":0.15,"output":0.3}},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.025,"output":0.025}},"meta/llama-3.2-3b-instruct":{"id":"meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.02,"output":0.02}},"meta/llama-3.2-1b-instruct":{"id":"meta/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.01,"output":0.01}},"meta/llama-3.2-11b-vision-instruct":{"id":"meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.055,"output":0.055}},"osmosis/osmosis-structure-0.6b":{"id":"osmosis/osmosis-structure-0.6b","name":"Osmosis Structure 0.6B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"osmosis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4000,"output":2048},"cost":{"input":0.1,"output":0.5}},"mistral/mistral-nemo-12b-instruct":{"id":"mistral/mistral-nemo-12b-instruct","name":"Mistral Nemo 12B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.038,"output":0.1}}}},"openai":{"id":"openai","env":["OPENAI_API_KEY"],"npm":"@ai-sdk/openai","name":"OpenAI","doc":"https://platform.openai.com/docs/models","models":{"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"gpt-4o-2024-05-13":{"id":"gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":5,"output":15}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"chatgpt-image-latest":{"id":"chatgpt-image-latest","name":"chatgpt-image-latest","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"gpt-4o-2024-08-06":{"id":"gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 Codex Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-spark","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":100000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"gpt-image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0}},"o1-pro":{"id":"o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":150,"output":600}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2022-12","release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"gpt-image-1":{"id":"gpt-image-1","name":"gpt-image-1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0},"status":"deprecated"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"gpt-image-1-mini":{"id":"gpt-image-1-mini","name":"gpt-image-1-mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"gpt-image-2":{"id":"gpt-image-2","name":"gpt-image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25}},"gpt-3.5-turbo":{"id":"gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"status":"deprecated","cost":{"input":0.5,"output":1.5,"cache_read":0}},"gpt-5.6":{"id":"gpt-5.6","name":"GPT-5.6","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-01","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-01","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.13,"output":0}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"gpt-4":{"id":"gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"status":"deprecated","cost":{"input":30,"output":60}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":1.75,"output":14,"cache_read":0.175}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"gpt-realtime-2.1":{"id":"gpt-realtime-2.1","name":"GPT-Realtime-2.1","description":"Realtime speech-to-speech model with configurable reasoning, tool use, and robust voice-agent behavior","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","audio","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"input":96000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4,"input_audio":32,"output_audio":64}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"o3-pro":{"id":"o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"gpt-4o-2024-11-20":{"id":"gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}}}},"aiand":{"id":"aiand","env":["AIAND_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.aiand.com/v1","name":"ai&","doc":"https://docs.aiand.com/","models":{"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.2}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2}},"motif-technologies/motif-3":{"id":"motif-technologies/motif-3","name":"Motif 3","description":"Motif 3 is a large-scale, decoder-only Mixture-of-Experts (MoE) language model with 314 billion total parameters and 13.2 billion parameters activated per token.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2}},"deepseek-ai/deepseek-v4-flash":{"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.25}},"deepseek-ai/deepseek-v4-pro":{"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1,"output":2.5}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.5}},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4}},"zai-org/glm-5.3":{"id":"zai-org/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.3}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":12.5,"cache_read":0.5}}}},"siliconflow":{"id":"siliconflow","env":["SILICONFLOW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.siliconflow.com/v1","name":"SiliconFlow","doc":"https://cloud.siliconflow.com/models","models":{"baidu/ERNIE-4.5-300B-A47B":{"id":"baidu/ERNIE-4.5-300B-A47B","name":"baidu/ERNIE-4.5-300B-A47B","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-02","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.28,"output":1.1}},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"stepfun-ai/Step-3.5-Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","family":"step","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"deepseek-ai/DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"deepseek-ai/DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V3.2-Exp":{"id":"deepseek-ai/DeepSeek-V3.2-Exp","name":"deepseek-ai/DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.41}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"deepseek-ai/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"inclusionAI/Ling-flash-2.0":{"id":"inclusionAI/Ling-flash-2.0","name":"inclusionAI/Ling-flash-2.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.4}},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.4}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"zai-org/GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"zai-org/GLM-5V-Turbo":{"id":"zai-org/GLM-5V-Turbo","name":"zai-org/GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"zai-org/GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":0.95,"output":2.55,"cache_read":0.2}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen/Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3}},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"id":"Qwen/Qwen3-VL-30B-A3B-Thinking","name":"Qwen/Qwen3-VL-30B-A3B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":2}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06}},"Qwen/Qwen3-VL-32B-Thinking":{"id":"Qwen/Qwen3-VL-32B-Thinking","name":"Qwen/Qwen3-VL-32B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-14B":{"id":"Qwen/Qwen3-14B","name":"Qwen/Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-01","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen/Qwen3.5-9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.15}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.08}},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen/Qwen3-VL-235B-A22B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.3,"output":1.5}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1}},"Qwen/Qwen2.5-7B-Instruct":{"id":"Qwen/Qwen2.5-7B-Instruct","name":"Qwen/Qwen2.5-7B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen/Qwen2.5-72B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.39,"output":2.34}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.24,"output":1.8}},"Qwen/Qwen3-VL-32B-Instruct":{"id":"Qwen/Qwen3-VL-32B-Instruct","name":"Qwen/Qwen3-VL-32B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen/Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.13,"output":0.6}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":3.2}},"Qwen/Qwen3-VL-8B-Instruct":{"id":"Qwen/Qwen3-VL-8B-Instruct","name":"Qwen/Qwen3-VL-8B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.6}},"Qwen/Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen/Qwen3-VL-235B-A22B-Thinking","name":"Qwen/Qwen3-VL-235B-A22B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":3.5}},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen/Qwen3-VL-30B-A3B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"ByteDance-Seed/Seed-OSS-36B-Instruct":{"id":"ByteDance-Seed/Seed-OSS-36B-Instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMaxAI/MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":197000,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"openai/gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":8000},"cost":{"input":0.04,"output":0.18}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"openai/gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":8000},"cost":{"input":0.05,"output":0.45}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"moonshotai/Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.77,"output":4,"cache_read":0.2}},"tencent/Hunyuan-A13B-Instruct":{"id":"tencent/Hunyuan-A13B-Instruct","name":"tencent/Hunyuan-A13B-Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"tencent/Hy3-preview":{"id":"tencent/Hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.066,"output":0.26,"cache_read":0.029}}}},"stepfun-ai-step-plan":{"id":"stepfun-ai-step-plan","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.ai/step_plan/v1","name":"StepFun Step Plan (Global)","doc":"https://platform.stepfun.ai/docs/en/step-plan/integrations/reasoning-api","models":{"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000}}}},"hetzner":{"id":"hetzner","env":["HETZNER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.hetzner.com/api/v1","name":"Hetzner","doc":"https://experiments.hetzner.com/docs/inference","models":{"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8-27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0,"output":0,"cache_read":0}},"Qwen/Qwen3.6-35B-A3B-FP8":{"id":"Qwen/Qwen3.6-35B-A3B-FP8","name":"Qwen3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0,"output":0,"cache_read":0}}}},"snowflake-cortex":{"id":"snowflake-cortex","env":["SNOWFLAKE_ACCOUNT","SNOWFLAKE_CORTEX_PAT"],"npm":"@ai-sdk/openai-compatible","api":"https://${SNOWFLAKE_ACCOUNT}.snowflakecomputing.com/api/v2/cortex/v1","name":"Snowflake Cortex","doc":"https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-rest-api","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"openai-gpt-5.1":{"id":"openai-gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai-gpt-5.6-terra":{"id":"openai-gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"openai-gpt-4.1":{"id":"openai-gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768}},"mistral-large2":{"id":"mistral-large2","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"openai-gpt-5.2":{"id":"openai-gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai-gpt-5.6-luna":{"id":"openai-gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta"},"openai-gpt-5":{"id":"openai-gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"status":"beta"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}}},"openai-gpt-5.6-sol":{"id":"openai-gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"openai-gpt-5.4":{"id":"openai-gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}}},"openai-gpt-5-nano":{"id":"openai-gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"status":"beta"},"openai-gpt-5.5":{"id":"openai-gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384}},"openai-gpt-5-mini":{"id":"openai-gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"input":272000,"output":8192},"status":"beta"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"snowflake-llama3.3-70b":{"id":"snowflake-llama3.3-70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096}}}},"meganova":{"id":"meganova","env":["MEGANOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.meganova.ai/v1","name":"Meganova","doc":"https://docs.meganova.ai","models":{"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":0.88}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15}},"deepseek-ai/DeepSeek-V3.2-Exp":{"id":"deepseek-ai/DeepSeek-V3.2-Exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-10-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.4}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.26,"output":0.38}},"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"mistralai/Mistral-Small-3.2-24B-Instruct-2506","name":"Mistral Small 3.2 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo Instruct 2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.02,"output":0.04}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.2,"output":0.8}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.8,"output":2.56}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.45,"output":1.9}},"Qwen/Qwen2.5-VL-32B-Instruct":{"id":"Qwen/Qwen2.5-VL-32B-Instruct","name":"Qwen2.5 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3.5-Plus":{"id":"Qwen/Qwen3.5-Plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.6}},"MiniMaxAI/MiniMax-M2.1":{"id":"MiniMaxAI/MiniMax-M2.1","name":"MiniMax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.28,"output":1.2}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.3}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.6}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.8}},"XiaomiMiMo/MiMo-V2-Flash":{"id":"XiaomiMiMo/MiMo-V2-Flash","name":"MiMo V2 Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.1,"output":0.3}}}},"moonshotai":{"id":"moonshotai","env":["MOONSHOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.moonshot.ai/v1","name":"Moonshot AI","doc":"https://platform.moonshot.ai/docs/api/chat","models":{"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code HighSpeed","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"kimi-k2-turbo-preview":{"id":"kimi-k2-turbo-preview","name":"Kimi K2 Turbo","description":"Fast Kimi model for responsive chat, coding help, and agent loops","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.4,"output":10,"cache_read":0.6}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k2-0711-preview":{"id":"kimi-k2-0711-preview","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-14","last_updated":"2025-07-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"kimi-k2-0905-preview":{"id":"kimi-k2-0905-preview","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"kimi-k2-thinking-turbo":{"id":"kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.15,"output":8,"cache_read":0.15}}}},"volcengine-coding-plan":{"id":"volcengine-coding-plan","env":["ARK_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ark.cn-beijing.volces.com/api/coding/v3","name":"Volcengine Ark Coding Plan","doc":"https://www.volcengine.com/docs/82379/1928261","models":{"doubao-seed-2.1-turbo":{"id":"doubao-seed-2.1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"doubao-seed-evolving":{"id":"doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0}},"doubao-seed-2.0-lite":{"id":"doubao-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}}}},"302ai":{"id":"302ai","env":["302AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.302.ai/v1","name":"302.AI","doc":"https://doc.302.ai","models":{"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"claude-sonnet-4-6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-18","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"ministral-14b-2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.33,"output":0.33}},"claude-3-5-haiku-latest":{"id":"claude-3-5-haiku-latest","name":"claude-3-5-haiku-latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":0.8,"output":4}},"glm-4.7":{"id":"glm-4.7","name":"glm-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142}},"glm-4.5-air":{"id":"glm-4.5-air","name":"glm-4.5-air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.1143,"output":0.286}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"grok-4-1-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"qwen-max-latest":{"id":"qwen-max-latest","name":"Qwen-Max-Latest","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.343,"output":1.372}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"gpt-4.1-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4}},"claude-sonnet-4-6-thinking":{"id":"claude-sonnet-4-6-thinking","name":"claude-sonnet-4-6-thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-18","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-10-26","last_updated":"2025-10-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.33,"output":1.32}},"glm-4.6":{"id":"glm-4.6","name":"glm-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142}},"gpt-5-pro":{"id":"gpt-5-pro","name":"gpt-5-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-08","last_updated":"2025-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"gemini-2.5-flash-image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-08","last_updated":"2025-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.145,"output":0.43}},"gpt-5.4-mini-2026-03-17":{"id":"gpt-5.4-mini-2026-03-17","name":"gpt-5.4-mini-2026-03-17","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5}},"deepseek-v3.2-thinking":{"id":"deepseek-v3.2-thinking","name":"DeepSeek-V3.2-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.29,"output":0.43}},"qwen-flash":{"id":"qwen-flash","name":"Qwen-Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.22}},"chatgpt-4o-latest":{"id":"chatgpt-4o-latest","name":"chatgpt-4o-latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-08","last_updated":"2024-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":5,"output":15}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"claude-opus-4-5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25}},"gpt-5.4-nano-2026-03-17":{"id":"gpt-5.4-nano-2026-03-17","name":"gpt-5.4-nano-2026-03-17","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"kimi-k2-thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.575,"output":2.3}},"claude-sonnet-4-5-20250929-thinking":{"id":"claude-sonnet-4-5-20250929-thinking","name":"claude-sonnet-4-5-20250929-thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"gemini-3-pro-preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"claude-opus-4-1-20250805","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"qwen3-max-2025-09-23":{"id":"qwen3-max-2025-09-23","name":"qwen3-max-2025-09-23","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":258048,"output":65536},"cost":{"input":0.86,"output":3.43}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"gpt-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6}},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"gemini-2.0-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-11","release_date":"2025-06-16","last_updated":"2025-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":8192},"cost":{"input":0.075,"output":0.3}},"glm-4.5-x":{"id":"glm-4.5-x","name":"glm-4.5-x","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.143,"output":2.29}},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"Deepseek-Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.29,"output":0.43}},"gpt-5.4":{"id":"gpt-5.4","name":"gpt-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":0,"tiers":[{"input":5,"output":22.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5}}},"claude-3-5-haiku-20241022":{"id":"claude-3-5-haiku-20241022","name":"claude-3-5-haiku-20241022","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":0.8,"output":4}},"glm-for-coding":{"id":"glm-for-coding","name":"glm-for-coding","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.086,"output":0.343}},"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"grok-4-1-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"gemini-2.5-flash-preview-09-2025","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"claude-opus-4-20250514","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"gpt-5.1":{"id":"gpt-5.1","name":"gpt-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"gpt-5.1-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"gemini-2.5-flash-lite-preview-09-2025","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"claude-opus-4-6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-06","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"mistral-large-2512":{"id":"mistral-large-2512","name":"mistral-large-2512","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":262144},"cost":{"input":1.1,"output":3.3}},"glm-4.5-airx":{"id":"glm-4.5-airx","name":"glm-4.5-airx","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.572,"output":1.714}},"gpt-4o":{"id":"gpt-4o","name":"gpt-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"claude-opus-4-5-20251101-thinking":{"id":"claude-opus-4-5-20251101-thinking","name":"claude-opus-4-5-20251101-thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"grok-4-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"claude-sonnet-4-5-20250929","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"claude-opus-4-7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"deepseek-chat":{"id":"deepseek-chat","name":"Deepseek-Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-11-29","last_updated":"2024-11-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.29,"output":0.43}},"claude-opus-4-6-thinking":{"id":"claude-opus-4-6-thinking","name":"claude-opus-4-6-thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-02-06","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"deepseek-v3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.29,"output":0.43}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"claude-haiku-4-5-20251001","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.286,"output":1.142}},"kimi-k2-0905-preview":{"id":"kimi-k2-0905-preview","name":"kimi-k2-0905-preview","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.632,"output":2.53}},"doubao-seed-1-8-251215":{"id":"doubao-seed-1-8-251215","name":"doubao-seed-1-8-251215","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":224000,"output":64000},"cost":{"input":0.114,"output":0.286}},"grok-4.1":{"id":"grok-4.1","name":"grok-4.1","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2,"output":10}},"qwen-plus":{"id":"qwen-plus","name":"Qwen-Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.12,"output":1.2}},"gpt-4.1":{"id":"gpt-4.1","name":"gpt-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"gpt-5.4-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"gemini-3-pro-image-preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":64000},"cost":{"input":2,"output":120}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax-M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-16","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.132,"output":1.254}},"gemini-2.5-flash-nothink":{"id":"gemini-2.5-flash-nothink","name":"gemini-2.5-flash-nothink","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-24","last_updated":"2025-06-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.29,"output":0.86}},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3-30B-A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":1.08}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"glm-4.7-flashx","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-20","last_updated":"2026-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.0715,"output":0.429}},"gpt-5-thinking":{"id":"gpt-5-thinking","name":"gpt-5-thinking","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"gpt-5.4-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"claude-haiku-4-5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"claude-sonnet-4-5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"glm-5":{"id":"glm-5","name":"glm-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.6}},"glm-5.1":{"id":"glm-5.1","name":"glm-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-10","last_updated":"2026-04-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.86,"output":3.5}},"doubao-seed-code-preview-251028":{"id":"doubao-seed-code-preview-251028","name":"doubao-seed-code-preview-251028","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-11","last_updated":"2025-11-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.17,"output":1.14}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3-235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.29,"output":2.86}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"gemini-3-flash-preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"qwen3-235b-a22b-instruct-2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":65536},"cost":{"input":0.29,"output":1.143}},"glm-5-turbo":{"id":"glm-5-turbo","name":"glm-5-turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2}},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"gpt-5.4-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":0,"cache_write":0,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"qwen3-coder-480b-a35b-instruct","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.86,"output":3.43}},"grok-4.20-beta-0309-non-reasoning":{"id":"grok-4.20-beta-0309-non-reasoning","name":"grok-4.20-beta-0309-non-reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":10}},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"gemini-3.1-flash-image-preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":4.8}},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"claude-sonnet-4-20250514","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"doubao-seed-1-6-vision-250815":{"id":"doubao-seed-1-6-vision-250815","name":"doubao-seed-1-6-vision-250815","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.114,"output":1.143}},"doubao-seed-1-6-thinking-250715":{"id":"doubao-seed-1-6-thinking-250715","name":"doubao-seed-1-6-thinking-250715","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16000},"cost":{"input":0.121,"output":1.21}},"gpt-5":{"id":"gpt-5","name":"gpt-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"grok-4.20-beta-0309-reasoning":{"id":"grok-4.20-beta-0309-reasoning","name":"grok-4.20-beta-0309-reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6}},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"gpt-5.2-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14}},"claude-opus-4-1-20250805-thinking":{"id":"claude-opus-4-1-20250805-thinking","name":"claude-opus-4-1-20250805-thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-27","last_updated":"2025-05-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"grok-4-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"kimi-k2-thinking-turbo":{"id":"kimi-k2-thinking-turbo","name":"kimi-k2-thinking-turbo","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.265,"output":9.119}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"claude-opus-4-5-20251101","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25}},"grok-4.20-multi-agent-beta-0309":{"id":"grok-4.20-multi-agent-beta-0309","name":"grok-4.20-multi-agent-beta-0309","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}}}},"cohere":{"id":"cohere","env":["COHERE_API_KEY"],"npm":"@ai-sdk/cohere","name":"Cohere","doc":"https://docs.cohere.com/docs/models","models":{"command-r7b-arabic-02-2025":{"id":"command-r7b-arabic-02-2025","name":"Command R7B Arabic","description":"Open Command R model optimized for Arabic enterprise chat, RAG, and cultural knowledge","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"command-a-plus-05-2026":{"id":"command-a-plus-05-2026","name":"Command A Plus","description":"Cohere's stronger command model for multilingual agents and enterprise workflows","family":"command-a","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04-01","release_date":"2026-05-20","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":2.5,"output":10}},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"Command A Reasoning","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":2.5,"output":10}},"command-a-vision-07-2025":{"id":"command-a-vision-07-2025","name":"Command A Vision","description":"Cohere vision model for multilingual document analysis, OCR, and image understanding","family":"command-a","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8000},"cost":{"input":2.5,"output":10}},"north-mini-code-1-0":{"id":"north-mini-code-1-0","name":"North Mini Code","description":"Cohere coding model for practical software engineering and agentic edits","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09-23","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.cohere.ai/compatibility/v1"},"cost":{"input":0,"output":0}},"command-r-plus-08-2024":{"id":"command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10}},"command-a-translate-08-2025":{"id":"command-a-translate-08-2025","name":"Command A Translate","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"cost":{"input":2.5,"output":10}},"command-a-03-2025":{"id":"command-a-03-2025","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10}},"c4ai-aya-expanse-32b":{"id":"c4ai-aya-expanse-32b","name":"Aya Expanse 32B","description":"Open multilingual model optimized for generation across 23 languages","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-24","last_updated":"2024-10-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000}},"c4ai-aya-expanse-8b":{"id":"c4ai-aya-expanse-8b","name":"Aya Expanse 8B","description":"Compact open multilingual model optimized for generation across 23 languages","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-24","last_updated":"2024-10-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":4000}},"c4ai-aya-vision-8b":{"id":"c4ai-aya-vision-8b","name":"Aya Vision 8B","description":"Compact open multilingual vision model for OCR and visual question answering","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-04","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4000}},"command-r7b-12-2024":{"id":"command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"c4ai-aya-vision-32b":{"id":"c4ai-aya-vision-32b","name":"Aya Vision 32B","description":"Open multilingual vision model for OCR, visual reasoning, and image question answering","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-04","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4000}},"command-r-08-2024":{"id":"command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6}}}},"upstage":{"id":"upstage","env":["UPSTAGE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.upstage.ai/v1/solar","name":"Upstage","doc":"https://developers.upstage.ai/docs/apis/chat","models":{"solar-mini":{"id":"solar-mini","name":"solar-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"solar-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-06-12","last_updated":"2025-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.15,"output":0.15}},"solar-pro4":{"id":"solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"solar-pro3":{"id":"solar-pro3","name":"solar-pro3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.25,"output":0.25}},"solar-pro2":{"id":"solar-pro2","name":"solar-pro2","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.25,"output":0.25}}}},"sarvam":{"id":"sarvam","env":["SARVAM_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.sarvam.ai/v1","name":"Sarvam AI","doc":"https://docs.sarvam.ai/api-reference-docs/getting-started/models","models":{"sarvam-105b":{"id":"sarvam-105b","name":"Sarvam-105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":[null,"low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-18","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072}},"sarvam-30b":{"id":"sarvam-30b","name":"Sarvam-30B","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":[null,"low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-18","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536}}}},"xai":{"id":"xai","env":["XAI_API_KEY"],"npm":"@ai-sdk/xai","name":"xAI","doc":"https://docs.x.ai/docs/models","models":{"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-4.20-0309-reasoning":{"id":"grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-4.20-multi-agent-0309":{"id":"grok-4.20-multi-agent-0309","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-imagine-image":{"id":"grok-imagine-image","name":"Grok Imagine Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"open_weights":false,"limit":{"context":8000,"output":0}},"grok-imagine-video":{"id":"grok-imagine-video","name":"Grok Imagine Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","video","pdf"],"output":["video"]},"open_weights":false,"limit":{"context":1024,"output":0}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"grok-imagine-video-1.5":{"id":"grok-imagine-video-1.5","name":"Grok Imagine Video 1.5","description":"Video model for image-to-video generation, editing, and extension workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-30","last_updated":"2026-05-30","modalities":{"input":["text","image","audio","pdf"],"output":["video"]},"open_weights":false,"limit":{"context":1024,"output":0}},"grok-imagine-image-2.0":{"id":"grok-imagine-image-2.0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"open_weights":false,"limit":{"context":8000,"output":0}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"grok-imagine-image-quality":{"id":"grok-imagine-image-quality","name":"Grok Imagine Image Quality","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-03","last_updated":"2026-04-03","modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"open_weights":false,"limit":{"context":8000,"output":0}},"grok-4.20-0309-non-reasoning":{"id":"grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}}}},"zenifra":{"id":"zenifra","env":["ZENIFRA_AI_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ai.zenifra.com/v1","name":"Zenifra","doc":"https://docs.zenifra.com","models":{"alibaba/qwen3.6-35b-a3b":{"id":"alibaba/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"provider":{"shape":"completions"},"cost":{"input":0.19,"output":0.48}}}},"zai":{"id":"zai","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.z.ai/api/paas/v4","name":"Z.AI","doc":"https://docs.z.ai/guides/overview/pricing","models":{"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015,"cache_write":0}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"bailing":{"id":"bailing","env":["BAILING_API_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tbox.cn/api/llm/v1/chat/completions","name":"Bailing","doc":"https://alipaytbox.yuque.com/sxs0ba/ling/intro","models":{"Ring-1T":{"id":"Ring-1T","name":"Ring-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ring","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-10","last_updated":"2025-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29}},"Ling-1T":{"id":"Ling-1T","name":"Ling-1T","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-10","last_updated":"2025-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29}}}},"tencent-tokenhub":{"id":"tencent-tokenhub","env":["TENCENT_TOKENHUB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://tokenhub.tencentmaas.com/v1","name":"Tencent TokenHub","doc":"https://cloud.tencent.com/document/product/1823/130050","models":{"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"hy3-preview":{"id":"hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"runinfra":{"id":"runinfra","env":["RUNINFRA_GATEWAY_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.runinfra.ai/v1","name":"RunInfra","doc":"https://runinfra.ai/docs","models":{"ornith-ai/Ornith-1.5-35B-A3B":{"id":"ornith-ai/Ornith-1.5-35B-A3B","name":"Ornith 1.5 35B A3B","description":"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"Inferact/Qwen3.8-2.4T-A95B-NVFP4":{"id":"Inferact/Qwen3.8-2.4T-A95B-NVFP4","name":"Qwen3.8 2.4T A95B (NVFP4)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.2}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.13,"output":0.27,"cache_read":0.01}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":1.9,"cache_read":0.03}},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.01}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}}}},"ai-router":{"id":"ai-router","env":["AI_ROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ai-router.dev/v1","name":"AI-ROUTER","doc":"https://ai-router.dev/openai-compatible-api-gateway/","models":{"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}}}},"berget":{"id":"berget","env":["BERGET_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.berget.ai/v1","name":"Berget.AI","doc":"https://api.berget.ai","models":{"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"mistralai/Mistral-Small-3.2-24B-Instruct-2506","name":"Mistral Small 3.2 24B Instruct 2506","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":8192},"cost":{"input":0.33,"output":0.33}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["audio","image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.275,"output":0.55}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":32768},"cost":{"input":1.54,"output":4.84}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-09-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":16384},"cost":{"input":0.29,"output":0.58}},"Qwen/Qwen3.8-27B-FP8":{"id":"Qwen/Qwen3.8-27B-FP8","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.46,"output":3.48}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"output":32768},"cost":{"input":3,"output":15}}}},"mistral":{"id":"mistral","env":["MISTRAL_API_KEY"],"npm":"@ai-sdk/mistral","name":"Mistral","doc":"https://docs.mistral.ai/getting-started/models/","models":{"pixtral-12b":{"id":"pixtral-12b","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15}},"devstral-small-2507":{"id":"devstral-small-2507","name":"Devstral Small","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3}},"magistral-small":{"id":"magistral-small","name":"Magistral Small","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-small","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.5,"output":1.5}},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral-embed":{"id":"mistral-embed","name":"Mistral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":3072},"cost":{"input":0.1,"output":0}},"devstral-small-2505":{"id":"devstral-small-2505","name":"Devstral Small 2505","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"labs-devstral-small-2512":{"id":"labs-devstral-small-2512","name":"Devstral Small 2","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"status":"deprecated","cost":{"input":0,"output":0}},"magistral-medium-latest":{"id":"magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":2,"output":5}},"open-mixtral-8x22b":{"id":"open-mixtral-8x22b","name":"Mixtral 8x22B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":64000},"cost":{"input":2,"output":6}},"open-mixtral-8x7b":{"id":"open-mixtral-8x7b","name":"Mixtral 8x7B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-01","release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.7,"output":0.7}},"open-mistral-7b":{"id":"open-mistral-7b","name":"Mistral 7B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-09-27","last_updated":"2023-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"cost":{"input":0.25,"output":0.25}},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5}},"devstral-medium-2507":{"id":"devstral-medium-2507","name":"Devstral Medium","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral-medium-2604":{"id":"mistral-medium-2604","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5}},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"devstral-medium-latest":{"id":"devstral-medium-latest","name":"Devstral 2 (latest)","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"voxtral-small-latest":{"id":"voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3}},"ministral-8b-latest":{"id":"ministral-8b-latest","name":"Ministral 8B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.1}},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.15,"output":0.15}},"voxtral-mini-tts-latest":{"id":"voxtral-mini-tts-latest","name":"Voxtral Mini TTS (latest)","description":"Multilingual text-to-speech model with zero-shot voice cloning","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"mistral-small-latest":{"id":"mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6}},"open-mistral-nemo":{"id":"open-mistral-nemo","name":"Open Mistral Nemo","description":"Legacy model retained for compatibility with older integrations","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"voxtral-mini-latest":{"id":"voxtral-mini-latest","name":"Voxtral Mini (latest)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral Large 2.1","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":2,"output":6}},"devstral-latest":{"id":"devstral-latest","name":"Devstral 2","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"zai-glm-5-2":{"id":"zai-glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":1.4,"output":4.4,"cache_read":0.14}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6}},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2}},"codestral-latest":{"id":"codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9}},"ministral-3b-latest":{"id":"ministral-3b-latest","name":"Ministral 3B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.04,"output":0.04}},"mistral-medium-2508":{"id":"mistral-medium-2508","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2}},"pixtral-large-latest":{"id":"pixtral-large-latest","name":"Pixtral Large (latest)","description":"Mistral's larger vision model for document-heavy image understanding and chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":2,"output":6}}}},"synthetic":{"id":"synthetic","env":["SYNTHETIC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.synthetic.new/openai/v1","name":"Synthetic","doc":"https://synthetic.new/pricing","models":{"hf:openai/gpt-oss-120b":{"id":"hf:openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1}},"hf:MiniMaxAI/MiniMax-M3":{"id":"hf:MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.6,"output":1.2,"cache_read":0.6}},"hf:moonshotai/Kimi-K2.7-Code":{"id":"hf:moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.95}},"hf:moonshotai/Kimi-K3":{"id":"hf:moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.45}},"hf:Qwen/Qwen3.6-27B":{"id":"hf:Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.6,"cache_read":0.45}},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{"id":"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.3}},"hf:zai-org/GLM-5.2":{"id":"hf:zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":1.4}},"hf:zai-org/GLM-4.7-Flash":{"id":"hf:zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":65536},"cost":{"input":0.1,"output":0.5,"cache_read":0.1}},"hf:zai-org/GLM-5.3-Flash":{"id":"hf:zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":65536},"cost":{"input":0.15,"output":0.5,"cache_read":0.04}}}},"mixlayer":{"id":"mixlayer","env":["MIXLAYER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://models.mixlayer.ai/v1","name":"Mixlayer","doc":"https://docs.mixlayer.com","models":{"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.4}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.4}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.3}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.6}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3.2}}}},"longcat":{"id":"longcat","env":["LONGCAT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.longcat.chat/openai","name":"LongCat","doc":"https://longcat.chat/platform/docs/","models":{"LongCat-2.0":{"id":"LongCat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015}}}},"cerebras":{"id":"cerebras","env":["CEREBRAS_API_KEY"],"npm":"@ai-sdk/cerebras","name":"Cerebras","doc":"https://inference-docs.cerebras.ai/models/overview","models":{"gemma-4-31b":{"id":"gemma-4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-07-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"status":"beta","cost":{"input":0.99,"output":1.49}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.35,"output":0.75}}}},"togetherai":{"id":"togetherai","env":["TOGETHER_API_KEY"],"npm":"@ai-sdk/togetherai","name":"Together AI","doc":"https://docs.together.ai/docs/serverless-models","models":{"essentialai/Rnj-1-Instruct":{"id":"essentialai/Rnj-1-Instruct","name":"Rnj-1 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"rnj","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"deepseek-ai/DeepSeek-V3-1":{"id":"deepseek-ai/DeepSeek-V3-1","name":"DeepSeek V3.1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":1.7}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":1.25,"output":1.25}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163839,"output":163839},"status":"deprecated","cost":{"input":3,"output":7}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.2}},"pearl-ai/gemma-4-31b-it":{"id":"pearl-ai/gemma-4-31b-it","name":"Pearl AI Gemma 4 31B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.28,"output":0.86}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512300,"output":512300},"cost":{"input":0.6,"output":3.6,"cache_read":0.2}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.39,"output":0.97}},"google/gemma-3n-E4B-it":{"id":"google/gemma-3n-E4B-it","name":"Gemma 3N E4B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.06,"output":0.12}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-11","release_date":"2026-04-07","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"status":"deprecated","cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":164000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"status":"deprecated","cost":{"input":1,"output":3.2}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048575,"output":400000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"LiquidAI/LFM2-24B-A2B":{"id":"LiquidAI/LFM2-24B-A2B","name":"LFM2-24B-A2B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"liquid","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12}},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max","xhigh","high","medium","low","none"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":500000},"cost":{"input":1.25,"output":3.75,"cache_read":0.125}},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-tput","name":"Qwen3 235B A22B Instruct 2507 FP8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3.6-Plus":{"id":"Qwen/Qwen3.6-Plus","name":"Qwen3.6 Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":500000},"cost":{"input":0.5,"output":3}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":130000},"status":"deprecated","cost":{"input":0.6,"output":3.6,"cache_read":0.35}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8","name":"Qwen3 Coder 480B A35B Instruct","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":2,"output":2}},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"id":"Qwen/Qwen2.5-7B-Instruct-Turbo","name":"Qwen 2.5 7B Instruct Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3}},"Qwen/Qwen3-Coder-Next-FP8":{"id":"Qwen/Qwen3-Coder-Next-FP8","name":"Qwen3 Coder Next FP8","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2026-02-03","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.5,"output":1.2}},"deepcogito/cogito-v2-1-671b":{"id":"deepcogito/cogito-v2-1-671b","name":"Cogito v2.1 671B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"cogito","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":163840},"cost":{"input":1.25,"output":1.25}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":250000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":1.04,"output":1.04}},"meta-llama/Meta-Llama-3-8B-Instruct-Lite":{"id":"meta-llama/Meta-Llama-3-8B-Instruct-Lite","name":"Meta Llama 3 8B Instruct Lite","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-18","last_updated":"2024-04-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.14,"output":0.14}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.2}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Legacy model retained for compatibility with older integrations","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.5,"output":2.8}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Kimi coding model for software agents, refactors, and repository reasoning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-14","last_updated":"2026-06-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131000},"cost":{"input":1.2,"output":4.5,"cache_read":0.2}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}}}},"cloudflare-workers-ai":{"id":"cloudflare-workers-ai","env":["CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1","name":"Cloudflare Workers AI","doc":"https://developers.cloudflare.com/workers-ai/models/","models":{"@cf/qwen/qwen3-30b-a3b-fp8":{"id":"@cf/qwen/qwen3-30b-a3b-fp8","name":"Qwen3 30B A3b fp8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.0509,"output":0.335}},"@cf/qwen/qwen3.8-27b":{"id":"@cf/qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":3.2,"cache_read":0.05}},"@cf/qwen/qwq-32b":{"id":"@cf/qwen/qwq-32b","name":"Qwq 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":24000,"output":24000},"cost":{"input":0.66,"output":1}},"@cf/qwen/qwen2.5-coder-32b-instruct":{"id":"@cf/qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.66,"output":1}},"@cf/deepseek-ai/deepseek-v4-pro-0813":{"id":"@cf/deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"@cf/deepseek-ai/deepseek-v4-flash-0731":{"id":"@cf/deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":1048576},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{"id":"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b","name":"Deepseek R1 Distill Qwen 32B","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":80000,"output":80000},"cost":{"input":0.497,"output":4.881}},"@cf/mistralai/mistral-small-3.1-24b-instruct":{"id":"@cf/mistralai/mistral-small-3.1-24b-instruct","name":"Mistral Small 3.1 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555}},"@cf/nvidia/nemotron-3-120b-a12b":{"id":"@cf/nvidia/nemotron-3-120b-a12b","name":"Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5}},"@cf/google/gemma-4-26b-a4b-it":{"id":"@cf/google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.1,"output":0.3}},"@cf/zai-org/glm-5.2":{"id":"@cf/zai-org/glm-5.2","name":"Glm 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"@cf/zai-org/glm-5.3-flash":{"id":"@cf/zai-org/glm-5.3-flash","name":"Glm 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"@cf/zai-org/glm-5.3":{"id":"@cf/zai-org/glm-5.3","name":"Glm 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":1310720},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"@cf/zai-org/glm-4.7-flash":{"id":"@cf/zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4}},"@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"id":"@cf/aisingapore/gemma-sea-lion-v4-27b-it","name":"Gemma Sea Lion V4 27B It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555}},"@cf/meta/llama-guard-3-8b":{"id":"@cf/meta/llama-guard-3-8b","name":"Llama Guard 3 8B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.484,"output":0.03}},"@cf/meta/llama-3.1-8b-instruct-fp8":{"id":"@cf/meta/llama-3.1-8b-instruct-fp8","name":"Llama 3.1 8B Instruct fp8","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.152,"output":0.287}},"@cf/meta/llama-3.2-3b-instruct":{"id":"@cf/meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":80000,"output":80000},"cost":{"input":0.0509,"output":0.335}},"@cf/meta/llama-3.2-1b-instruct":{"id":"@cf/meta/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":60000},"cost":{"input":0.027,"output":0.201}},"@cf/meta/llama-4-scout-17b-16e-instruct":{"id":"@cf/meta/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":16384},"cost":{"input":0.27,"output":0.85}},"@cf/meta/llama-3.3-70b-instruct-fp8-fast":{"id":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","name":"Llama 3.3 70B Instruct fp8 Fast","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":24000,"output":24000},"cost":{"input":0.293,"output":2.253}},"@cf/meta/llama-3.2-11b-vision-instruct":{"id":"@cf/meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.0485,"output":0.676}},"@cf/ibm-granite/granite-4.0-h-micro":{"id":"@cf/ibm-granite/granite-4.0-h-micro","name":"Granite 4.0 H Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.017,"output":0.112}},"@cf/openai/gpt-oss-20b":{"id":"@cf/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.3}},"@cf/openai/gpt-oss-120b":{"id":"@cf/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.35,"output":0.75}},"@cf/moonshotai/kimi-k2.6":{"id":"@cf/moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"@cf/moonshotai/kimi-k2.7-code":{"id":"@cf/moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}}}},"moark":{"id":"moark","env":["MOARK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://moark.com/v1","name":"Moark","doc":"https://moark.com/docs/openapi/v1#tag/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90","models":{"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":2.1,"output":8.4,"cache_read":2.1,"cache_write":8.4}},"GLM-4.7":{"id":"GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":3.5,"output":14}}}},"zenmux":{"id":"zenmux","env":["ZENMUX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://zenmux.ai/api/v1","name":"ZenMux","doc":"https://docs.zenmux.ai","models":{"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1020000,"output":1020000},"cost":{"input":0.1,"output":0.4}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":1.2,"output":6}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5}}},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.8,"output":4.8}},"baidu/ernie-5.0-thinking-preview":{"id":"baidu/ernie-5.0-thinking-preview","name":"ERNIE 5.0","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.84,"output":3.37}},"volcengine/doubao-seed-code":{"id":"volcengine/doubao-seed-code","name":"Doubao-Seed-Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-11","last_updated":"2025-11-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0.17,"output":1.12,"cache_read":0.03}},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Doubao-Seed-2.0-mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.03,"output":0.28,"cache_read":0.01,"cache_write":0.0024}},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.9,"output":4.48}},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Doubao-Seed-2.0-pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.45,"output":2.24,"cache_read":0.09,"cache_write":0.0024}},"volcengine/doubao-seed-1.8":{"id":"volcengine/doubao-seed-1.8","name":"Doubao-Seed-1.8","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11,"output":0.28,"cache_read":0.02,"cache_write":0.0024}},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Doubao-Seed-2.0-lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.09,"output":0.51,"cache_read":0.02,"cache_write":0.0024}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.2,"output":1.15}},"stepfun/step-3":{"id":"stepfun/step-3","name":"Step-3","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":64000},"status":"deprecated","cost":{"input":0.21,"output":0.57}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.1,"output":0.3}},"stepfun/step-3.7-flash-free":{"id":"stepfun/step-3.7-flash-free","name":"Step 3.7 Flash (Free)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":256000},"cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":265000,"output":265000},"cost":{"input":0.4,"output":2,"cache_read":0.08}},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}}},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38}},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131070},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.611,"output":2.4439}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131070},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3055,"output":1.2219}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.6,"output":2.4}},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax M2.5 highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.6,"output":4.8,"cache_read":0.06,"cache_write":0.75}},"anthropic/claude-sonnet-5-free":{"id":"anthropic/claude-sonnet-5-free","name":"Claude Sonnet 5 (Free)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2024-11-04","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":4}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-19","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","pdf","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.03,"cache_write":1}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":65530},"cost":{"input":0.25,"output":1.5}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["pdf","image","text","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":4.5}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.3,"output":2.5,"cache_read":0.07,"cache_write":1}},"sapiens-ai/agnes-1.5-lite":{"id":"sapiens-ai/agnes-1.5-lite","name":"Agnes 1.5 Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-26","last_updated":"2026-03-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.12,"output":0.6}},"sapiens-ai/agnes-1.5-pro":{"id":"sapiens-ai/agnes-1.5-pro","name":"Agnes 1.5 Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-21","last_updated":"2026-03-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.16,"output":0.8}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.28,"output":0.42,"cache_read":0.03}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.28,"output":0.43}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163000,"output":64000},"cost":{"input":0.22,"output":0.33}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"kuaishou/kat-coder-pro-v2":{"id":"kuaishou/kat-coder-pro-v2","name":"KAT-Coder-Pro-V2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-12-31","release_date":"2026-05-07","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.06}},"inclusionai/ring-1t":{"id":"inclusionai/ring-1t","name":"Ring-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-12","last_updated":"2025-10-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.56,"output":2.24,"cache_read":0.11}},"inclusionai/ling-1t":{"id":"inclusionai/ling-1t","name":"Ling-1T","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-09","last_updated":"2025-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.56,"output":2.24,"cache_read":0.11}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":0,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"cache_write":0,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4,"cache_write":0}}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0.2,"output":1.5,"cache_read":0.02}},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.75}},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2}},"x-ai/grok-4.2-fast-non-reasoning":{"id":"x-ai/grok-4.2-fast-non-reasoning","name":"Grok 4.2 Fast Non Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":3,"output":9}},"x-ai/grok-4.1-fast-non-reasoning":{"id":"x-ai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":64000},"status":"deprecated","cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"x-ai/grok-4.2-fast":{"id":"x-ai/grok-4.2-fast","name":"Grok 4.2 Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":3,"output":9}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"Grok 4 Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":64000},"status":"deprecated","cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":64000},"status":"deprecated","cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-Codex-Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-01-01","release_date":"2026-01-15","last_updated":"2026-01-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.17}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":21,"output":168}},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":3.75,"output":18.75}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25,"tiers":[{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5}}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.2,"output":1.25}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.75,"output":4.5}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":45,"output":225}},"openai/gpt-5.5-instant":{"id":"openai/gpt-5.5-instant","name":"GPT-5.5 Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-01-01","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.17}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16380},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2025-01-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262140,"output":262140},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2.7-code-free":{"id":"moonshotai/kimi-k2.7-code-free","name":"Kimi K2.7 Code (Free)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2025-01-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"cost":{"input":0.58,"output":3.02,"cache_read":0.1}},"moonshotai/kimi-k3-free":{"id":"moonshotai/kimi-k3-free","name":"Kimi K3 (Free)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"moonshotai/kimi-k2-thinking-turbo":{"id":"moonshotai/kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":1.15,"output":8,"cache_read":0.15}},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":0.572,"cache_read":0.058,"cache_write":0}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.28,"output":1.14,"cache_read":0.06}},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.11,"output":0.56,"cache_read":0.02}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.35,"output":1.54,"cache_read":0.07}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.14,"output":0.42,"cache_read":0.03}},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.5,"cache_read":0.26}},"z-ai/glm-5.2-free":{"id":"z-ai/glm-5.2-free","name":"GLM 5.2 (Free)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0}},"z-ai/glm-4.6v-flash-free":{"id":"z-ai/glm-4.6v-flash-free","name":"GLM 4.6V Flash (Free)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.35,"output":1.54,"cache_read":0.07}},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM 4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.07,"output":0.42,"cache_read":0.01}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.58,"output":2.6,"cache_read":0.14}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-03","last_updated":"2026-04-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.8781,"output":3.5126,"cache_read":0.1903}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.88,"output":3.48}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.726,"output":3.1946,"cache_read":0.1743}},"z-ai/glm-4.7-flash-free":{"id":"z-ai/glm-4.7-flash-free","name":"GLM 4.7 Flash (Free)","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0}},"z-ai/glm-4.6v-flash":{"id":"z-ai/glm-4.6v-flash","name":"GLM 4.6V FlashX","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.02,"output":0.21,"cache_read":0.0043}}}},"vancine":{"id":"vancine","env":["VANCINE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://vancine.com/v1","name":"Vancine","doc":"https://vancine.com/docs","models":{"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.67,"output":2,"cache_read":0.034}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.4,"output":12,"cache_read":0.24}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.06,"output":0.2,"cache_read":0.012}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.38,"cache_read":0.013}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.6,"output":4.8,"cache_read":0.2}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.24,"output":0.96,"cache_read":0.048}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.12,"output":3.52,"cache_read":0.208}}}},"minimax-cn":{"id":"minimax-cn","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimaxi.com/anthropic/v1","name":"MiniMax (minimaxi.com)","doc":"https://platform.minimaxi.com/docs/guides/quickstart","models":{"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}}}},"cortecs":{"id":"cortecs","env":["CORTECS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cortecs.ai/v1","name":"Cortecs","doc":"https://api.cortecs.ai/v1/models","models":{"ministral-14b-2512":{"id":"ministral-14b-2512","name":"ministral-14b-2512","description":"Ministral 3 14B is a frontier-level 14B multimodal model optimized for local deployment, delivering state-of-the-art text and vision reasoning with a 256K context window and strong agentic capabilities.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.223,"output":0.223,"cache_read":0.022}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.06,"output":0.439,"cache_read":0.019}},"qwen3guard-gen-0.6b":{"id":"qwen3guard-gen-0.6b","name":"qwen3guard-gen-0.6b","description":"Qwen3Guard-Gen-0.6B is a lightweight multilingual safety moderation model that classifies prompts and responses into safe, controversial, or unsafe categories.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":81920},"cost":{"input":0.111,"output":0.557}},"nova-2-lite":{"id":"nova-2-lite","name":"nova-2-lite","description":"Nova 2 Lite is an advanced multimodal reasoning model that combines efficiency and performance, delivering reliable AI for agentic workflows and enterprise applications.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.373,"output":3.144}},"mistral-small-2503":{"id":"mistral-small-2503","name":"mistral-small-2503","description":"Combines advanced text and vision capabilities with 24 billion parameters, supporting multilingual tasks and long contexts up to 131k tokens, making it versatile for various applications without sacrificing performance.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.111,"output":0.334}},"mistral-7b-instruct-v0.2":{"id":"mistral-7b-instruct-v0.2","name":"mistral-7b-instruct-v0.2","description":"Mistral 7B Instruct is a compact, 7B parameter model optimized for fast and efficient text and code generation with a 32K token context window.","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":0.159,"output":0.219}},"codestral-2508":{"id":"codestral-2508","name":"Codestral 2508","description":"Mistral coding model for code completion, generation, and developer workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.334,"output":1.003,"cache_read":0.033}},"llama-3.1-8b-instruct":{"id":"llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Optimized for dialogue, this LLM by Meta outperforms other open-source chat models in benchmarks while prioritizing helpfulness and safety.","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.167,"output":0.167}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":2,"output":3.999,"cache_read":0.5}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.111,"output":0.434,"cache_read":0.056}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.13,"output":0.28,"cache_read":0.03}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.149,"output":1.195}},"qwen3.8-flash-next":{"id":"qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.201,"output":0.5,"cache_read":0.05}},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":196000},"cost":{"input":0.359,"output":1.435}},"claude-4-5-sonnet":{"id":"claude-4-5-sonnet","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.989,"output":14.945,"cache_read":0.326,"cache_write":4.078}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.111,"output":0.167}},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.478,"output":2.392,"cache_read":0.045}},"cosmos3-super-reasoner":{"id":"cosmos3-super-reasoner","name":"cosmos3-super-reasoner","description":"Cosmos3 Super Reasoner is a high-capacity reasoning model designed for complex multi-agent tasks and advanced physical AI understanding.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.099,"output":0.296}},"minimax-m2":{"id":"minimax-m2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":400000,"output":196000},"cost":{"input":0.349,"output":1.405}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5.5,"output":32.998,"cache_read":0.55,"cache_write":6.879}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.334,"output":2.451,"cache_read":0.111}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.498,"cache_read":0.55,"cache_write":6.874}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.668,"output":2.674}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.773,"output":3.38,"cache_read":0.193}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1000000},"cost":{"input":1.2,"output":4.2,"cache_read":0.26}},"claude-opus4-5":{"id":"claude-opus4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.313,"output":26.568,"cache_read":0.531,"cache_write":6.645}},"claude-opus4-6":{"id":"claude-opus4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.313,"output":26.561,"cache_read":0.531,"cache_write":6.645}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":196000},"cost":{"input":0.296,"output":1.186,"cache_read":0.075}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.395,"output":1.977,"cache_read":0.099}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5,"cache_read":0.201}},"llama-3.1-405b-instruct":{"id":"llama-3.1-405b-instruct","name":"Llama 3.1 405B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":1.95,"output":1.95}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.089,"output":0.312}},"apertus-70b":{"id":"apertus-70b","name":"Apertus 70B","description":"Apertus 70B is an open, multilingual language model designed for research, long-context reasoning, and sovereignty-focused AI systems.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":1.393,"output":2.228}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.434,"output":1.704,"cache_read":0.134}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2.898,"output":15.453,"cache_read":0.242}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.045,"output":0.167}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.272,"output":1.631,"cache_read":0.025,"cache_write":0.082}},"mistral-large-2402":{"id":"mistral-large-2402","name":"mistral-large-2402","description":"Mistral Large (24.02) is Mistral AI’s most advanced language model, built for complex multilingual reasoning, code generation, and deep text understanding.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":4.284,"output":12.952}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"qwen2.5-vl-72b-instruct","description":"Qwen2.5-VL is a powerful vision-language model with advanced capabilities in visual understanding, long video reasoning, and structured output generation.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":1.014,"output":1.014}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.167,"output":0.891}},"nvidia-nemotron-3-nano-omni":{"id":"nvidia-nemotron-3-nano-omni","name":"nvidia-nemotron-3-nano-omni","description":"Nemotron-3-Nano-Omni is an open, efficient omni-modal reasoning model that unifies text, image, audio, and video for agentic AI workflows.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":65536},"cost":{"input":0.059,"output":0.237}},"claude-opus4-7":{"id":"claude-opus4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.067,"output":0.245,"cache_read":0.014}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.668,"output":4.01}},"gpt-oss-safeguard-120b":{"id":"gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.179,"output":0.697}},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.557,"output":1.671,"cache_read":0.056}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.649,"output":9.899,"cache_read":0.165,"cache_write":1}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.446,"output":3.008}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":2.659,"output":10.635,"cache_read":1.33}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.219,"output":1.32,"cache_read":0.022,"cache_write":0.275}},"ministral-3b-2512":{"id":"ministral-3b-2512","name":"ministral-3b-2512","description":"Ministral 3 3B is a compact, efficient multimodal model with strong language, vision capabilities, and ideal for custom fine-tuning.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.111,"output":0.111,"cache_read":0.011}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":14.999}},"gemma-3-27b-it":{"id":"gemma-3-27b-it","name":"gemma-3-27b-it","description":"Gemma 3 is a family of lightweight, multimodal models from Google, supporting text and image inputs, multilingual capabilities, and a 131K context window.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":110000},"cost":{"input":0.099,"output":0.299}},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.652,"output":2.57,"cache_read":0.163}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.296,"output":0.495,"cache_read":0.075}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":32768},"cost":{"input":0.167,"output":0.557}},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"mistral-nemo-instruct-2407","description":"A 12B parameter, instruct-tuned language model by Mistral AI and NVIDIA, designed for advanced instruction following, multi-turn conversations, and generating text and code across multiple languages.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-08-07","last_updated":"2024-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.145,"output":0.145,"cache_read":0.014}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.201,"output":0.5,"cache_read":0.05}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.159,"output":0.638,"cache_read":0.081}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.749,"cache_read":0.033}},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.625}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2.192,"output":8.769,"cache_read":0.546}},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.495,"output":3.46,"cache_read":0.124}},"claude-opus4-8":{"id":"claude-opus4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797}},"pixtral-large-2502":{"id":"pixtral-large-2502","name":"pixtral-large-2502","description":"Pixtral Large (25.02) is a 124B open-weight multimodal model built on Mistral Large 2, offering advanced image understanding and strong performance across text and code tasks.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":1.993,"output":5.978}},"nova-micro-v1":{"id":"nova-micro-v1","name":"nova-micro-v1","description":"Nova Micro is a multilingual text-to-text foundation model with strong reasoning capabilities and broad language coverage across 200+ languages.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.04,"output":0.159}},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"qwen3-30b-a3b-instruct-2507","description":"Qwen3-30B-A3B-Instruct-2507 is an advanced Mixture-of-Experts model optimized for reasoning, coding, and multilingual instruction following.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.099,"output":0.299}},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"mistral-small-3.2-24b-instruct-2506","description":"Mistral-Small-3.2-24B-Instruct-2506 is a 24B parameter instruction-tuned model with enhanced long-context support (128k) and state-of-the-art vision understanding.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.1,"output":0.312}},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"mistral-7b-instruct-v0.3","description":"Mistral-7B-Instruct-v0.3 model is a fine-tuned version of the Mistral 7B base model, optimized for instruction-following tasks. Released in 2023, it is intended for demonstration purposes and does not include built-in guardrails or moderation features.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":127000},"cost":{"input":0.111,"output":0.111}},"llama-3.1-nemotron-ultra-253b-v1":{"id":"llama-3.1-nemotron-ultra-253b-v1","name":"llama-3.1-nemotron-ultra-253b-v1","description":"A reasoning-optimized LLM based on Llama 3.1, Nemotron Ultra 253B delivers strong performance in tasks like RAG and tool use, with high efficiency and reduced latency.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-07","last_updated":"2025-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.598,"output":1.794}},"nova-pro-v1":{"id":"nova-pro-v1","name":"Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.918,"output":3.671}},"mixtral-8x7B-instruct-v0.1":{"id":"mixtral-8x7B-instruct-v0.1","name":"Mixtral 8x7B Instruct v0.1","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.488,"output":0.758}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.223,"output":0.39}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.996,"output":4.982,"cache_read":0.099,"cache_write":1.186}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":0.988,"output":3.164,"cache_read":0.247}},"qwen3guard-gen-8b":{"id":"qwen3guard-gen-8b","name":"qwen3guard-gen-8b","description":"Qwen3Guard-Gen-8B is a large-scale multilingual safety moderation model designed for high-accuracy prompt and response classification.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0}},"nvidia-nemotron-3-nano-30b-a3b":{"id":"nvidia-nemotron-3-nano-30b-a3b","name":"nvidia-nemotron-3-nano-30b-a3b","description":"Nemotron-Nano-3-30B-A3B is a compact Mixture-of-Experts model optimized for efficient reasoning, chat, and coding, with strong multilingual support and long-context RAG and agent workflows.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-01-12","last_updated":"2026-01-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.06,"output":0.24}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.495,"output":2.768,"cache_read":0.124}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.384,"output":4.348,"cache_read":0.346}},"hermes-4-405b":{"id":"hermes-4-405b","name":"hermes-4-405b","description":"Hermes 4 405B is a frontier hybrid-mode reasoning model built on Llama 3.1, optimized for advanced logic, math, coding, and structured output generation.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.996,"output":2.989}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.069,"output":0.455,"cache_read":0.018}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.143,"output":0.568,"cache_read":0.014}},"claude-4-6-sonnet":{"id":"claude-4-6-sonnet","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.196,"output":15.94,"cache_read":0.32,"cache_write":3.999}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.73,"output":3.46,"cache_read":0.432}},"ministral-8b-2512":{"id":"ministral-8b-2512","name":"ministral-8b-2512","description":"Ministral 3 8B is a balanced, efficient multimodal model offering strong text and vision capabilities, optimized for edge and local deployment.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.167,"output":0.167,"cache_read":0.017}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":202752},"cost":{"input":1.186,"output":3.955,"cache_read":0.296,"cache_write":1.544}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.279,"output":2.192,"cache_read":0.056}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.089,"output":0.446,"cache_read":0.01}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.495,"output":9.964,"cache_read":0.242,"cache_write":0.434}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.199,"cache_read":0.219,"cache_write":2.749}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.399,"cache_read":0.26}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":202752},"cost":{"input":1.186,"output":3.955,"cache_read":0.296,"cache_write":1.544}},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"mistral-medium-3.5","description":"Mistral Medium 3.5 is a frontier multimodal 128B model combining reasoning, coding, and instruction-following with strong agentic performance and efficient deployment.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1.393,"output":7.13,"cache_read":0.139}},"minicpm-v-4.5":{"id":"minicpm-v-4.5","name":"minicpm-v-4.5","description":"MiniCPM-V 4.5 is a compact, high-performance vision-language model excelling in video understanding, OCR, and multimodal reasoning with efficient deployment.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.651,"output":1.097}},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"pixtral-12b-2409","description":"Pixtral 2409 12B is a state-of-the-art multimodal model with 12B parameters and a 400M vision encoder, natively trained on interleaved text and image data. It excels in tasks spanning vision-language reasoning, instruction following, and pure text understanding, making it highly effective for real-world multimodal applications.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-11-09","last_updated":"2024-11-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.223,"output":0.223}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.299,"output":2.491,"cache_read":0.029,"cache_write":0.097}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65000},"cost":{"input":2.898,"output":14.493,"cache_read":0.29,"cache_write":3.624}},"voxtral-small-2507":{"id":"voxtral-small-2507","name":"voxtral-small-2507","description":"Voxtral Small is a multimodal model with audio input, combining advanced speech capabilities with strong text performance for transcription, translation, and audio understanding.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.111,"output":0.334,"cache_read":0.011}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.219,"cache_write":2.749}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"qwen3-vl-235b-a22b","description":"Qwen3 VL 235B A22B is a 235B-parameter MoE vision-language flagship model (≈22B active) designed for frontier-level multimodal understanding across text, images, documents, and long videos.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-01-13","last_updated":"2026-01-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.617,"output":3.119,"cache_read":0.052}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.129,"output":0.399}},"nova-lite-v1":{"id":"nova-lite-v1","name":"nova-lite-v1","description":"Nova Lite is a fast, low-cost multimodal foundation model capable of reasoning over text, images, and video in 200+ languages.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.069,"output":0.275}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":203000},"cost":{"input":0.08,"output":0.478}},"nemotron-nano-v2-12b":{"id":"nemotron-nano-v2-12b","name":"nemotron-nano-v2-12b","description":"NVIDIA Nemotron Nano v2 12B is a 12-billion-parameter multimodal reasoning model designed for advanced video understanding, document intelligence, and visual reasoning, built with a hybrid Transformer-Mamba architecture for high efficiency and low latency.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.24,"output":0.707}}}},"hpc-ai":{"id":"hpc-ai","env":["HPC_AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.hpc-ai.com/inference/v1","name":"HPC-AI","doc":"https://www.hpc-ai.com/doc/docs/quickstart/","models":{"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":195000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"GLM 5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":202000},"cost":{"input":0.615,"output":2.46,"cache_read":0.133}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1002000,"output":128000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3,"cache_read":0.1}}}},"tencent-coding-plan":{"id":"tencent-coding-plan","env":["TENCENT_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lkeap.cloud.tencent.com/coding/v3","name":"Tencent Coding Plan (China)","doc":"https://cloud.tencent.com/document/product/1772/128947","models":{"hunyuan-2.0-thinking":{"id":"hunyuan-2.0-thinking","name":"Tencent HY 2.0 Think","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-t1":{"id":"hunyuan-t1","name":"Hunyuan-T1","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-turbos":{"id":"hunyuan-turbos","name":"Hunyuan-TurboS","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"tc-code-latest":{"id":"tc-code-latest","name":"Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-2.0-instruct":{"id":"hunyuan-2.0-instruct","name":"Tencent HY 2.0 Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"v0":{"id":"v0","env":["V0_API_KEY"],"npm":"@ai-sdk/vercel","name":"v0","doc":"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel","models":{"v0-1.5-lg":{"id":"v0-1.5-lg","name":"v0-1.5-lg","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"v0","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-09","last_updated":"2025-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":32000},"cost":{"input":15,"output":75}},"v0-1.5-md":{"id":"v0-1.5-md","name":"v0-1.5-md","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"v0","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-09","last_updated":"2025-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":3,"output":15}},"v0-1.0-md":{"id":"v0-1.0-md","name":"v0-1.0-md","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"v0","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":3,"output":15}}}},"nan":{"id":"nan","env":["NAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.nan.builders/v1","name":"NaN","doc":"https://nan.builders/docs/models","models":{"qwen3.6":{"id":"qwen3.6","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0}},"glm5.2":{"id":"glm5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents, served at 500K context on the NaN premium tier","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":500000,"output":131072},"cost":{"input":0,"output":0}},"gemma4":{"id":"gemma4","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"glm5.3-flash":{"id":"glm5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}}}},"perplexity":{"id":"perplexity","env":["PERPLEXITY_API_KEY"],"npm":"@ai-sdk/perplexity","name":"Perplexity","doc":"https://docs.perplexity.ai","models":{"sonar":{"id":"sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}},"sonar-pro":{"id":"sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"sonar-deep-research":{"id":"sonar-deep-research","name":"Perplexity Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}}}},"kimi-for-coding":{"id":"kimi-for-coding","env":["KIMI_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.kimi.com/coding/v1","name":"Kimi For Coding","doc":"https://www.kimi.com/code/docs/en/kimi-code/models.html","models":{"kimi-for-coding-highspeed":{"id":"kimi-for-coding-highspeed","name":"Kimi For Coding HighSpeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"k3-256k":{"id":"k3-256k","name":"Kimi K3-256K","description":"256K-context version of Kimi K3, reducing token consumption for shorter coding sessions","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-for-coding":{"id":"kimi-for-coding","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"k3":{"id":"k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"alibaba-token-plan-cn":{"id":"alibaba-token-plan-cn","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1","name":"Alibaba Token Plan (China)","doc":"https://www.alibabacloud.com/help/zh/model-studio/token-plan-overview","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-r2v":{"id":"happyhorse-1.1-r2v","name":"HappyHorse 1.1 Reference-to-Video","description":"Video model for reference-guided video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"wan2.7-image-pro":{"id":"wan2.7-image-pro","name":"Wan2.7 Image Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-t2v":{"id":"happyhorse-1.1-t2v","name":"HappyHorse 1.1 Text-to-Video","description":"Video model for prompt-driven text-to-video generation","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen-image-2.0-pro":{"id":"qwen-image-2.0-pro","name":"Qwen Image 2.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-03","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"happyhorse-1.1-i2v":{"id":"happyhorse-1.1-i2v","name":"HappyHorse 1.1 Image-to-Video","description":"Video model for image-to-video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen-image-2.0":{"id":"qwen-image-2.0","name":"Qwen Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"wan2.7-image":{"id":"wan2.7-image","name":"Wan2.7 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}}}},"drun":{"id":"drun","env":["DRUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://chat.d.run/v1","name":"D.Run (China)","doc":"https://www.d.run","models":{"public/deepseek-v3":{"id":"public/deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.28,"output":1.1}},"public/minimax-m25":{"id":"public/minimax-m25","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"temperature":true,"release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.16}},"public/deepseek-r1":{"id":"public/deepseek-r1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32000},"cost":{"input":0.55,"output":2.2}}}},"google-vertex-anthropic":{"id":"google-vertex-anthropic","env":["GOOGLE_VERTEX_PROJECT","GOOGLE_VERTEX_LOCATION","GOOGLE_APPLICATION_CREDENTIALS"],"npm":"@ai-sdk/google-vertex/anthropic","name":"Vertex (Anthropic)","doc":"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude","models":{"claude-sonnet-4@20250514":{"id":"claude-sonnet-4@20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-4-5@20251101":{"id":"claude-opus-4-5@20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-sonnet-4-6@default":{"id":"claude-sonnet-4-6@default","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"claude-fable-5@default":{"id":"claude-fable-5@default","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"claude-opus-4-6@default":{"id":"claude-opus-4-6@default","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-opus-4@20250514":{"id":"claude-opus-4@20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"claude-haiku-4-5@20251001":{"id":"claude-haiku-4-5@20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-sonnet-5@default":{"id":"claude-sonnet-5@default","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-opus-4-1@20250805":{"id":"claude-opus-4-1@20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"claude-fable-5-1@default":{"id":"claude-fable-5-1@default","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"claude-opus-4-7@default":{"id":"claude-opus-4-7@default","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-opus-5@default":{"id":"claude-opus-5@default","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-4-8@default":{"id":"claude-opus-4-8@default","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-sonnet-4-5@20250929":{"id":"claude-sonnet-4-5@20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}}}},"anyapi":{"id":"anyapi","env":["ANYAPI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.anyapi.ai/v1","name":"AnyAPI","doc":"https://docs.anyapi.ai","models":{"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated"},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}}},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192}}}},"opencode-go":{"id":"opencode-go","env":["OPENCODE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://opencode.ai/zen/go/v1","name":"OpenCode Go","doc":"https://opencode.ai/docs/zen","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"qwen3.7-max","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-m2.7","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Legacy model retained for compatibility with older integrations","family":"minimax-m2.5","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"ox-alpha-free":{"id":"ox-alpha-free","name":"Ox Alpha Free (Unlimited)","description":"Stealth reasoning model for coding, agentic tasks, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}},"omen-alpha":{"id":"omen-alpha","name":"Omen Alpha","description":"oH man anothEr aLPha ModEl","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":128000},"cost":{"input":0.2,"output":0.66,"cache_read":0.04}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash (2x usage)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for coding and agentic workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo V2 Pro","description":"Legacy model retained for compatibility with older integrations","family":"mimo-v2-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"status":"deprecated","cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Legacy model retained for compatibility with older integrations","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":32768},"status":"deprecated","cost":{"input":1,"output":3.2,"cache_read":0.2}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo V2 Omni","description":"Legacy model retained for compatibility with older integrations","family":"mimo-v2-omni","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"status":"deprecated","cost":{"input":0.4,"output":2,"cache_read":0.08}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter multimodal flagship for coding, professional work, and long-horizon agentic workflows","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Legacy model retained for compatibility with older integrations","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.6,"output":3,"cache_read":0.1}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":32768},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.7-plus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5}}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro (New)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo V2.5","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo-v2.5-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Legacy model retained for compatibility with older integrations","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}}}},"tencent-token-plan":{"id":"tencent-token-plan","env":["TENCENT_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lkeap.cloud.tencent.com/plan/v3","name":"Tencent Token Plan","doc":"https://cloud.tencent.com/document/product/1823/130060","models":{"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042}}}},"gitlab":{"id":"gitlab","env":["GITLAB_TOKEN"],"npm":"gitlab-ai-provider","name":"GitLab Duo","doc":"https://docs.gitlab.com/user/duo_agent_platform/","models":{"duo-chat-gpt-5-6-luna":{"id":"duo-chat-gpt-5-6-luna","name":"Agentic Chat (GPT-5.6 Luna)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-opus-5":{"id":"duo-chat-opus-5","name":"Agentic Chat (Claude Opus 5)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-opus-4-8":{"id":"duo-chat-opus-4-8","name":"Agentic Chat (Claude Opus 4.8)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-1":{"id":"duo-chat-gpt-5-1","name":"Agentic Chat (GPT-5.1)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-2":{"id":"duo-chat-gpt-5-2","name":"Agentic Chat (GPT-5.2)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-4-nano":{"id":"duo-chat-gpt-5-4-nano","name":"Agentic Chat (GPT-5.4 Nano)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-haiku-4-5":{"id":"duo-chat-haiku-4-5","name":"Agentic Chat (Claude Haiku 4.5)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-opus-4-6":{"id":"duo-chat-opus-4-6","name":"Agentic Chat (Claude Opus 4.6)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-6-terra":{"id":"duo-chat-gpt-5-6-terra","name":"Agentic Chat (GPT-5.6 Terra)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-sonnet-5":{"id":"duo-chat-sonnet-5","name":"Agentic Chat (Claude Sonnet 5)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-opus-4-5":{"id":"duo-chat-opus-4-5","name":"Agentic Chat (Claude Opus 4.5)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-3-codex":{"id":"duo-chat-gpt-5-3-codex","name":"Agentic Chat (GPT-5.3 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-fable-5-1":{"id":"duo-chat-fable-5-1","name":"Agentic Chat (Claude Fable 5.1)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-4-mini":{"id":"duo-chat-gpt-5-4-mini","name":"Agentic Chat (GPT-5.4 Mini)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-sonnet-4-6":{"id":"duo-chat-sonnet-4-6","name":"Agentic Chat (Claude Sonnet 4.6)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-5":{"id":"duo-chat-gpt-5-5","name":"Agentic Chat (GPT-5.5)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-fable-5":{"id":"duo-chat-fable-5","name":"Agentic Chat (Claude Fable 5)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-opus-4-7":{"id":"duo-chat-opus-4-7","name":"Agentic Chat (Claude Opus 4.7)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-4":{"id":"duo-chat-gpt-5-4","name":"Agentic Chat (GPT-5.4)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-6-sol":{"id":"duo-chat-gpt-5-6-sol","name":"Agentic Chat (GPT-5.6 Sol)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-2-codex":{"id":"duo-chat-gpt-5-2-codex","name":"Agentic Chat (GPT-5.2 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-codex":{"id":"duo-chat-gpt-5-codex","name":"Agentic Chat (GPT-5 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-mini":{"id":"duo-chat-gpt-5-mini","name":"Agentic Chat (GPT-5 Mini)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-sonnet-4-5":{"id":"duo-chat-sonnet-4-5","name":"Agentic Chat (Claude Sonnet 4.5)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"neosmith":{"id":"neosmith","env":["NEOSMITH_API_KEY"],"npm":"@ai-sdk/openai","api":"https://router.neosmith.ai/v1","name":"NeoSmith","doc":"https://neosmith.ai/docs","models":{"neosmith.intelligent-maestro":{"id":"neosmith.intelligent-maestro","name":"NeoSmith Maestro","description":"Highest-accuracy coding tier. Hard, self-contained problems run NeoSmith's premium multi-model solver; everything else gets the strongest intelligence tier.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.35,"cache_write":0}},"neosmith.intelligent-basic":{"id":"neosmith.intelligent-basic","name":"NeoSmith Basic","description":"Cost-capped tier. Intelligent routing with a Claude Sonnet ceiling — Opus is never invoked.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.17,"output":4.37,"cache_read":0.22,"cache_write":0}},"neosmith.intelligent-pro":{"id":"neosmith.intelligent-pro","name":"NeoSmith Pro","description":"Default production tier. Intelligent NeoSmith routing with a Claude Opus ceiling on escalation.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.81,"output":8.39,"cache_read":0.3,"cache_write":0}},"neosmith.neolite":{"id":"neosmith.neolite","name":"NeoSmith NeoLite","description":"Sealed single-model budget tier. 512K context, text and images, tool use, and no escalation of any kind.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":64000},"cost":{"input":0.6,"output":2.4,"cache_read":0.08,"cache_write":0}}}},"tinfoil":{"id":"tinfoil","env":["TINFOIL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.tinfoil.sh/v1","name":"Tinfoil","doc":"https://docs.tinfoil.sh","models":{"nomic-embed-text":{"id":"nomic-embed-text","name":"Nomic Embed Text v1.5","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2024-02","last_updated":"2024-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":768},"cost":{"input":0.05,"output":0}},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":1}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":0.7,"cache_read":0.06}},"gpt-oss-safeguard-120b":{"id":"gpt-oss-safeguard-120b","name":"gpt-oss-safeguard-120b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.8}},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":1.25,"cache_read":0.1}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"llama3-3-70b":{"id":"llama3-3-70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":1.75,"output":2.75}}}},"edenai":{"id":"edenai","env":["EDENAI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.edenai.run/v3","name":"Eden AI","doc":"https://docs.edenai.co","models":{"qwen/deepseek-v4-pro-0813":{"id":"qwen/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.122,"output":3.366}},"qwen/deepseek-v4-flash-0731":{"id":"qwen/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.352,"output":1.056}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5,"cache_read":0.2,"cache_write":1.25}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen/qwen-vl-max":{"id":"qwen/qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":3.2,"cache_read":0.16}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2}},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375}},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4,"cache_read":0.32}},"qwen/qwen-vl-plus":{"id":"qwen/qwen-vl-plus","name":"Qwen-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-08-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.21,"output":0.63,"cache_read":0.042}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625}},"qwen/qwen3-max@eu":{"id":"qwen/qwen3-max@eu","name":"Qwen3 Max (EU)","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24,"cache_write":1.5}},"qwen/qwq-plus":{"id":"qwen/qwq-plus","name":"QwQ Plus","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":2.4}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1.5}},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":2.25}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24,"cache_write":1.5}},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2}},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5}},"qwen/qwen3-coder-next@eu":{"id":"qwen/qwen3-coder-next@eu","name":"Qwen3 Coder Next (EU)","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1.5}},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":4}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.6}},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.23,"output":0.92}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":7.5}},"groq/openai/gpt-oss-20b":{"id":"groq/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"groq/openai/gpt-oss-120b":{"id":"groq/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"scaleway/deepseek-v4-flash-0731":{"id":"scaleway/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":384000},"cost":{"input":0.4646,"output":0.9292}},"scaleway/gpt-oss-120b":{"id":"scaleway/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.174225,"output":0.6969}},"scaleway/llama-3.3-70b-instruct":{"id":"scaleway/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":1.04535,"output":1.04535}},"nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"nebius/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14}},"nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{"id":"nebius/nvidia/Nemotron-3-Ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":1,"output":3,"cache_read":1}},"nebius/nvidia/nemotron-3-super-120b-a12b":{"id":"nebius/nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.9,"cache_read":0.3}},"nebius/meta-llama/Llama-3.3-70B-Instruct":{"id":"nebius/meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.13,"output":0.4,"cache_read":0.13}},"nebius/openai/gpt-oss-120b":{"id":"nebius/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.15}},"cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct":{"id":"cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5-Coder-32B-Instruct","description":"Open coding-focused Qwen model for code generation, repair, and repository reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.66,"output":1}},"cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813":{"id":"cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731":{"id":"cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"cloudflare/@cf/zai-org/glm-4.7-flash":{"id":"cloudflare/@cf/zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4}},"cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"id":"cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it","name":"Gemma-SEA-LION-v4-27B-IT","description":"Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555}},"cloudflare/@cf/meta/llama-guard-3-8b":{"id":"cloudflare/@cf/meta/llama-guard-3-8b","name":"Llama-Guard-3-8B","description":"Llama 3.1-based safety classifier for moderating prompts and model responses","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.484,"output":0.03}},"cloudflare/@cf/openai/gpt-oss-20b":{"id":"cloudflare/@cf/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.3}},"cloudflare/@cf/openai/gpt-oss-120b":{"id":"cloudflare/@cf/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.35,"output":0.75}},"minimax/MiniMax-M2":{"id":"minimax/MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"minimax/MiniMax-M2.1":{"id":"minimax/MiniMax-M2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/MiniMax-M2.5":{"id":"minimax/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"minimax/MiniMax-M3":{"id":"minimax/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/MiniMax-M2.7":{"id":"minimax/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"ovhcloud/gpt-oss-20b":{"id":"ovhcloud/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.18}},"ovhcloud/gpt-oss-120b":{"id":"ovhcloud/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.47}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-fable-latest":{"id":"anthropic/claude-fable-latest","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5}},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["audio","image","text","video"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":1}},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5}},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":0.5,"output":3}},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333,"input_audio":1}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3}},"tensorx/deepseek/deepseek-v4-pro-0813":{"id":"tensorx/deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":2,"output":4,"cache_read":0.5}},"tensorx/deepseek/deepseek-v4-flash-0731":{"id":"tensorx/deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.0625}},"tensorx/moonshotai/kimi-k2.5":{"id":"tensorx/moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125}},"flexai/deepseek-v4-flash-0731":{"id":"flexai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":786432,"output":384000},"cost":{"input":0.03,"output":0.1}},"flexai/Nemotron-3-Super-120B-A12B":{"id":"flexai/Nemotron-3-Super-120B-A12B","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.085,"output":0.4}},"flexai/Step-3.7-Flash":{"id":"flexai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15}},"flexai/gpt-oss-20b":{"id":"flexai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.02,"output":0.1}},"flexai/Muse-Glimmer-30B":{"id":"flexai/Muse-Glimmer-30B","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.1}},"flexai/gpt-oss-120b":{"id":"flexai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.039,"output":0.1}},"databricks/databricks-gpt-oss-20b@eu":{"id":"databricks/databricks-gpt-oss-20b@eu","name":"GPT OSS 20B (EU)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07}},"databricks/databricks-deepseek-v4-pro-0813":{"id":"databricks/databricks-deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.31999,"output":3.95997,"cache_read":0.13202,"cache_write":1.31999}},"databricks/databricks-gpt-oss-120b@eu":{"id":"databricks/databricks-gpt-oss-120b@eu","name":"GPT OSS 120B (EU)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001}},"databricks/databricks-gpt-oss-20b":{"id":"databricks/databricks-gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07}},"databricks/databricks-deepseek-v4-flash-0731":{"id":"databricks/databricks-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028,"cache_write":0.14}},"databricks/databricks-gpt-oss-120b":{"id":"databricks/databricks-gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001}},"deepinfra/nemotron-3-ultra-550b-a55b":{"id":"deepinfra/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1}},"deepinfra/ByteDance/Seed-2.0-mini":{"id":"deepinfra/ByteDance/Seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02}},"deepinfra/ByteDance/Seed-2.0-code":{"id":"deepinfra/ByteDance/Seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"deepinfra/stepfun-ai/Step-3.7-Flash":{"id":"deepinfra/stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04}},"deepinfra/stepfun-ai/Step-3.5-Flash":{"id":"deepinfra/stepfun-ai/Step-3.5-Flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.09,"output":0.3,"cache_read":0.02}},"deepinfra/deepseek-ai/DeepSeek-V3":{"id":"deepinfra/deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89}},"deepinfra/deepseek-ai/DeepSeek-V3-0324":{"id":"deepinfra/deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.24,"output":0.9,"cache_read":0.135}},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.08,"output":0.18,"cache_read":0.016}},"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1}},"deepinfra/deepseek-ai/DeepSeek-R1":{"id":"deepinfra/deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.4}},"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":{"id":"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct","name":"Llama 3.1 Nemotron 70B Instruct","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.6,"output":0.6}},"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{"id":"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025}},"deepinfra/meta-models/Muse-Glimmer-30B":{"id":"deepinfra/meta-models/Muse-Glimmer-30B","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.04}},"deepinfra/zai-org/GLM-4.7-Flash":{"id":"deepinfra/zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"deepinfra/thinkingmachines/Inkling-Small":{"id":"deepinfra/thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1}},"deepinfra/thinkingmachines/Inkling":{"id":"deepinfra/thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16}},"deepinfra/meta-llama/Llama-Guard-3-8B":{"id":"deepinfra/meta-llama/Llama-Guard-3-8B","name":"Llama-Guard-3-8B","description":"Llama 3.1-based safety classifier for moderating prompts and model responses","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.055,"output":0.055}},"deepinfra/meta-llama/Llama-3.3-70B-Instruct":{"id":"deepinfra/meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.1,"output":0.32}},"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":{"id":"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct","name":"Llama-3.2-11B-Vision-Instruct","description":"Open multimodal Llama model for image understanding, captioning, and visual QA","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.345,"output":0.345}},"deepinfra/openai/gpt-oss-20b":{"id":"deepinfra/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.14}},"deepinfra/openai/gpt-oss-120b":{"id":"deepinfra/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.037,"output":0.17}},"deepinfra/moonshotai/Kimi-K2.5":{"id":"deepinfra/moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"deepinfra/tencent/Hy3":{"id":"deepinfra/tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035}},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38}},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"azure/gpt-5.1-codex-mini":{"id":"azure/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"azure/gpt-5.1-codex":{"id":"azure/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"azure/gpt-5.2-codex":{"id":"azure/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"azure/gpt-5.1-codex-max":{"id":"azure/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":384000},"cost":{"input":0.28,"output":0.42,"cache_read":0.028}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"fireworks_ai/gpt-oss-120b":{"id":"fireworks_ai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.014}},"fireworks_ai/accounts/fireworks/models/deepseek-v4-pro-0813":{"id":"fireworks_ai/accounts/fireworks/models/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044}},"fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-0731":{"id":"fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}},"fireworks_ai/accounts/fireworks/models/muse-glimmer-30b":{"id":"fireworks_ai/accounts/fireworks/models/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"fireworks_ai/accounts/fireworks/models/inkling":{"id":"fireworks_ai/accounts/fireworks/models/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"amazon/moonshotai.kimi-k2.5":{"id":"amazon/moonshotai.kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3}},"amazon/zai.glm-4.7-flash@us":{"id":"amazon/zai.glm-4.7-flash@us","name":"GLM-4.7-Flash (US)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4}},"amazon/moonshot.kimi-k2-thinking":{"id":"amazon/moonshot.kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":262144},"cost":{"input":0.6,"output":2.5}},"amazon/zai.glm-4.7-flash":{"id":"amazon/zai.glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":6,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":6}}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":6,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":6}}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":8192},"cost":{"input":30,"output":60}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-mini-latest":{"id":"openai/gpt-mini-latest","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-pro-latest":{"id":"openai/gpt-pro-latest","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":6,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":6}}},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10}},"cohere/command-a-03-2025":{"id":"cohere/command-a-03-2025","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":288000,"output":8000},"cost":{"input":2.5,"output":10}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":132000,"output":4000},"cost":{"input":0.0375,"output":0.15}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6}},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-latest":{"id":"xai/grok-latest","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}}},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05}},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24}},"together_ai/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"together_ai/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03}},"together_ai/deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"together_ai/deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13}},"together_ai/meta-models/Muse-Glimmer-30B":{"id":"together_ai/meta-models/Muse-Glimmer-30B","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"together_ai/thinkingmachines/Inkling-Small":{"id":"together_ai/thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.5,"output":1.2,"cache_read":0.1}},"together_ai/thinkingmachines/Inkling":{"id":"together_ai/thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17}},"together_ai/openai/gpt-oss-20b":{"id":"together_ai/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2}},"together_ai/openai/gpt-oss-120b":{"id":"together_ai/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistral/magistral-medium-latest":{"id":"mistral/magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":2,"output":5}},"mistral/mistral-medium-latest":{"id":"mistral/mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"mistral/mistral-medium-2604":{"id":"mistral/mistral-medium-2604","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistral/devstral-medium-latest":{"id":"mistral/devstral-medium-latest","name":"Devstral 2 (latest)","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2}},"mistral/voxtral-small-latest":{"id":"mistral/voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.4}},"mistral/mistral-small-latest":{"id":"mistral/mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistral/mistral-small-2603":{"id":"mistral/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mistral/mistral-medium-2505":{"id":"mistral/mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2}},"mistral/codestral-latest":{"id":"mistral/codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03}},"vertex/gemini-pro-latest":{"id":"vertex/gemini-pro-latest","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25}}},"vertex/gemini-3.1-flash-lite-image":{"id":"vertex/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5}},"vertex/gemini-3.7-flash@eu":{"id":"vertex/gemini-3.7-flash@eu","name":"Gemini 3.7 Flash (EU)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-2.5-flash-image":{"id":"vertex/gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":1}},"vertex/gemini-3-pro-image":{"id":"vertex/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2}},"vertex/gemini-3.1-pro-preview":{"id":"vertex/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25}}},"vertex/gemini-3.8-flash@eu":{"id":"vertex/gemini-3.8-flash@eu","name":"Gemini 3.8 Flash (EU)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.6-flash":{"id":"vertex/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.1-flash-lite":{"id":"vertex/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5}},"vertex/gemini-3.1-flash-lite@us":{"id":"vertex/gemini-3.1-flash-lite@us","name":"Gemini 3.1 Flash Lite (US)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5}},"vertex/gemini-3.6-flash@eu":{"id":"vertex/gemini-3.6-flash@eu","name":"Gemini 3.6 Flash (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.8-flash@us":{"id":"vertex/gemini-3.8-flash@us","name":"Gemini 3.8 Flash (US)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.6-flash@us":{"id":"vertex/gemini-3.6-flash@us","name":"Gemini 3.6 Flash (US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.7-flash@us":{"id":"vertex/gemini-3.7-flash@us","name":"Gemini 3.7 Flash (US)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.5-flash":{"id":"vertex/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3}},"vertex/gemini-3.1-flash-image":{"id":"vertex/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"vertex/gemini-3.5-flash-lite":{"id":"vertex/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3}},"vertex/gemini-3.5-flash-lite@us":{"id":"vertex/gemini-3.5-flash-lite@us","name":"Gemini 3.5 Flash Lite (US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3}},"vertex/gemini-3.5-flash-lite@eu":{"id":"vertex/gemini-3.5-flash-lite@eu","name":"Gemini 3.5 Flash Lite (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3}},"vertex/gemini-3.5-flash@us":{"id":"vertex/gemini-3.5-flash@us","name":"Gemini 3.5 Flash (US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3}},"vertex/gemini-3-flash-preview":{"id":"vertex/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333,"input_audio":1}},"vertex/gemini-3.8-flash":{"id":"vertex/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.1-flash-lite@eu":{"id":"vertex/gemini-3.1-flash-lite@eu","name":"Gemini 3.1 Flash Lite (EU)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5}},"vertex/gemini-3.7-flash":{"id":"vertex/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-flash-latest":{"id":"vertex/gemini-flash-latest","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75}},"vertex/gemini-3.5-flash@eu":{"id":"vertex/gemini-3.5-flash@eu","name":"Gemini 3.5 Flash (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3}},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75,"cache_read":0.35}},"ionos/meta-llama/Llama-3.3-70B-Instruct":{"id":"ionos/meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.754975,"output":0.754975}},"ionos/openai/gpt-oss-120b":{"id":"ionos/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.174225,"output":0.754975}},"perplexityai/sonar":{"id":"perplexityai/sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":4096},"cost":{"input":1,"output":1}},"perplexityai/sonar-reasoning-pro":{"id":"perplexityai/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}},"perplexityai/sonar-pro":{"id":"perplexityai/sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"perplexityai/sonar-deep-research":{"id":"perplexityai/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for autonomous research and citation-backed long-form reports","family":"sonar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}}}},"lmstudio":{"id":"lmstudio","env":["LMSTUDIO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:1234/v1","name":"LMStudio","doc":"https://lmstudio.ai/models","models":{"qwen/qwen3-coder-30b":{"id":"qwen/qwen3-coder-30b","name":"Qwen3 Coder 30B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"qwen/qwen3-30b-a3b-2507":{"id":"qwen/qwen3-30b-a3b-2507","name":"Qwen3 30B A3B 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}}}},"lynkr":{"id":"lynkr","env":["LYNKR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:8081/v1","name":"Lynkr","doc":"https://github.com/Fast-Editor/Lynkr","models":{"lynkr-auto":{"id":"lynkr-auto","name":"Lynkr Auto (complexity routing)","description":"Virtual model: Lynkr scores each request on complexity and routes it to the tier model the user configured (local Ollama/llama.cpp for simple requests, configured cloud providers for complex ones).","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2026-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}}}}} as const +export const snapshot = {"deepinfra":{"id":"deepinfra","env":["DEEPINFRA_API_KEY"],"npm":"@ai-sdk/deepinfra","name":"Deep Infra","doc":"https://deepinfra.com/models","models":{"tencent/Hy3":{"id":"tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"status":"deprecated","cost":{"input":0.13,"output":0.53,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"tencent/Hy4-preview":{"id":"tencent/Hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32}},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{"id":"meta-llama/Llama-4-Scout-17B-16E-Instruct","name":"Llama 4 Scout 17B","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"status":"deprecated","cost":{"input":0.2,"output":0.8}},"XiaomiMiMo/MiMo-V2.6-Pro":{"id":"XiaomiMiMo/MiMo-V2.6-Pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"status":"deprecated","cost":{"input":1,"output":3,"cache_read":0.2},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"XiaomiMiMo/MiMo-V2.6-Flash":{"id":"XiaomiMiMo/MiMo-V2.6-Flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.5"},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"canonical_model_id":"thinkingmachines/inkling"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"google/gemma-3-12b-it"},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-4b-it"},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemma-4-E4B-it":{"id":"google/gemma-4-E4B-it","name":"Gemma 4 E4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"status":"deprecated","cost":{"input":0.02,"output":0.1},"canonical_model_id":"google/gemma-4-E4B-it"},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":2.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":1.1},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"tiers":[{"input":5,"output":15,"cache_read":1,"tier":{"type":"context","size":32000}},{"input":6.25,"output":18.5,"cache_read":1.25,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.7-max"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Open vision-language MoE model for image and video understanding, documents, and visual agents","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"Qwen/Qwen3.8-Max":{"id":"Qwen/Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":1.65,"output":4.951,"cache_read":0.206},"canonical_model_id":"alibaba/qwen3.8-max"},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.6},"canonical_model_id":"alibaba/qwen3.5-27b"},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.1,"output":0.95,"cache_read":0.1}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo","name":"Qwen3 Coder 480B A35B Instruct Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1,"cache_read":0.1}},"Qwen/Qwen3-Max":{"id":"Qwen/Qwen3-Max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"status":"deprecated","cost":{"input":1.2,"output":6,"cache_read":0.24,"tiers":[{"input":2.4,"output":12,"cache_read":0.48,"tier":{"type":"context","size":32000}},{"input":3,"output":15,"cache_read":0.6,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3-max"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"Qwen/Qwen3.8-Flash":{"id":"Qwen/Qwen3.8-Flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.113,"output":0.382,"cache_read":0.0141},"canonical_model_id":"alibaba/qwen3.8-flash"},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28},"canonical_model_id":"alibaba/qwen3-32b"},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen 3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-01","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.14,"output":1,"cache_read":0.05}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.29,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen 3.5 397B A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-01","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.45,"output":3,"cache_read":0.22}},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"Qwen/Qwen3-30B-A3B":{"id":"Qwen/Qwen3-30B-A3B","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2},"canonical_model_id":"alibaba/qwen3.6-27b"},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.06,"output":0.18,"cache_read":0.015},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0.09,"output":0.18,"cache_read":0.018},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":64000},"cost":{"input":0.26,"output":0.38,"cache_read":0.13}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15,"cache_read":0.35}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89},"canonical_model_id":"deepseek/deepseek-v3"},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"status":"deprecated","cost":{"input":0.24,"output":0.9,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v3-0324"},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"id":"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"stepfun-ai/Step-3.7-Flash":{"id":"stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"status":"deprecated","cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.28,"output":1.1,"cache_read":0.056},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"status":"deprecated","cost":{"input":0.15,"output":1.15,"cache_read":0.03}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"status":"deprecated","cost":{"input":0.25,"output":1,"cache_read":0.05},"canonical_model_id":"minimax/MiniMax-M2.7"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.75,"output":3.5,"cache_read":0.15}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.85,"output":14.25,"cache_read":0.285},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.68,"output":3.4,"cache_read":0.136},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"status":"deprecated","cost":{"input":1.05,"output":3.5,"cache_read":0.205}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.75,"output":2.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.4,"output":1.75,"cache_read":0.08}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"status":"deprecated","cost":{"input":0.6,"output":2.08,"cache_read":0.12}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.1}},"zai-org/GLM-4.7-Flash":{"id":"zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"status":"deprecated","cost":{"input":0.06,"output":0.4,"cache_read":0.01}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.9,"output":4,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5.3"},"nvidia/Nemotron-3-Nano-30B-A3B":{"id":"nvidia/Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.05,"output":0.2,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1.5","name":"Llama 3.3 Nemotron Super 49B v1.5","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0.4,"output":0.4},"canonical_model_id":"nvidia/llama-3.3-nemotron-super-49b-v1.5"},"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{"id":"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.2,"output":0.8},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"ByteDance/Seed-2.0-code":{"id":"ByteDance/Seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":1,"output":6,"cache_read":0.2,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"ByteDance/Seed-2.0-pro":{"id":"ByteDance/Seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":1,"output":6,"cache_read":0.2,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-pro"},"ByteDance/Seed-2.0-mini":{"id":"ByteDance/Seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02,"tiers":[{"input":0.2,"output":0.8,"cache_read":0.2,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.03,"output":0.14}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.037,"output":0.17}}}},"perplexity-agent":{"id":"perplexity-agent","env":["PERPLEXITY_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.perplexity.ai/v1","name":"Perplexity Agent","doc":"https://docs.perplexity.ai/docs/agent-api/models","models":{"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1}},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.25,"output":2.5,"cache_read":0.0625}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"tiers":[{"input":0.5,"output":3,"cache_read":0.05,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.5,"output":3,"cache_read":0.05}}},"xai/grok-4-1-fast-non-reasoning":{"id":"xai/grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32000},"cost":{"input":0.25,"output":2.5},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"moonshot-ai/kimi-k3":{"id":"moonshot-ai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot-ai/kimi-k2.7-code":{"id":"moonshot-ai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-07-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}}}},"bailing":{"id":"bailing","env":["BAILING_API_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tbox.cn/api/llm/v1","name":"Bailing","doc":"https://alipaytbox.yuque.com/sxs0ba/ling/intro","models":{"Ring-1T":{"id":"Ring-1T","name":"Ring-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ring","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-10","last_updated":"2025-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29}},"Ling-1T":{"id":"Ling-1T","name":"Ling-1T","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-10","last_updated":"2025-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.57,"output":2.29}}}},"poe":{"id":"poe","env":["POE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.poe.com/v1","name":"Poe","doc":"https://creator.poe.com/docs/external-applications/openai-compatible-api","models":{"cerebras/qwen3-32b-cs":{"id":"cerebras/qwen3-32b-cs","name":"qwen3-32b-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-15","last_updated":"2025-05-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"cerebras/llama-3.1-8b-cs":{"id":"cerebras/llama-3.1-8b-cs","name":"Llama-3.1-8B-CS","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-13","last_updated":"2025-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":0.1,"output":0.1}},"cerebras/llama-3.3-70b-cs":{"id":"cerebras/llama-3.3-70b-cs","name":"llama-3.3-70b-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-13","last_updated":"2025-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"cerebras/gpt-oss-120b-cs":{"id":"cerebras/gpt-oss-120b-cs","name":"GPT-OSS-120B-CS","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":0.35,"output":0.75}},"cerebras/qwen3-235b-2507-cs":{"id":"cerebras/qwen3-235b-2507-cs","name":"qwen3-235b-2507-cs","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"status":"deprecated"},"empiriolabs/deepseek-v4-pro-el":{"id":"empiriolabs/deepseek-v4-pro-el","name":"DeepSeek-V4-Pro-EL","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-05-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":1.67,"output":3.33}},"empiriolabs/deepseek-v4-flash-el":{"id":"empiriolabs/deepseek-v4-flash-el","name":"DeepSeek-V4-Flash-EL","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-05-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":0.14,"output":0.28}},"anthropic/claude-haiku-3.5":{"id":"anthropic/claude-haiku-3.5","name":"Claude-Haiku-3.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"cost":{"input":0.68,"output":3.4,"cache_read":0.068,"cache_write":0.85}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude-Opus-4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":31999}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":32000},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude-Opus-4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":0,"max":63999}],"tool_call":true,"temperature":false,"release_date":"2025-11-21","last_updated":"2025-11-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":64000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude-Opus-4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.3}},"anthropic/claude-sonnet-3.5-june":{"id":"anthropic/claude-sonnet-3.5-june","name":"Claude-Sonnet-3.5-June","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"status":"deprecated","cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude-Opus-4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":128000},"cost":{"input":4.3,"output":21,"cache_read":0.43,"cache_write":5.4}},"anthropic/claude-haiku-3":{"id":"anthropic/claude-haiku-3","name":"Claude-Haiku-3","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-03-09","last_updated":"2024-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"cost":{"input":0.21,"output":1.1,"cache_read":0.021,"cache_write":0.26}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude-Opus-4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":128000},"cost":{"input":4.2929,"output":21.4646},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-3.7":{"id":"anthropic/claude-sonnet-3.7","name":"Claude-Sonnet-3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude-Haiku-4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":63999}],"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":64000},"cost":{"input":0.85,"output":4.3,"cache_read":0.085,"cache_write":1.1}},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude-Sonnet-4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":31999}],"tool_call":true,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":32768},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude-Sonnet-4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":64000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-sonnet-3.5":{"id":"anthropic/claude-sonnet-3.5","name":"Claude-Sonnet-3.5","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-06-05","last_updated":"2024-06-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":189096,"output":8192},"status":"deprecated","cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude-Sonnet-4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983040,"output":128000},"cost":{"input":2.6,"output":13,"cache_read":0.26,"cache_write":3.2}},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude-Opus-4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":192512,"output":28672},"cost":{"input":13,"output":64,"cache_read":1.3,"cache_write":16}},"elevenlabs/elevenlabs-v2.5-turbo":{"id":"elevenlabs/elevenlabs-v2.5-turbo","name":"ElevenLabs-v2.5-Turbo","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-28","last_updated":"2024-10-28","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":128000,"output":0}},"elevenlabs/elevenlabs-v3":{"id":"elevenlabs/elevenlabs-v3","name":"ElevenLabs-v3","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":128000,"output":0}},"elevenlabs/elevenlabs-music":{"id":"elevenlabs/elevenlabs-music","name":"ElevenLabs-Music","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-29","last_updated":"2025-08-29","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":2000,"output":0}},"novita/glm-4.6v":{"id":"novita/glm-4.6v","name":"glm-4.6v","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":32768}},"novita/glm-4.6":{"id":"novita/glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"novita/glm-5":{"id":"novita/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"novita/kimi-k2.6":{"id":"novita/kimi-k2.6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-05-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.96,"output":4.04,"cache_read":0.16}},"novita/kimi-k2-thinking":{"id":"novita/kimi-k2-thinking","name":"kimi-k2-thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-11-07","last_updated":"2025-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":0}},"novita/kimi-k2.5":{"id":"novita/kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"novita/glm-4.7-flash":{"id":"novita/glm-4.7-flash","name":"glm-4.7-flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65500}},"novita/glm-4.7":{"id":"novita/glm-4.7","name":"glm-4.7","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072},"status":"deprecated"},"novita/glm-4.7-n":{"id":"novita/glm-4.7-n","name":"glm-4.7-n","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072}},"novita/deepseek-v3.2":{"id":"novita/deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":0},"cost":{"input":0.27,"output":0.4,"cache_read":0.13}},"novita/minimax-m2.1":{"id":"novita/minimax-m2.1","name":"minimax-m2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"release_date":"2025-12-26","last_updated":"2025-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":205000,"output":131072}},"lumalabs/ray2":{"id":"lumalabs/ray2","name":"Ray2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ray","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":5000,"output":0}},"poetools/claude-code":{"id":"poetools/claude-code","name":"claude-code","description":"Claude model for careful reasoning, writing, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-27","last_updated":"2025-11-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/imagen-3-fast":{"id":"google/imagen-3-fast","name":"Imagen-3-Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-17","last_updated":"2024-10-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/imagen-4-ultra":{"id":"google/imagen-4-ultra","name":"Imagen-4-Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-24","last_updated":"2025-05-24","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-deep-research":{"id":"google/gemini-deep-research","name":"gemini-deep-research","description":"Legacy model retained for compatibility with older integrations","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":0},"status":"deprecated","cost":{"input":1.6,"output":9.6}},"google/imagen-4":{"id":"google/imagen-4","name":"Imagen-4","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/imagen-4-fast":{"id":"google/imagen-4-fast","name":"Imagen-4-Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/lyria":{"id":"google/lyria","name":"Lyria","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-06-04","last_updated":"2025-06-04","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/nano-banana":{"id":"google/nano-banana","name":"Nano-Banana","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"nano-banana","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":0},"cost":{"input":0.21,"output":1.8,"cache_read":0.021}},"google/veo-3-fast":{"id":"google/veo-3-fast","name":"Veo-3-Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-13","last_updated":"2025-10-13","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-2.0-flash":{"id":"google/gemini-2.0-flash","name":"Gemini-2.0-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":990000,"output":8192},"cost":{"input":0.1,"output":0.42}},"google/veo-3.1":{"id":"google/veo-3.1","name":"Veo-3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/nano-banana-pro":{"id":"google/nano-banana-pro","name":"Nano-Banana-Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"nano-banana","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":65536,"output":0},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-2.0-flash-lite":{"id":"google/gemini-2.0-flash-lite","name":"Gemini-2.0-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":990000,"output":8192},"cost":{"input":0.052,"output":0.21}},"google/gemini-3-flash":{"id":"google/gemini-3-flash","name":"Gemini-3-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini-3.5-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5152,"output":9.0909,"cache_read":0.1515},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini-2.5-Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":32768}],"tool_call":true,"temperature":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1065535,"output":65535},"cost":{"input":0.87,"output":7,"cache_read":0.087}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini-2.5-Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":false,"release_date":"2025-04-26","last_updated":"2025-04-26","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1065535,"output":65535},"cost":{"input":0.21,"output":1.8,"cache_read":0.021}},"google/imagen-3":{"id":"google/imagen-3","name":"Imagen-3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-15","last_updated":"2024-10-15","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-3-pro":{"id":"google/gemini-3-pro","name":"Gemini-3-Pro","description":"Legacy model retained for compatibility with older integrations","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-10-22","last_updated":"2025-10-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":1.6,"output":9.6,"cache_read":0.16}},"google/veo-2":{"id":"google/veo-2","name":"Veo-2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/veo-3.1-fast":{"id":"google/veo-3.1-fast","name":"Veo-3.1-Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemma-4-31b":{"id":"google/gemma-4-31b","name":"Gemma-4-31B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0}},"google/veo-3":{"id":"google/veo-3","name":"Veo-3","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-21","last_updated":"2025-05-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini-2.5-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":false,"release_date":"2025-06-19","last_updated":"2025-06-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"output":64000},"cost":{"input":0.07,"output":0.28}},"google/gemini-3.1-pro":{"id":"google/gemini-3.1-pro","name":"Gemini-3.1-Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini-3.1-Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5}},"xai/grok-3":{"id":"xai/grok-3","name":"Grok 3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-11","last_updated":"2025-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-4.20-multi-agent":{"id":"xai/grok-4.20-multi-agent","name":"Grok-4.20-Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-03-13","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0},"cost":{"input":2,"output":6,"cache_read":0.2}},"xai/grok-4":{"id":"xai/grok-4","name":"Grok-4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-4-fast-reasoning":{"id":"xai/grok-4-fast-reasoning","name":"Grok-4-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-09-16","last_updated":"2025-09-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"xai/grok-4.1-fast-reasoning":{"id":"xai/grok-4.1-fast-reasoning","name":"Grok-4.1-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000}},"xai/grok-4-fast-non-reasoning":{"id":"xai/grok-4-fast-non-reasoning","name":"Grok-4-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-09-16","last_updated":"2025-09-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"xai/grok-3-mini":{"id":"xai/grok-3-mini","name":"Grok 3 Mini","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-11","last_updated":"2025-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":0.5,"cache_read":0.075}},"xai/grok-code-fast-1":{"id":"xai/grok-code-fast-1","name":"Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-08-22","last_updated":"2025-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02}},"xai/grok-4.1-fast-non-reasoning":{"id":"xai/grok-4.1-fast-non-reasoning","name":"Grok-4.1-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000}},"ideogramai/ideogram-v2":{"id":"ideogramai/ideogram-v2","name":"Ideogram-v2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-21","last_updated":"2024-08-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram-v2a-turbo":{"id":"ideogramai/ideogram-v2a-turbo","name":"Ideogram-v2a-Turbo","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram-v2a":{"id":"ideogramai/ideogram-v2a","name":"Ideogram-v2a","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"ideogramai/ideogram":{"id":"ideogramai/ideogram","name":"Ideogram","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ideogram","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-04-03","last_updated":"2024-04-03","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":150,"output":0}},"fireworks-ai/kimi-k2.5-fw":{"id":"fireworks-ai/kimi-k2.5-fw","name":"Kimi-K2.5-FW","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":245760,"output":16384},"cost":{"input":0,"output":0}},"runwayml/runway":{"id":"runwayml/runway","name":"Runway","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"runway","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-10-11","last_updated":"2024-10-11","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":256,"output":0}},"runwayml/runway-gen-4-turbo":{"id":"runwayml/runway-gen-4-turbo","name":"Runway-Gen-4-Turbo","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"runway","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-05-09","last_updated":"2025-05-09","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":256,"output":0}},"trytako/tako":{"id":"trytako/tako","name":"Tako","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"tako","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":0}},"stabilityai/stablediffusionxl":{"id":"stabilityai/stablediffusionxl","name":"StableDiffusionXL","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-07-09","last_updated":"2023-07-09","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":200,"output":0}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":14,"cache_read":0.22}},"openai/dall-e-3":{"id":"openai/dall-e-3","name":"DALL-E-3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"dall-e","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":800,"output":0}},"openai/sora-2":{"id":"openai/sora-2","name":"Sora-2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"sora","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4-Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":27,"output":160}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-13","last_updated":"2023-09-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":2048},"cost":{"input":0.45,"output":1.4}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5-Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":27.2727,"output":163.6364},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4-Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.18,"output":1.1,"cache_read":0.018}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"openai/gpt-4o-search":{"id":"openai/gpt-4o-search","name":"GPT-4o-Search","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-11","last_updated":"2025-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9}},"openai/sora-2-pro":{"id":"openai/sora-2-pro","name":"Sora-2-Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"sora","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022}},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5.0505,"output":32.3232,"cache_read":1.2626}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":19,"output":150}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4,"cache_read":0.25}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-01-31","last_updated":"2025-01-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-02-10","last_updated":"2026-02-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.09,"output":0.36,"cache_read":0.022}},"openai/o3-deep-research":{"id":"openai/o3-deep-research","name":"o3-deep-research","description":"Research model for long-horizon investigation, synthesis, and analytical reports","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":9,"output":36,"cache_read":2.2}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36,"cache_read":0.0045}},"openai/gpt-5.2-instant":{"id":"openai/gpt-5.2-instant","name":"GPT-5.2-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":14,"output":54}},"openai/chatgpt-4o-latest":{"id":"openai/chatgpt-4o-latest","name":"ChatGPT-4o-Latest","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-14","last_updated":"2024-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":4.5,"output":14}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":14,"output":110}},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"GPT-3.5-Turbo-Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-20","last_updated":"2023-09-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":3500,"output":1024},"cost":{"input":1.4,"output":1.8}},"openai/gpt-5.3-codex-spark":{"id":"openai/gpt-5.3-codex-spark","name":"GPT-5.3-Codex-Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-5-chat":{"id":"openai/gpt-5-chat","name":"GPT-5-Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":124096,"output":4096},"cost":{"input":0.14,"output":0.54,"cache_read":0.068}},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":18,"output":72}},"openai/gpt-5.3-instant":{"id":"openai/gpt-5.3-instant","name":"GPT-5.3-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-4o-aug":{"id":"openai/gpt-4o-aug","name":"GPT-4o-Aug","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-11-21","last_updated":"2024-11-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2.2,"output":9,"cache_read":1.1}},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"o3-mini-high","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-01-31","last_updated":"2025-01-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.99,"output":4}},"openai/gpt-5.1-instant":{"id":"openai/gpt-5.1-instant","name":"GPT-5.1-Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-image-1":{"id":"openai/gpt-image-1","name":"GPT-Image-1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4-Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2026-03-12","last_updated":"2026-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.68,"output":4,"cache_read":0.068}},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1-Codex-Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.6,"output":13,"cache_read":0.16}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":4.5455,"output":27.2727,"cache_read":0.4545},"canonical_model_id":"openai/gpt-5.5"},"openai/o4-mini-deep-research":{"id":"openai/o4-mini-deep-research","name":"o4-mini-deep-research","description":"Research model for long-horizon investigation, synthesis, and analytical reports","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/gpt-4-classic-0314":{"id":"openai/gpt-4-classic-0314","name":"GPT-4-Classic-0314","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-08-26","last_updated":"2024-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"status":"deprecated","cost":{"input":27,"output":54}},"openai/gpt-4-classic":{"id":"openai/gpt-4-classic","name":"GPT-4-Classic","description":"Legacy model retained for compatibility with older integrations","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-03-25","last_updated":"2024-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"status":"deprecated","cost":{"input":27,"output":54}},"openai/gpt-4o-mini-search":{"id":"openai/gpt-4o-mini-search","name":"GPT-4o-mini-Search","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-03-11","last_updated":"2025-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.14,"output":0.54}},"openai/gpt-3.5-turbo-raw":{"id":"openai/gpt-3.5-turbo-raw","name":"GPT-3.5-Turbo-Raw","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-27","last_updated":"2023-09-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":4524,"output":2048},"cost":{"input":0.45,"output":1.4}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.36,"output":1.4,"cache_read":0.09}},"openai/gpt-image-1-mini":{"id":"openai/gpt-image-1-mini","name":"GPT-Image-1-Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-image-1.5":{"id":"openai/gpt-image-1.5","name":"gpt-image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4-Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2023-09-13","last_updated":"2023-09-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":9,"output":27}},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-Codex-Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.22,"output":1.8,"cache_read":0.022}},"openai/o3":{"id":"openai/o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.8,"output":7.2,"cache_read":0.45}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.1,"output":9,"cache_read":0.11}},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":140,"output":540}},"topazlabs-co/topazlabs":{"id":"topazlabs-co/topazlabs","name":"TopazLabs","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"topazlabs","attachment":true,"reasoning":false,"tool_call":true,"temperature":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":204,"output":0}}}},"cerebras":{"id":"cerebras","env":["CEREBRAS_API_KEY"],"npm":"@ai-sdk/cerebras","name":"Cerebras","doc":"https://inference-docs.cerebras.ai/models/overview","models":{"qwen-3.8-27b":{"id":"qwen-3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.99,"output":1.49,"cache_read":0.99},"canonical_model_id":"alibaba/qwen3.8-27b"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"}}},"groq":{"id":"groq","env":["GROQ_API_KEY"],"npm":"@ai-sdk/groq","name":"Groq","doc":"https://console.groq.com/docs/models","models":{"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-09-01","last_updated":"2025-09-05","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":0}},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.59,"output":0.79}},"allam-2-7b":{"id":"allam-2-7b","name":"ALLaM-2-7b","description":"ALLaM-2-7b instruction tuned model by SDAIA","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"sdaia/allam-2-7b"},"whisper-large-v3-turbo":{"id":"whisper-large-v3-turbo","name":"Whisper Large V3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":0}},"llama-3.1-8b-instant":{"id":"llama-3.1-8b-instant","name":"Llama 3.1 8B","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.08}},"groq/compound-mini":{"id":"groq/compound-mini","name":"Compound Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"groq","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192}},"groq/compound":{"id":"groq/compound","name":"Compound","description":"General-purpose chat model for instruction following, writing, and analysis","family":"groq","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192}},"meta-llama/llama-prompt-guard-2-86m":{"id":"meta-llama/llama-prompt-guard-2-86m","name":"Prompt Guard 2 86M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"status":"beta","cost":{"input":0.04,"output":0.04}},"meta-llama/llama-prompt-guard-2-22m":{"id":"meta-llama/llama-prompt-guard-2-22m","name":"Llama Prompt Guard 2 22M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"status":"beta","cost":{"input":0.03,"output":0.03}},"canopylabs/orpheus-v1-english":{"id":"canopylabs/orpheus-v1-english","name":"Canopy Labs Orpheus V1 English","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"canopylabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":4000,"output":50000},"status":"beta"},"canopylabs/orpheus-arabic-saudi":{"id":"canopylabs/orpheus-arabic-saudi","name":"Canopy Labs Orpheus Arabic Saudi","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"canopylabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":4000,"output":50000},"status":"beta"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","default","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131042,"output":16384},"cost":{"input":0.8,"output":4},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","default"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.6,"output":3,"cache_read":0.3},"canonical_model_id":"alibaba/qwen3.6-27b"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375}},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"Safety GPT OSS 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2026-06-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"status":"beta","cost":{"input":0.075,"output":0.3}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-10-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-oss-120b"}}},"blueclaw":{"id":"blueclaw","env":["BLUECLAW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://openai.blueclaw.network/v1","name":"Blue Claw","doc":"https://blueclaw.network","models":{"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"status":"beta","canonical_model_id":"alibaba/qwen3.8-27b"}}},"zai":{"id":"zai","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.z.ai/api/paas/v4","name":"Z.AI","doc":"https://docs.z.ai/guides/overview/pricing","models":{"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"glm-4.6v-flash":{"id":"glm-4.6v-flash","name":"GLM-4.6V-Flash","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8}},"glm-5.3-flashx":{"id":"glm-5.3-flashx","name":"GLM-5.3-FlashX","description":"High-speed GLM-5.3-Flash serving option for coding and agent workflows","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"}}},"empiriolabs":{"id":"empiriolabs","env":["EMPIRIOLABS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.empiriolabs.ai/v1","name":"EmpirioLabs AI","doc":"https://docs.empiriolabs.ai","models":{"qwen3-8-max-0902":{"id":"qwen3-8-max-0902","name":"Qwen3.8 Max 0902","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen3-6-plus":{"id":"qwen3-6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.5,"tiers":[{"input":2,"output":6,"cache_read":2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":2}},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen3-6-27b":{"id":"qwen3-6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.412564,"output":2.475384,"cache_read":0.412564},"canonical_model_id":"alibaba/qwen3.6-27b"},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25,"cache_read":0.075},"canonical_model_id":"zhipuai/glm-5.3-flash"},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.95},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"seed-2-0-lite":{"id":"seed-2-0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.31,"output":2.5,"cache_read":0.31,"tiers":[{"input":0.62,"output":5,"cache_read":0.62,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.424,"output":1.272,"cache_read":0.424},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"mimo-v2-5":{"id":"mimo-v2-5","name":"MiMo V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.7,"output":1.4,"cache_read":0.014},"canonical_model_id":"xiaomi/mimo-v2.5"},"seed-2-0-mini":{"id":"seed-2-0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.12,"output":0.5,"cache_read":0.12,"tiers":[{"input":0.24,"output":1,"cache_read":0.24,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"canonical_model_id":"meta/muse-glimmer-30b"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":3},"canonical_model_id":"moonshotai/kimi-k3"},"glm-4-7-flash":{"id":"glm-4-7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"mimo-v2-6-pro":{"id":"mimo-v2-6-pro","name":"MiMo V2.6 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.435},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"qwen3-7-max":{"id":"qwen3-7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":64000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":2.5},"canonical_model_id":"alibaba/qwen3.7-max"},"step-3-5-flash":{"id":"step-3-5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"canonical_model_id":"stepfun/step-3.5-flash"},"qwen3-8-max":{"id":"qwen3-8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":2},"canonical_model_id":"alibaba/qwen3.8-max"},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax M2.7 Highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"mimo-v2-5-pro":{"id":"mimo-v2-5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.175,"output":4.35,"cache_read":0.018},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"seed-2-0-pro":{"id":"seed-2-0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.63,"output":3.79,"cache_read":0.63,"tiers":[{"input":1.26,"output":7.58,"cache_read":1.26,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-pro"},"qwen3-5-4b":{"id":"qwen3-5-4b","name":"Qwen3.5 4B","description":"Qwen3.5 4B is a low-cost multimodal reasoning model with 256K context, image and video input, function tools, and structured output.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-02","last_updated":"2026-03-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.04,"output":0.07,"cache_read":0.02}},"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"output":131072},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"qwen3-5-27b":{"id":"qwen3-5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.086,"output":0.688,"cache_read":0.086,"tiers":[{"input":0.258,"output":2.064,"cache_read":0.258,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-27b"},"seed-2-1-turbo":{"id":"seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.63,"output":3.13,"cache_read":0.63},"canonical_model_id":"bytedance-seed/seed-2.1-turbo"},"fugu-ultra-v1-0":{"id":"fugu-ultra-v1-0","name":"Fugu Ultra v1.0","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":7.5,"output":45,"cache_read":1.5,"tiers":[{"input":15,"output":67.5,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":15,"output":67.5,"cache_read":3}},"canonical_model_id":"sakana/fugu-ultra"},"qwen3-5-122b-a10b":{"id":"qwen3-5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.115,"output":0.917,"cache_read":0.115,"tiers":[{"input":0.287,"output":2.294,"cache_read":0.287,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen3-5-flash":{"id":"qwen3-5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.09,"output":0.368,"cache_read":0.09},"canonical_model_id":"alibaba/qwen3.5-flash"},"mimo-v2-6-pro-ultraspeed":{"id":"mimo-v2-6-pro-ultraspeed","name":"MiMo V2.6 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":4.35},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"glm-5-2":{"id":"glm-5-2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"canonical_model_id":"zhipuai/glm-5.2"},"mimo-v2-6-flash":{"id":"mimo-v2-6-flash","name":"MiMo V2.6 Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"muse-spark-1-2":{"id":"muse-spark-1-2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"canonical_model_id":"meta/muse-spark-1.2"},"qwen3-7-flash":{"id":"qwen3-7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.02,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.04,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.7"},"qwen3-6-35b-a3b":{"id":"qwen3-6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.07,"output":0.42,"cache_read":0.035},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen3-5-9b":{"id":"qwen3-5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13,"cache_read":0.045},"canonical_model_id":"alibaba/qwen3.5-9b"},"step-3-5-flash-2603":{"id":"step-3-5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"canonical_model_id":"stepfun/step-3.5-flash-2603"},"qwen3-5-35b-a3b":{"id":"qwen3-5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.057,"output":0.459,"cache_read":0.057,"tiers":[{"input":0.229,"output":1.835,"cache_read":0.229,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16000},"cost":{"input":0.8939,"output":3.7131,"cache_read":0.1788},"canonical_model_id":"moonshotai/kimi-k2.6"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":524288},"cost":{"input":0.225,"output":0.9,"cache_read":0.045,"tiers":[{"input":0.45,"output":1.8,"cache_read":0.09,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.45,"output":1.8,"cache_read":0.09}},"canonical_model_id":"minimax/MiniMax-M3"},"glm-5-3":{"id":"glm-5-3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"canonical_model_id":"zhipuai/glm-5.3"},"fugu-ultra-v1-1":{"id":"fugu-ultra-v1-1","name":"Fugu Ultra v1.1","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"kimi-k2-7-code-highspeed":{"id":"kimi-k2-7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":1.9,"output":8,"cache_read":1.9},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"deepseek-v4-1-flash":{"id":"deepseek-v4-1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3-7-plus":{"id":"qwen3-7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":256000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.4,"tiers":[{"input":1.2,"output":4.8,"cache_read":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":1.2}},"canonical_model_id":"alibaba/qwen3.7-plus"},"glm-5-1":{"id":"glm-5-1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":38912}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.165,"tiers":[{"input":1.1,"output":3.851,"cache_read":0.22,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5.1"},"glm-4-6v-flash":{"id":"glm-4-6v-flash","name":"GLM 4.6V Flash","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"fugu-ultra-v2-0":{"id":"fugu-ultra-v2-0","name":"Fugu Ultra v2.0","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"mistral-small-4":{"id":"mistral-small-4","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.15},"canonical_model_id":"mistral/mistral-small-2603"},"qwen3-8-omni-flash":{"id":"qwen3-8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":0.94,"cache_read":0.3},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen3-5-plus":{"id":"qwen3-5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.36,"output":2.21,"cache_read":0.36,"tiers":[{"input":1.08,"output":6.62,"cache_read":1.08,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.08,"output":6.62,"cache_read":1.08}},"canonical_model_id":"alibaba/qwen3.5-plus"},"muse-spark-1-3":{"id":"muse-spark-1-3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"canonical_model_id":"meta/muse-spark-1.3"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":393216}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3,"cache_read":1.65},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen3-8-flash":{"id":"qwen3-8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.16},"canonical_model_id":"alibaba/qwen3.8-flash"},"gemma-3-27b":{"id":"gemma-3-27b","name":"Gemma 3 27B","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-3-27b-it"},"qwen3-6-flash":{"id":"qwen3-6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":64000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.25,"tiers":[{"input":1,"output":4,"cache_read":1,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1,"output":4,"cache_read":1}},"canonical_model_id":"alibaba/qwen3.6-flash"},"seed-2-0-code":{"id":"seed-2-0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.4,"tiers":[{"input":0.8,"output":4.8,"cache_read":0.8,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"qwen3-8-27b":{"id":"qwen3-8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.17,"output":0.5,"cache_read":0.08},"canonical_model_id":"alibaba/qwen3.8-27b"},"muse-spark-1-1":{"id":"muse-spark-1-1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":1},"canonical_model_id":"meta/muse-spark-1.1"},"step-3-7-flash":{"id":"step-3-7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":131072},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"qwen3-5-397b-a17b":{"id":"qwen3-5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":1,"max":80000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":1.032,"cache_read":0.172,"tiers":[{"input":0.43,"output":2.58,"cache_read":0.43,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"glm-4-5-flash":{"id":"glm-4-5-flash","name":"GLM 4.5 Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":98304},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.5-flash"},"gemma-4-26b-a4b":{"id":"gemma-4-26b-a4b","name":"Gemma 4 26B-A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.29,"cache_read":0.025},"canonical_model_id":"google/gemma-4-26b-a4b-it"}}},"sensenova":{"id":"sensenova","env":["SENSENOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token.sensenova.cn/v1","name":"SenseNova (China)","doc":"https://platform.sensenova.cn/docs","models":{"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k3"},"sensenova-6.8-flash-lite":{"id":"sensenova-6.8-flash-lite","name":"SenseNova 6.8 Flash Lite","description":"SenseNova lightweight multimodal agent model for real-world complex tasks, data analysis, and complex information presentation","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.2"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"alibaba-token-plan":{"id":"alibaba-token-plan","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1","name":"Alibaba Token Plan","doc":"https://www.alibabacloud.com/help/en/model-studio/token-plan-overview","models":{"happyhorse-1.1-r2v":{"id":"happyhorse-1.1-r2v","name":"HappyHorse 1.1 Reference-to-Video","description":"Video model for reference-guided video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-max"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-max"},"happyhorse-1.1-t2v":{"id":"happyhorse-1.1-t2v","name":"HappyHorse 1.1 Text-to-Video","description":"Video model for prompt-driven text-to-video generation","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen-image-2.0":{"id":"qwen-image-2.0","name":"Qwen Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"qwen-image-2.0-pro":{"id":"qwen-image-2.0-pro","name":"Qwen Image 2.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"wan2.7-image":{"id":"wan2.7-image","name":"Wan2.7 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"wan2.7-image-pro":{"id":"wan2.7-image-pro","name":"Wan2.7 Image Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.5"},"happyhorse-1.1-i2v":{"id":"happyhorse-1.1-i2v","name":"HappyHorse 1.1 Image-to-Video","description":"Video model for image-to-video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-flash"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"minimax/MiniMax-M2.5"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-plus"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-03","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-plus"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"cloudflare-workers-ai":{"id":"cloudflare-workers-ai","env":["CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1","name":"Cloudflare Workers AI","doc":"https://developers.cloudflare.com/workers-ai/models/","models":{"@cf/meta/llama-3.3-70b-instruct-fp8-fast":{"id":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","name":"Llama 3.3 70B Instruct fp8 Fast","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":24000,"output":24000},"cost":{"input":0.293,"output":2.253},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"@cf/meta/llama-guard-3-8b":{"id":"@cf/meta/llama-guard-3-8b","name":"Llama Guard 3 8B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.484,"output":0.03},"canonical_model_id":"meta/llama-guard-3-8b"},"@cf/meta/llama-3.1-8b-instruct-fp8":{"id":"@cf/meta/llama-3.1-8b-instruct-fp8","name":"Llama 3.1 8B Instruct fp8","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.152,"output":0.287},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"@cf/meta/llama-3.2-11b-vision-instruct":{"id":"@cf/meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.0485,"output":0.676},"canonical_model_id":"meta/llama-3.2-11b-vision-instruct"},"@cf/meta/llama-3.2-1b-instruct":{"id":"@cf/meta/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":60000},"cost":{"input":0.027,"output":0.201},"canonical_model_id":"meta/llama-3.2-1b"},"@cf/meta/llama-4-scout-17b-16e-instruct":{"id":"@cf/meta/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":16384},"cost":{"input":0.27,"output":0.85},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"@cf/meta/llama-3.2-3b-instruct":{"id":"@cf/meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":80000,"output":80000},"cost":{"input":0.0509,"output":0.335},"canonical_model_id":"meta/llama-3.2-3b"},"@cf/google/gemma-4-26b-a4b-it":{"id":"@cf/google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"id":"@cf/aisingapore/gemma-sea-lion-v4-27b-it","name":"Gemma Sea Lion V4 27B It","description":"Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"canonical_model_id":"aisingapore/gemma-sea-lion-v4-27b-it"},"@cf/ibm-granite/granite-4.0-h-micro":{"id":"@cf/ibm-granite/granite-4.0-h-micro","name":"Granite 4.0 H Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.017,"output":0.112},"canonical_model_id":"ibm/granite-4-h-micro"},"@cf/deepseek-ai/deepseek-v4-flash-0731":{"id":"@cf/deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"@cf/deepseek-ai/deepseek-v4-pro-0813":{"id":"@cf/deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{"id":"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b","name":"Deepseek R1 Distill Qwen 32B","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":80000,"output":80000},"cost":{"input":0.497,"output":4.881},"canonical_model_id":"deepseek/deepseek-r1"},"@cf/mistralai/mistral-small-3.1-24b-instruct":{"id":"@cf/mistralai/mistral-small-3.1-24b-instruct","name":"Mistral Small 3.1 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"canonical_model_id":"mistral/mistral-small-3-1-24b-instruct-2503"},"@cf/moonshotai/kimi-k2.6":{"id":"@cf/moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"@cf/moonshotai/kimi-k2.7-code":{"id":"@cf/moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"@cf/zai-org/glm-5.3-flash":{"id":"@cf/zai-org/glm-5.3-flash","name":"Glm 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"@cf/zai-org/glm-4.7-flash":{"id":"@cf/zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"@cf/zai-org/glm-5.2":{"id":"@cf/zai-org/glm-5.2","name":"Glm 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"@cf/zai-org/glm-5.3":{"id":"@cf/zai-org/glm-5.3","name":"Glm 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"@cf/nvidia/nemotron-3-120b-a12b":{"id":"@cf/nvidia/nemotron-3-120b-a12b","name":"Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"@cf/qwen/qwen3.8-27b":{"id":"@cf/qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":3.2,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-27b"},"@cf/qwen/qwq-32b":{"id":"@cf/qwen/qwq-32b","name":"Qwq 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":24000,"output":24000},"cost":{"input":0.66,"output":1},"canonical_model_id":"alibaba/qwq-32b"},"@cf/qwen/qwen3-30b-a3b-fp8":{"id":"@cf/qwen/qwen3-30b-a3b-fp8","name":"Qwen3 30B A3b fp8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.0509,"output":0.335},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"@cf/qwen/qwen2.5-coder-32b-instruct":{"id":"@cf/qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.66,"output":1},"canonical_model_id":"alibaba/qwen2.5-coder-32b-instruct"},"@cf/openai/gpt-oss-20b":{"id":"@cf/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"@cf/openai/gpt-oss-120b":{"id":"@cf/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"}}},"engy":{"id":"engy","env":["ENGY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.engy.ai/v1","name":"engy","doc":"https://engy.ai/pricing","models":{"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1001536,"input":936000,"output":65536},"cost":{"input":0.045,"output":0.32,"cache_read":0.015},"canonical_model_id":"alibaba/qwen3.8-27b"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":229376,"output":32768},"cost":{"input":0.135,"output":0.45,"cache_read":0.027},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":920576,"output":128000},"cost":{"input":0.045,"output":0.09,"cache_read":0.009},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1113088,"input":1047552,"output":65536},"cost":{"input":1.95,"output":9.75,"cache_read":0.195},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":262144,"output":65536},"cost":{"input":0.04,"output":0.08,"cache_read":0.008},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":208192,"input":200000,"output":8192},"cost":{"input":0.045,"output":0.3,"cache_read":0.015},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":229376,"output":32768},"cost":{"input":0.68,"output":1.5,"cache_read":0.18},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":294912,"output":32768},"cost":{"input":0.98,"output":3.08,"cache_read":0.18},"canonical_model_id":"zhipuai/glm-5.3"}}},"poolside":{"id":"poolside","env":["POOLSIDE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.poolside.ai/v1","name":"Poolside","doc":"https://platform.poolside.ai","models":{"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"poolside/laguna-s-2.1"},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"poolside/laguna-xs-2.1"},"poolside/laguna-m.1":{"id":"poolside/laguna-m.1","name":"Laguna M.1","description":"Poolside's open-weight model for agentic coding and long-horizon work","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"poolside/laguna-m.1"}}},"nano-gpt":{"id":"nano-gpt","env":["NANO_GPT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://nano-gpt.com/api/v1","name":"NanoGPT","doc":"https://docs.nano-gpt.com","models":{"deepseek-reasoner-cheaper":{"id":"deepseek-reasoner-cheaper","name":"Deepseek R1 Cheaper","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2}},"nano-gpt-help":{"id":"nano-gpt-help","name":"NanoGPT Help","description":"Text-only NanoGPT support assistant. Questions are processed by the Help inference provider; do not paste secrets or account credentials. Covers the website, models, API, pricing, memory, media generation, and support.","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-06","last_updated":"2026-06-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":6000,"input":6000,"output":512},"cost":{"input":0,"output":0}},"doubao-seed-2-0-lite-260215":{"id":"doubao-seed-2-0-lite-260215","name":"Doubao Seed 2.0 Lite","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32000},"cost":{"input":0.1462,"output":0.8738,"cache_read":0.0731}},"doubao-seed-2-0-mini-260215":{"id":"doubao-seed-2-0-mini-260215","name":"Doubao Seed 2.0 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32000},"cost":{"input":0.0493,"output":0.4845,"cache_read":0.02465}},"fastgpt":{"id":"fastgpt","name":"Web Answer","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-23","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":7.5,"output":7.5}},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"Doubao Seed 2.0 Pro","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.782,"output":3.876,"cache_read":0.391}},"ernie-5.0-thinking-preview":{"id":"ernie-5.0-thinking-preview","name":"Ernie 5.0 Thinking Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1,"output":3.5,"cache_read":0.5}},"gemini-2.5-flash-lite-preview-09-2025-thinking":{"id":"gemini-2.5-flash-lite-preview-09-2025-thinking","name":"Gemini 2.5 Flash Lite Preview (09/2025) – Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"gemma-4-12b-it-station-keeper":{"id":"gemma-4-12b-it-station-keeper","name":"Gemma 4 12B StationKeeper","description":"Gemma 4 12B StationKeeper is an open-weight roleplay finetune with image understanding, tool calling, optional reasoning, and a 131,072-token context window.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-09","last_updated":"2026-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025}},"glm-4-air-0111":{"id":"glm-4-air-0111","name":"GLM 4 Air 0111","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-11","last_updated":"2025-01-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":0.1394,"output":0.1394,"cache_read":0.0697}},"glm-4.1v-thinking-flashx":{"id":"glm-4.1v-thinking-flashx","name":"GLM 4.1V Thinking FlashX","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"input":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"DeepSeek Chat 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2,"output":0.77,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v3-0324"},"venice-uncensored":{"id":"venice-uncensored","name":"Venice Uncensored","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"venice","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-10-01","last_updated":"2025-02-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.4}},"Gemma-4-31B-MeroMero-v2:thinking":{"id":"Gemma-4-31B-MeroMero-v2:thinking","name":"Gemma 4 31B MeroMero v2 Thinking","description":"Gemma 4 31B MeroMero v2 with thinking enabled for more deliberate emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemini-2.0-pro-reasoner":{"id":"gemini-2.0-pro-reasoner","name":"Gemini 2.0 Pro Reasoner","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-05","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":1.292,"output":4.998,"cache_read":0.323}},"Meta-Llama-3-1-8B-Instruct-FP8":{"id":"Meta-Llama-3-1-8B-Instruct-FP8","name":"Llama 3.1 8B (decentralized)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.02,"output":0.03,"cache_read":0.01}},"glm-4-plus-0111":{"id":"glm-4-plus-0111","name":"GLM 4 Plus 0111","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":9.996,"output":9.996,"cache_read":4.998}},"holo3-35b-a3b:thinking":{"id":"holo3-35b-a3b:thinking","name":"Holo3-35B-A3B Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125}},"gemma-4-26b-a4b-it-moonlight":{"id":"gemma-4-26b-a4b-it-moonlight","name":"Moonlight Dusk","description":"Moonlight Dusk is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"phi-4-mini-instruct":{"id":"phi-4-mini-instruct","name":"Phi 4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.17,"output":0.68,"cache_read":0.085}},"auto-model-premium":{"id":"auto-model-premium","name":"Auto model (Premium)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"gemma-4-31b-it-darkidol":{"id":"gemma-4-31b-it-darkidol","name":"DarkIdol","description":"DarkIdol is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"Gemini 2.5 Flash Lite Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"Gemini 2.5 Flash Preview (09/2025)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemma-4-26b-a4b-it-opusdistill":{"id":"gemma-4-26b-a4b-it-opusdistill","name":"Opus Distill","description":"Opus Distill is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"auto-model-standard":{"id":"auto-model-standard","name":"Auto model (Standard)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat 2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.75,"output":3,"cache_read":0.015},"canonical_model_id":"meituan/longcat-2.0"},"gemini-2.5-pro-preview-03-25":{"id":"gemini-2.5-pro-preview-03-25","name":"Gemini 2.5 Pro Preview 0325","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"agnes-3.0-flash":{"id":"agnes-3.0-flash","name":"Agnes 3.0 Flash","description":"Agnes 3.0 Flash is a low-cost model for coding, tool use, and multi-turn agent tasks. It supports text and image input, optional thinking, and a 512K-token context window.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-09","last_updated":"2026-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":65536},"cost":{"input":0.05,"output":0.15,"cache_read":0.005}},"Gemma-4-31B-Queen":{"id":"Gemma-4-31B-Queen","name":"Gemma 4 31B Queen","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"auto-model":{"id":"auto-model","name":"Auto model","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":0,"output":0}},"qvq-max":{"id":"qvq-max","name":"Qwen: QvQ Max","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-28","last_updated":"2025-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":1.2,"output":4.8,"cache_read":0.6}},"asi1-mini":{"id":"asi1-mini","name":"ASI1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1,"output":1,"cache_read":0.5}},"gemini-2.5-pro-exp-03-25":{"id":"gemini-2.5-pro-exp-03-25","name":"Gemini 2.5 Pro Experimental 0325","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"gemma-4-31b-it-isometry":{"id":"gemma-4-31b-it-isometry","name":"Isometry","description":"Isometry is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"celeris-1":{"id":"celeris-1","name":"Celeris 1","description":"Celeris 1 is a diffusion language model built for ultra-low-latency classification, extraction, judging, query rewriting, and other short structured responses.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-07-25","last_updated":"2026-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":2,"output":6,"cache_read":1}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Gemini 3 Pro Image","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"input":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3-pro-image-preview"},"gemma-4-26b-a4b-it-darksoul":{"id":"gemma-4-26b-a4b-it-darksoul","name":"Dark Soul","description":"Dark Soul is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"glm-4.1v-thinking-flash":{"id":"glm-4.1v-thinking-flash","name":"GLM 4.1V Thinking Flash","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"input":64000,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"Gemma-4-31B-GarnetV2":{"id":"Gemma-4-31B-GarnetV2","name":"Gemma 4 31B Garnet V2","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"gemini-2.5-flash-nothinking":{"id":"gemini-2.5-flash-nothinking","name":"Gemini 2.5 Flash (No Thinking)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"Gemma-4-31B-MeroMero-v2":{"id":"Gemma-4-31B-MeroMero-v2","name":"Gemma 4 31B MeroMero v2","description":"Gemma 4 31B MeroMero v2 is a LoRA finetune for emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"holo3-35b-a3b":{"id":"holo3-35b-a3b","name":"Holo3-35B-A3B","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.25,"output":1.8,"cache_read":0.125}},"claw-medium":{"id":"claw-medium","name":"Claw Medium","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2}},"gemma-4-26b-a4b-it-shadowsiren":{"id":"gemma-4-26b-a4b-it-shadowsiren","name":"Shadow Siren","description":"Shadow Siren is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"gemini-2.0-pro-exp-02-05":{"id":"gemini-2.0-pro-exp-02-05","name":"Gemini 2.0 Pro 0205","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-05","last_updated":"2025-02-05","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2097152,"input":2097152,"output":8192},"cost":{"input":1.989,"output":7.956,"cache_read":0.49725}},"claw-high":{"id":"claw-high","name":"Claw High","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2}},"deepseek-chat":{"id":"deepseek-chat","name":"DeepSeek V3/Deepseek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05},"canonical_model_id":"deepseek/deepseek-chat"},"Gemma-4-26B-A4B-MeroMero:thinking":{"id":"Gemma-4-26B-A4B-MeroMero:thinking","name":"Gemma 4 26B A4B MeroMero Thinking","description":"Gemma 4 26B A4B MeroMero with thinking enabled for more deliberate emotive dialogue, relationship scenes, creative writing, and multimodal roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"claw-low":{"id":"claw-low","name":"Claw Low","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2,"cache_write":0.08333}},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"Doubao 1.5 Pro 32k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-11-20","last_updated":"2025-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.1343,"output":0.3349,"cache_read":0.06715}},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"Doubao Seed 2.0 Code Preview","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.782,"output":3.893,"cache_read":0.391},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"hermes-low":{"id":"hermes-low","name":"Hermes Low","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2,"cache_write":0.08333}},"gemma-4-31b-it-gemsicle":{"id":"gemma-4-31b-it-gemsicle","name":"Gemsicle","description":"Gemsicle is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"mercury-coder-small":{"id":"mercury-coder-small","name":"Mercury Coder Small","description":"Model by Inception AI. A diffusion large language model that runs incredibly quickly (500+ tokens/second) while matching Claude 3.5 Haiku and GPT-4o-mini. 1st in speed on Copilot arena, and matching 2nd in quality.","family":"mercury","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":0.375},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"hermes-high":{"id":"hermes-high","name":"Hermes High","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"Gemini 2.5 Flash 0520","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"input":1048000,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"glm-4-long":{"id":"glm-4-long","name":"GLM-4 Long","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":4095},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"pokee-isaac":{"id":"pokee-isaac","name":"Pokee-Isaac 28B","description":"Pokee-Isaac is a 28B agentic model with a roughly 10-million-token context window, function calling, and OpenAI-compatible structured output. Pokee bills in $0.01 increments, rounding each non-zero request up to the next cent.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-04","last_updated":"2026-08-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"input":10000000,"output":60000},"cost":{"input":0.15,"output":1,"cache_read":0.075}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax M1","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-08","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.1394,"output":1.3328,"cache_read":0.0697}},"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{"id":"Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled","name":"Gemma 4 31B Claude 4.6 Opus Reasoning Distilled","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"claude","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.0306}},"Qwen3.5-27B-BlueStar-v3-Derestricted":{"id":"Qwen3.5-27B-BlueStar-v3-Derestricted","name":"Qwen3.5 27B BlueStar v3 Derestricted","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"gemma-4-31b-it-novelist":{"id":"gemma-4-31b-it-novelist","name":"Novelist","description":"Novelist is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"ernie-5.1:thinking":{"id":"ernie-5.1:thinking","name":"ERNIE 5.1 Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2026-05-10","last_updated":"2026-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":119000,"input":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75}},"gemma-4-12b-it-semancer":{"id":"gemma-4-12b-it-semancer","name":"Gemma 4 12B Semancer","description":"Gemma 4 12B Semancer is an open-weight roleplay finetune with image understanding, tool calling, optional reasoning, and a 131,072-token context window.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-09","last_updated":"2026-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025}},"mistral-code-latest":{"id":"mistral-code-latest","name":"Mistral Code Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15}},"Qwen3.5-27B-Queen-Derestricted":{"id":"Qwen3.5-27B-Queen-Derestricted","name":"Qwen3.5 27B Queen Derestricted","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"gemma-4-31b-it-fabled":{"id":"gemma-4-31b-it-fabled","name":"Fabled","description":"Fabled is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemma-4-26b-a4b-it-chimeraxheretic":{"id":"gemma-4-26b-a4b-it-chimeraxheretic","name":"Gemma 4 26B A4B Chimera X Heretic","description":"Chimera X Heretic is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-08","last_updated":"2026-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"Gemma-4-26B-A4B-MeroMero":{"id":"Gemma-4-26B-A4B-MeroMero","name":"Gemma 4 26B A4B MeroMero","description":"Gemma 4 26B A4B MeroMero is an NVFP4 multimodal mixture-of-experts fine-tune for emotive dialogue, relationship scenes, creative writing, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"Gemma-4-31B-Cognitive-Unshackled":{"id":"Gemma-4-31B-Cognitive-Unshackled","name":"Gemma 4 31B Cognitive Unshackled","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"universal-summarizer":{"id":"universal-summarizer","name":"Universal Summarizer","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-23","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":30,"output":30}},"gemma-4-12b-it":{"id":"gemma-4-12b-it","name":"Gemma 4 12B Instruct","description":"Compact Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"canonical_model_id":"google/gemma-4-12b-it"},"gemini-exp-1206":{"id":"gemini-exp-1206","name":"Gemini 2.0 Pro 1206","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2097152,"input":2097152,"output":8192},"cost":{"input":1.258,"output":4.998,"cache_read":0.629}},"gemini-2.5-flash-preview-09-2025-thinking":{"id":"gemini-2.5-flash-preview-09-2025-thinking","name":"Gemini 2.5 Flash Preview (09/2025) – Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"doubao-1.5-pro-256k":{"id":"doubao-1.5-pro-256k","name":"Doubao 1.5 Pro 256k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":16384},"cost":{"input":0.799,"output":1.445,"cache_read":0.3995}},"gemma-4-31b-it-garnet":{"id":"gemma-4-31b-it-garnet","name":"Garnet","description":"Garnet is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"gemini-2.5-pro-preview-05-06":{"id":"gemini-2.5-pro-preview-05-06","name":"Gemini 2.5 Pro Preview 0506","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-05-06","last_updated":"2025-05-06","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"Cohere Command A (08/2025)","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":8192},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"cohere/command-a-reasoning-08-2025"},"longcat-2.0:thinking":{"id":"longcat-2.0:thinking","name":"LongCat 2.0 Thinking","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.75,"output":3,"cache_read":0.015},"canonical_model_id":"meituan/longcat-2.0"},"deepseek-r1-sambanova":{"id":"deepseek-r1-sambanova","name":"DeepSeek R1 Fast","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":4.998,"output":6.987,"cache_read":2.499}},"gemini-2.5-flash-preview-04-17":{"id":"gemini-2.5-flash-preview-04-17","name":"Gemini 2.5 Flash Preview","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-04-17","last_updated":"2025-04-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"input":64000,"output":65536},"cost":{"input":0.4,"output":1.7,"cache_read":0.2},"canonical_model_id":"deepseek/deepseek-reasoner"},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"Gemini 2.5 Flash Lite Preview (09/2025)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"gemini-2.5-flash-preview-04-17:thinking":{"id":"gemini-2.5-flash-preview-04-17:thinking","name":"Gemini 2.5 Flash Preview Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-04-17","last_updated":"2025-04-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.7,"cache_read":0.2},"canonical_model_id":"deepseek/deepseek-r1"},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"Gemini 2.5 Pro Preview 0605","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2.5,"output":10,"cache_read":0.25}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"deepseek-chat-cheaper":{"id":"deepseek-chat-cheaper","name":"DeepSeek V3/Chat Cheaper","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.1,"output":0.425,"cache_read":0.05}},"gemma-4-31b-it-scarlet":{"id":"gemma-4-31b-it-scarlet","name":"Gemma 4 31B Scarlet","description":"Scarlet is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-08","last_updated":"2026-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"GLM-4.6-Derestricted-v5":{"id":"GLM-4.6-Derestricted-v5","name":"GLM 4.6 Derestricted v5","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.4,"output":1.5,"cache_read":0.2}},"longcat-2.5-preview":{"id":"longcat-2.5-preview","name":"LongCat 2.5 Preview","description":"Meituan's multimodal reasoning model for coding and agent tasks, with image understanding and a 1M-token context window","family":"longcat","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"canonical_model_id":"meituan/longcat-2.5-preview"},"doubao-1.5-vision-pro-32k":{"id":"doubao-1.5-vision-pro-32k","name":"Doubao 1.5 Vision Pro 32k","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-11-20","last_updated":"2025-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.459,"output":1.377,"cache_read":0.2295}},"glm-z1-airx":{"id":"glm-z1-airx","name":"GLM Z1 AirX","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"auto-model-basic":{"id":"auto-model-basic","name":"Auto model (Basic)","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-04-16","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":9.996,"output":19.992,"cache_read":4.998}},"qwen3-vl-235b-a22b-instruct-original":{"id":"qwen3-vl-235b-a22b-instruct-original","name":"Qwen3 VL 235B A22B Instruct Original","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.3,"output":1.9,"cache_read":0.15}},"gemma-4-26b-a4b-it-luminous":{"id":"gemma-4-26b-a4b-it-luminous","name":"Luminous Mirror","description":"Luminous Mirror is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"sarvam-105b":{"id":"sarvam-105b","name":"Sarvam 105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":4096},"cost":{"input":0.054,"output":0.2124,"cache_read":0.0336},"canonical_model_id":"sarvam/sarvam-105b"},"gemma-4-31b-it-gembrain":{"id":"gemma-4-31b-it-gembrain","name":"Gembrain","description":"Gembrain is a multimodal Gemma 4 31B creative finetune for expressive dialogue, long-form storytelling, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"phi-4-multimodal-instruct":{"id":"phi-4-multimodal-instruct","name":"Phi 4 Multimodal","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.07,"output":0.11,"cache_read":0.035}},"gemini-2.5-flash-preview-05-20:thinking":{"id":"gemini-2.5-flash-preview-05-20:thinking","name":"Gemini 2.5 Flash 0520 Thinking","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"input":1048000,"output":65536},"cost":{"input":0.15,"output":3.5,"cache_read":0.015}},"gemma-4-26b-a4b-it-musica":{"id":"gemma-4-26b-a4b-it-musica","name":"Musica","description":"Musica is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"gemma-4-26b-a4b-it-chimerax":{"id":"gemma-4-26b-a4b-it-chimerax","name":"Chimera X","description":"Chimera X is a Gemma 4 26B A4B multimodal mixture-of-experts fine-tune for creative writing, expressive dialogue, and roleplay.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.12,"output":0.38,"cache_read":0.06}},"hermes-medium":{"id":"hermes-medium","name":"Hermes Medium","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-11","last_updated":"2026-05-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2}},"Gemma-4-31B-DarkIdol":{"id":"Gemma-4-31B-DarkIdol","name":"Gemma 4 31B DarkIdol","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.306,"output":0.306,"cache_read":0.153}},"ernie-5.1":{"id":"ernie-5.1","name":"ERNIE 5.1","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"ernie","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-05-10","last_updated":"2026-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":119000,"input":119000,"output":64000},"cost":{"input":0.75,"output":3,"cache_read":0.75}},"mistral-code-agent-latest":{"id":"mistral-code-agent-latest","name":"Mistral Code Agent Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"kimi-k2-instruct-fast":{"id":"kimi-k2-instruct-fast","name":"Kimi K2 0711 Fast","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-15","last_updated":"2025-07-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"featherless-ai/Qwerky-72B":{"id":"featherless-ai/Qwerky-72B","name":"Qwerky 72B","description":"General-purpose chat model for instruction following, writing, and analysis","family":"qwerky","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"unsloth/gemma-3-27b-it":{"id":"unsloth/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":96000},"cost":{"input":0.2992,"output":0.2992,"cache_read":0.1496}},"unsloth/gemma-3-12b-it":{"id":"unsloth/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.272,"output":0.272,"cache_read":0.136}},"unsloth/gemma-3-4b-it":{"id":"unsloth/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"unsloth","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"ByteDance Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.25,"output":2,"cache_read":0.125},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"ByteDance Seed 2.1 Turbo","description":"ByteDance Seed 2.1 Turbo is a multimodal model for coding and long-horizon agent workflows, including end-to-end software delivery and multi-step task execution. It supports text, image, and video input with a 262k context window.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"ByteDance Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.25},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"poolside/laguna-s-2.1:thinking":{"id":"poolside/laguna-s-2.1:thinking","name":"Laguna S 2.1 Thinking","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01},"canonical_model_id":"poolside/laguna-s-2.1"},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01},"canonical_model_id":"poolside/laguna-s-2.1"},"abliteration-ai/abliterated-model-large-v2":{"id":"abliteration-ai/abliterated-model-large-v2","name":"Abliterated Model Large V2","description":"Abliteration.ai's default large text reasoning model is derived from GLM-5.3 for harder reasoning and evaluation workloads, with automatic prompt caching and a one-million-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":3,"output":5,"cache_read":0.3}},"abliteration-ai/abliterated-model":{"id":"abliteration-ai/abliterated-model","name":"Abliterated Model","description":"Abliteration.ai's multimodal reasoning model supports text and image input, structured output, automatic prompt caching, and a 262K-token context window.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":262134},"cost":{"input":1,"output":3,"cache_read":0.1}},"abliteration-ai/abliterated-model-large":{"id":"abliteration-ai/abliterated-model-large","name":"Abliterated Model Large","description":"Abliteration.ai's large text reasoning model is derived from GLM-5.2 and supports native tool calling, structured output, automatic prompt caching, and a one-million-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":3,"output":5,"cache_read":0.3}},"prism-ml/ternary-bonsai-2-27b":{"id":"prism-ml/ternary-bonsai-2-27b","name":"Ternary Bonsai 2 27B","description":"Ternary Bonsai 2 27B is a 27B-parameter reasoning model from PrismML derived from Qwen3.8-27B. It supports coding, mathematics, tool calling, and image understanding with a 262K-token context window.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375}},"anthropic/claude-opus-4.5:thinking":{"id":"anthropic/claude-opus-4.5:thinking","name":"Claude 4.5 Opus Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-sonnet-4.5:thinking":{"id":"anthropic/claude-sonnet-4.5:thinking","name":"Claude Sonnet 4.5 Thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-opus-4.6:thinking:low":{"id":"anthropic/claude-opus-4.6:thinking:low","name":"Claude 4.6 Opus Thinking Low","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude 4.5 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude 4.6 Opus","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude 4.7 Opus","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-sonnet-4:thinking:64000":{"id":"anthropic/claude-sonnet-4:thinking:64000","name":"Claude 4 Sonnet Thinking (64K)","description":"Claude 4 Sonnet with maximum thinking budget (64,000 tokens).","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-haiku-5.5":{"id":"anthropic/claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5}},"anthropic/claude-opus-4.1:thinking:1024":{"id":"anthropic/claude-opus-4.1:thinking:1024","name":"Claude 4.1 Opus Thinking (1K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-haiku-latest":{"id":"anthropic/claude-haiku-latest","name":"Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5.5:thinking":{"id":"anthropic/claude-sonnet-5.5:thinking","name":"Claude Sonnet 5.5 Thinking","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-sonnet-4:thinking:8192":{"id":"anthropic/claude-sonnet-4:thinking:8192","name":"Claude 4 Sonnet Thinking (8K)","description":"Claude 4 Sonnet with reduced thinking budget (8,192 tokens).","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-sonnet-4:thinking:1024":{"id":"anthropic/claude-sonnet-4:thinking:1024","name":"Claude 4 Sonnet Thinking (1K)","description":"Claude 4 Sonnet with minimal thinking budget (1,024 tokens).","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4.6:thinking":{"id":"anthropic/claude-opus-4.6:thinking","name":"Claude 4.6 Opus Thinking","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"anthropic/claude-opus-4.6:thinking:medium":{"id":"anthropic/claude-opus-4.6:thinking:medium","name":"Claude 4.6 Opus Thinking Medium","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-latest":{"id":"anthropic/claude-fable-latest","name":"Claude Fable Latest","description":"Compatibility alias for Claude Fable.","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-sonnet-4:thinking:32768":{"id":"anthropic/claude-sonnet-4:thinking:32768","name":"Claude 4 Sonnet Thinking (32K)","description":"Claude 4 Sonnet with extended thinking budget (32,768 tokens).","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-opus-4.1:thinking:8192":{"id":"anthropic/claude-opus-4.1:thinking:8192","name":"Claude 4.1 Opus Thinking (8K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-haiku-4.5:thinking":{"id":"anthropic/claude-haiku-4.5:thinking","name":"Claude Haiku 4.5 Thinking","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4.8:thinking":{"id":"anthropic/claude-opus-4.8:thinking","name":"Claude Opus 4.8 Thinking","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude 4 Sonnet","description":"Claude 4 Sonnet by Anthropic. A new generation model with improved capabilities, especially on programming and development. NOTE: Inputs > 200k tokens are charged at 2x input, 1.5x output rate.","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6:thinking":{"id":"anthropic/claude-sonnet-4.6:thinking","name":"Claude Sonnet 4.6 Thinking","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-4.6:thinking:max":{"id":"anthropic/claude-opus-4.6:thinking:max","name":"Claude 4.6 Opus Thinking Max","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-sonnet-5:thinking":{"id":"anthropic/claude-sonnet-5:thinking","name":"Claude Sonnet 5 Thinking","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-4.7:thinking":{"id":"anthropic/claude-opus-4.7:thinking","name":"Claude 4.7 Opus Thinking","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-opus-4.1:thinking":{"id":"anthropic/claude-opus-4.1:thinking","name":"Claude 4.1 Opus Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-sonnet-4:thinking":{"id":"anthropic/claude-sonnet-4:thinking","name":"Claude 4 Sonnet Thinking","description":"Anthropic's Claude 4 Sonnet with the ability to show its thinking process step by step.","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3}},"anthropic/claude-opus-4.1:thinking:32768":{"id":"anthropic/claude-opus-4.1:thinking:32768","name":"Claude 4.1 Opus Thinking (32K)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5},"canonical_model_id":"anthropic/claude-opus-4-1"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":2.856,"output":14.246,"cache_read":1.428},"canonical_model_id":"cohere/command-r-plus-08-2024"},"deepseek/deepseek-v4-flash:thinking":{"id":"deepseek/deepseek-v4-flash:thinking","name":"DeepSeek V4 Flash (Thinking)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.05,"output":0.16,"cache_read":0.013},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-flash-0423":{"id":"deepseek/deepseek-v4-flash-0423","name":"DeepSeek V4 Flash 0423","description":"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash-0423"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":0.13,"output":0.52,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4.1-flash:thinking":{"id":"deepseek/deepseek-v4.1-flash:thinking","name":"DeepSeek V4.1 Flash Thinking","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":384000},"cost":{"input":0.13,"output":0.52,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v3.2:thinking":{"id":"deepseek/deepseek-v3.2:thinking","name":"DeepSeek V3.2 Thinking","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163000,"input":163000,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-latest":{"id":"deepseek/deepseek-latest","name":"DeepSeek Latest","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04}},"deepseek/deepseek-v4-flash-0423:thinking":{"id":"deepseek/deepseek-v4-flash-0423:thinking","name":"DeepSeek V4 Flash 0423 (Thinking)","description":"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash-0423"},"deepseek/deepseek-v4-pro:thinking":{"id":"deepseek/deepseek-v4-pro:thinking","name":"DeepSeek V4 Pro (Thinking)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-pro-0813:thinking":{"id":"deepseek/deepseek-v4-pro-0813:thinking","name":"DeepSeek V4 Pro 0813 Thinking","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.5,"cache_read":0.04},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-flash-0731:thinking":{"id":"deepseek/deepseek-v4-flash-0731:thinking","name":"DeepSeek V4 Flash 0731 (Thinking)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.05,"output":0.16,"cache_read":0.013},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash-latest":{"id":"deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Compatibility alias that routes to the newest dated DeepSeek V4 Flash release. Currently routes to DeepSeek V4 Flash 0731. ⚠️ This route goes directly to DeepSeek, so privacy and logging guarantees are limited.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.05,"output":0.16,"cache_read":0.013}},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":163000,"input":163000,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"baseten/Kimi-K2-Instruct-FP4":{"id":"baseten/Kimi-K2-Instruct-FP4","name":"Kimi K2 0711 Instruct FP4","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":131072},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"unbiased/pareto-26.10-preview":{"id":"unbiased/pareto-26.10-preview","name":"Pareto 26.10 Preview","description":"Pareto 26.10 Preview is Unbiased AI's multimodal composite model for research, coding, and agentic workflows. It accepts text and images, supports tool calling, and provides a 1M-token context window with up to 131K output tokens.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03}},"unbiased/pareto":{"id":"unbiased/pareto","name":"Pareto","description":"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"canonical_model_id":"unbiased/pareto"},"lightonai/LightOnOCR-2-1B":{"id":"lightonai/LightOnOCR-2-1B","name":"LightOnOCR 2","description":"LightOnOCR 2 hosted by IONOS in Berlin, Germany. Zero data retention.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.1785,"output":0.3465}},"abacusai/Dracarys-72B-Instruct":{"id":"abacusai/Dracarys-72B-Instruct","name":"Llama 3.1 70B Dracarys 2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"shisa-ai/shisa-v2.1-llama3.3-70b":{"id":"shisa-ai/shisa-v2.1-llama3.3-70b","name":"Shisa V2.1 Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"shisa-ai/shisa-v2-llama3.3-70b":{"id":"shisa-ai/shisa-v2-llama3.3-70b","name":"Shisa V2 Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}},"Steelskull/L3.3-MS-Nevoria-70b":{"id":"Steelskull/L3.3-MS-Nevoria-70b","name":"Steelskull Nevoria 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Steelskull/L3.3-Cu-Mai-R1-70b":{"id":"Steelskull/L3.3-Cu-Mai-R1-70b","name":"Llama 3.3 70B Cu Mai","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Steelskull/L3.3-Nevoria-R1-70b":{"id":"Steelskull/L3.3-Nevoria-R1-70b","name":"Steelskull Nevoria R1 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Steelskull/L3.3-Electra-R1-70b":{"id":"Steelskull/L3.3-Electra-R1-70b","name":"Steelskull Electra R1 70b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.69989,"output":0.69989,"cache_read":0.349945}},"tencent/hy3":{"id":"tencent/hy3","name":"Tencent Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":128000},"cost":{"input":0.066,"output":0.26,"cache_read":0.029},"canonical_model_id":"tencent/hy3"},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Tencent Hy4 Preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003}},"anthracite-org/magnum-v2-72b":{"id":"anthracite-org/magnum-v2-72b","name":"Magnum V2 72B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":2.006,"output":2.992,"cache_read":1.003}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":328000,"input":328000,"output":65536},"cost":{"input":0.085,"output":0.46,"cache_read":0.0425}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.05,"output":0.23,"cache_read":0.025},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama 3.1 8b Instruct","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.0544,"output":0.085,"cache_read":0.0272},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Llama 3.2 3b Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-09-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.0306,"output":0.0493,"cache_read":0.0153}},"LLM360/K2-Think":{"id":"LLM360/K2-Think","name":"K2-Think","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.17,"output":0.68,"cache_read":0.085}},"deepcogito/cogito-v1-preview-qwen-32B":{"id":"deepcogito/cogito-v1-preview-qwen-32B","name":"Cogito v1 Preview Qwen 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-10","last_updated":"2025-05-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":1.8,"output":1.8,"cache_read":0.9}},"GalrionSoftworks/MN-LooseCannon-12B-v1":{"id":"GalrionSoftworks/MN-LooseCannon-12B-v1","name":"MN-LooseCannon-12B-v1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"meganova-ai/manta-mini-1.0":{"id":"meganova-ai/manta-mini-1.0","name":"Manta Mini 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.02,"output":0.16,"cache_read":0.01}},"meganova-ai/manta-flash-1.0":{"id":"meganova-ai/manta-flash-1.0","name":"Manta Flash 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":16384},"cost":{"input":0.02,"output":0.16,"cache_read":0.01}},"meganova-ai/manta-pro-1.0":{"id":"meganova-ai/manta-pro-1.0","name":"Manta Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-20","last_updated":"2025-12-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"input":65536,"output":32768},"cost":{"input":0.06,"output":0.5,"cache_read":0.03}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.15,"output":1.5,"cache_read":0.075}},"perceptron/perceptron-mk1.5":{"id":"perceptron/perceptron-mk1.5","name":"Perceptron Mk1.5","description":"Perceptron Mk1.5 is a multimodal reasoning model for visual analysis and physical agents. It accepts text, images, video, and audio, supports tool calling and structured output, and can return spatial annotations such as points, boxes, polygons, and tracks.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":36864,"input":36864,"output":8192},"cost":{"input":0.15,"output":1.5}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":24000},"cost":{"input":0.3,"output":0.9,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-4.6v"},"z-ai/glm-4.6-original":{"id":"z-ai/glm-4.6-original","name":"GLM 4.6 Original","description":"GLM-4.6, Zhipu's flagship text model with 256K context window and advanced reasoning capabilities. Direct via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175}},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5.3-flash-apex-abliterated":{"id":"z-ai/glm-5.3-flash-apex-abliterated","name":"Apex Flash 1 Abliterated","description":"Apex Flash 1 Abliterated is an experimental derivative of Cantina Security and Yeta's Apex Flash 1 with modified refusal behavior.","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5.3-flash-uncensored":{"id":"z-ai/glm-5.3-flash-uncensored","name":"GLM 5.3 Flash Uncensored","description":"GLM 5.3 Flash Uncensored is an uncensored fine-tune of the efficient 320B mixture-of-experts reasoning model, built for unrestricted chat, creative writing, coding, agentic work, tool use, and long-context tasks.","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.07}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-4.7-flash:thinking":{"id":"z-ai/glm-4.7-flash:thinking","name":"GLM 4.7 Flash Thinking","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035},"canonical_model_id":"zhipuai/glm-4.7-flash"},"z-ai/glm-5.3-flash-apex":{"id":"z-ai/glm-5.3-flash-apex","name":"Apex Flash 1","description":"Apex Flash 1 is Cantina Security and Yeta's cybersecurity-focused post-train of GLM 5.3 Flash for code investigation and tool use.","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075}},"z-ai/glm-5-original:thinking":{"id":"z-ai/glm-5-original:thinking","name":"GLM 5 Original Thinking","description":"GLM-5 original with extended thinking capabilities for complex reasoning.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5.3:thinking":{"id":"z-ai/glm-5.3:thinking","name":"GLM 5.3 Thinking","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5.3"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.5,"output":2.55,"cache_read":0.13},"canonical_model_id":"zhipuai/glm-5"},"z-ai/GLM-4.5-Air":{"id":"z-ai/GLM-4.5-Air","name":"GLM 4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-4.5v"},"z-ai/GLM-4.6-turbo:thinking":{"id":"z-ai/GLM-4.6-turbo:thinking","name":"GLM 4.6 Turbo (Thinking)","description":"GLM 4.6 Turbo with thinking mode enabled for enhanced reasoning; shows internal reasoning and supports long context.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5}},"z-ai/glm-4.7:thinking":{"id":"z-ai/glm-4.7:thinking","name":"GLM 4.7 Thinking","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.4004,"output":1.9292,"cache_read":0.08008},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.1:thinking":{"id":"z-ai/glm-5.1:thinking","name":"GLM 5.1 Thinking","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.75,"output":2.6,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-4.6v-original":{"id":"z-ai/glm-4.6v-original","name":"GLM 4.6V Original","description":"GLM-4.6V scales its context window to 128k tokens in training, and achieves SoTA performance in visual understanding among models of similar parameter scales. Integrates native Function Calling capabilities, bridging 'visual perception' and 'executable action' for multimodal agents. Direct via Z-AI (Zhipu).","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":24000},"cost":{"input":0.6,"output":0.9,"cache_read":0.3}},"z-ai/glm-5v-turbo:thinking":{"id":"z-ai/glm-5v-turbo:thinking","name":"GLM 5V Turbo Thinking","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/GLM-4.6-turbo":{"id":"z-ai/GLM-4.6-turbo","name":"GLM 4.6 Turbo","description":"Fast variant of GLM 4.6 for general chat, coding, and analysis with improved latency and strong reasoning.","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.5}},"z-ai/GLM-4.5-Air:thinking":{"id":"z-ai/GLM-4.5-Air:thinking","name":"GLM 4.5 Air (Thinking)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":98304},"cost":{"input":0.12,"output":0.8,"cache_read":0.06},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-5.2:thinking":{"id":"z-ai/glm-5.2:thinking","name":"GLM 5.2 Thinking","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035},"canonical_model_id":"zhipuai/glm-4.7-flash"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.4004,"output":1.9292,"cache_read":0.08008},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.3-uncensored":{"id":"z-ai/glm-5.3-uncensored","name":"GLM 5.3 Uncensored","description":"An experimental uncensored version of the full GLM 5.3 reasoning model for chat, creative writing, coding, and tool use. It may show unusual behavior or inconsistent response quality.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-26","last_updated":"2026-09-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.25,"output":2.25,"cache_read":0.3}},"z-ai/glm-5:thinking":{"id":"z-ai/glm-5:thinking","name":"GLM 5 Thinking","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":0.5,"output":2.55,"cache_read":0.13},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.42,"output":1.32,"cache_read":0.078},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/GLM-4.5:thinking":{"id":"z-ai/GLM-4.5:thinking","name":"GLM 4.5 (Thinking)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.3,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.75,"output":2.6,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-4.6:thinking":{"id":"z-ai/glm-4.6:thinking","name":"GLM 4.6 Thinking","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.35,"output":1.4,"cache_read":0.175},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-4.5v:thinking":{"id":"z-ai/glm-4.5v:thinking","name":"GLM 4.5V Thinking","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-4.5v"},"z-ai/glm-4.7-original":{"id":"z-ai/glm-4.7-original","name":"GLM 4.7 Original","description":"GLM-4.7 is a next-gen GLM series text model with stronger reasoning, long-context chat, and reliable tool use. Routed directly via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-5-original":{"id":"z-ai/glm-5-original","name":"GLM 5 Original","description":"GLM-5 is Zhipu's latest flagship model with advanced reasoning and instruction following. Routed directly via Z-AI (Zhipu).","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"input":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-4.7-original:thinking":{"id":"z-ai/glm-4.7-original:thinking","name":"GLM 4.7 Original Thinking","description":"GLM-4.7 original with extended thinking capabilities for complex reasoning.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65535},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5.3"},"z-ai/glm-5.3-flash-cybersecurity":{"id":"z-ai/glm-5.3-flash-cybersecurity","name":"GLM 5.3 Flash Cybersecurity","description":"GLM 5.3 Flash Cybersecurity is a cybersecurity-focused variant based on the uncensored model, with provider moderation for illegal activities. It supports always-on reasoning, image understanding, tool calling, and a 1,048,576-token context window.","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-19","last_updated":"2026-09-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":32768},"cost":{"input":0.15,"output":0.5,"cache_read":0.075}},"z-ai/glm-latest":{"id":"z-ai/glm-latest","name":"GLM Latest","description":"Compatibility alias that routes to the newest thinking GLM model. Currently routes to GLM 5.2 Thinking.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.6,"output":1.1,"cache_read":0.2}},"inference-net/schematron-v2-small":{"id":"inference-net/schematron-v2-small","name":"Schematron V2 Small","description":"Inference.net's 3B-parameter HTML-to-JSON extraction model, focused on accuracy for complex schemas and long web pages. It turns HTML into typed, structured data for web scraping and product catalog ingestion, with a 128K-token context window. Supply HTML in the user message and extraction instructions in a JSON schema via response_format; it does not follow ordinary chat or system prompts.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.025}},"inference-net/schematron-v2-turbo":{"id":"inference-net/schematron-v2-turbo","name":"Schematron V2 Turbo","description":"Inference.net's 3B-parameter HTML-to-JSON extraction model, optimized for throughput and low cost on high-volume workloads. It turns HTML into typed, structured data for web scraping and product catalog ingestion, with a 128K-token context window. Supply HTML in the user message and extraction instructions in a JSON schema via response_format; it does not follow ordinary chat or system prompts.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.015}},"thinkingmachines/inkling:thinking":{"id":"thinkingmachines/inkling:thinking","name":"Inkling Thinking","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"input":1048000,"output":32768},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"input":1048000,"output":32768},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"thinkingmachines/Inkling-Small:thinking":{"id":"thinkingmachines/Inkling-Small:thinking","name":"Inkling Small Thinking","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor (Data Used for Training)","description":"A much cheaper opt-in version of Muse Spark 1.2 with the same multimodal coding and agentic capabilities. Prompts and outputs sent to this Contributor model may be used by Meta for training and to improve its products; use the standard Muse Spark 1.2 model if you do not want your data used for training.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Meta's Muse Spark 1.3 Contributor is a frontier multimodal reasoning model for long-horizon coding and agentic workflows, with strong gains in computer use, browsing, professional tool use, codebase understanding, and million-token retrieval. It accepts text, images, audio, video, and files, supports tool calling and structured output, and always reasons before answering. Prompts and outputs may be used by Meta for training and to improve its products.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"mlabonne/NeuralDaredevil-8B-abliterated":{"id":"mlabonne/NeuralDaredevil-8B-abliterated","name":"Neural Daredevil 8B abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.44,"output":0.44,"cache_read":0.22}},"NeverSleep/Lumimaid-v0.2-70B":{"id":"NeverSleep/Lumimaid-v0.2-70B","name":"Lumimaid v0.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":1,"output":1.5,"cache_read":0.5}},"nanogpt/coding-router:low":{"id":"nanogpt/coding-router:low","name":"Coding Router Low","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"nanogpt/coding-router:medium":{"id":"nanogpt/coding-router:medium","name":"Coding Router Medium","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"nanogpt/coding-router":{"id":"nanogpt/coding-router","name":"Coding Router","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"nanogpt/coding-router:max":{"id":"nanogpt/coding-router:max","name":"Coding Router Max","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"nanogpt/coding-router:high":{"id":"nanogpt/coding-router:high","name":"Coding Router High","description":"Automatic model router for matching prompts to suitable backends and budgets","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":1.1,"output":2.2,"cache_read":0.11}},"LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{"id":"LatitudeGames/Wayfarer-Large-70B-Llama-3.3","name":"Llama 3.3 70B Wayfarer","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"VongolaChouko/Starcannon-Unleashed-12B-v1.0":{"id":"VongolaChouko/Starcannon-Unleashed-12B-v1.0","name":"Mistral Nemo Starcannon 12b v1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":80000},"cost":{"input":0.25,"output":0.9,"cache_read":0.125},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"input":2000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":1}},"x-ai/grok-latest":{"id":"x-ai/grok-latest","name":"Grok Latest","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":1.6,"output":4.8,"cache_read":0.4}},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":500000},"cost":{"input":1.6,"output":4.8,"cache_read":0.4},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"input":2000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":1}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{"id":"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B","name":"Nemotron Tenyxchat Storybreaker 70b","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{"id":"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B","name":"Llama 3.05 Storybreaker Ministral 70b","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"heabsy/cyberheabsy":{"id":"heabsy/cyberheabsy","name":"CyberHeabsy","description":"A low-refusal text model for authorized security research, roleplay, and creative writing. It preserves tool calling after refusal removal, supports optional reasoning, and has a 1M-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-27","last_updated":"2026-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.5,"output":4.5,"cache_read":0.275}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006},"canonical_model_id":"upstage/solar-pro4"},"upstage/solar-mini4:thinking":{"id":"upstage/solar-mini4:thinking","name":"Solar Mini 4 Thinking","description":"Solar Mini 4 with reasoning enabled for agentic tasks and harder analysis across a 524K-token context window.","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005}},"upstage/solar-pro4:thinking":{"id":"upstage/solar-pro4:thinking","name":"Solar Pro 4 Thinking","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.03,"output":0.12,"cache_read":0.006},"canonical_model_id":"upstage/solar-pro4"},"upstage/solar-mini4":{"id":"upstage/solar-mini4","name":"Solar Mini 4","description":"Upstage's compact 35B-parameter mixture-of-experts model with 3B active parameters and a 524K context window. Built for fast, cost-efficient agentic tasks, with strong Korean and English support.","family":"solar","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005}},"bytedance/doubao-seed-2.1-turbo":{"id":"bytedance/doubao-seed-2.1-turbo","name":"Doubao Seed 2.1 Turbo","description":"Fast, lower-cost model in the Doubao Seed 2.1 family for everyday chat, coding assistance, document work, and high-throughput productivity tasks. Supports a 256k context window and up to 128k output tokens. Note: privacy and logging guarantees may be limited.","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":0.5,"output":2.5,"cache_read":0.25}},"bytedance/doubao-seed-2.1-pro":{"id":"bytedance/doubao-seed-2.1-pro","name":"Doubao Seed 2.1 Pro","description":"Higher-capability model in the Doubao Seed 2.1 family for agentic coding, long-context analysis, complex instruction following, and productivity workflows. Supports a 256k context window and up to 128k output tokens. Note: privacy and logging guarantees may be limited.","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":128000},"cost":{"input":1,"output":5,"cache_read":0.5}},"bytedance/doubao-seed-character":{"id":"bytedance/doubao-seed-character","name":"Doubao Seed Character","description":"ByteDance's character-focused Doubao Seed model for roleplay, persona consistency, dialogue, and creative character interactions. It supports text and image input with a 128k context window. Requests route through ZenMux to ByteDance; ZenMux does not publish a model-API zero-retention or training guarantee, so avoid sensitive data.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"release_date":"2026-07-18","last_updated":"2026-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.1179,"output":0.2947,"cache_read":0.0236,"cache_write":0.0025}},"liquid/lfm-2.5-2.6b":{"id":"liquid/lfm-2.5-2.6b","name":"LFM2.5 2.6B","description":"Liquid AI's compact 2.6B reasoning model for agent workflows, data extraction, RAG, and long-context processing. It supports tool calling and structured output, but Liquid advises against using it for agentic coding. Warning: prompts and responses may be logged and used for model training or service improvement; do not send sensitive data.","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-flash-latest"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.1,"output":0.45,"cache_read":0.05},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-3.1-pro-preview-low":{"id":"google/gemini-3.1-pro-preview-low","name":"Gemini 3.1 Pro (Preview Low)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-21","last_updated":"2026-02-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.5-flash-thinking":{"id":"google/gemini-3.5-flash-thinking","name":"Gemini 3.5 Flash Thinking","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemma-4-26b-a4b-it:thinking":{"id":"google/gemma-4-26b-a4b-it:thinking","name":"Gemma 4 26B A4B Thinking","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.13,"output":0.4,"cache_read":0.065},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"canonical_model_id":"google/gemini-flash-lite-latest"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.6-flash"},"google/diffusiongemma":{"id":"google/diffusiongemma","name":"DiffusionGemma","description":"DiffusionGemma is a high-speed diffusion-based version of Gemma 4 26B A4B. It supports optional reasoning and a 262,144-token context window.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","xhigh"]}],"tool_call":false,"structured_output":false,"release_date":"2026-09-19","last_updated":"2026-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.025}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.12,"output":0.38,"cache_read":0.06},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemma-4-31b-it:thinking":{"id":"google/gemma-4-31b-it:thinking","name":"Gemma 4 31B Thinking","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.1,"output":0.35,"cache_read":0.05},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.1-pro-preview-high":{"id":"google/gemini-3.1-pro-preview-high","name":"Gemini 3.1 Pro (Preview High)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-02-21","last_updated":"2026-02-21","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemma4-31b-splituntied":{"id":"google/gemma4-31b-splituntied","name":"Gemma 4 31B Split-Untied","description":"Blazed-Forge's Split-Untied is a text-only Gemma 4 31B community finetune with an untied BF16 output head, built for creative writing, roleplay, expressive dialogue, and tool use.","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemma-4-26b-a4b-it-cybersecurity":{"id":"google/gemma-4-26b-a4b-it-cybersecurity","name":"Gemma 4 26B A4B Cybersecurity","description":"Gemma 4 26B A4B Cybersecurity is a cybersecurity-focused variant based on the uncensored model, with provider moderation for illegal activities. It supports optional reasoning, image understanding, tool calling, and a 262,144-token context window.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-19","last_updated":"2026-09-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1056,"output":0.3344,"cache_read":0.0528}},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro (Preview Custom Tools)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-3-flash-preview-thinking":{"id":"google/gemini-3-flash-preview-thinking","name":"Gemini 3 Flash Thinking","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.1-flash-lite"},"TEE/gemma-4-31b-it":{"id":"TEE/gemma-4-31b-it","name":"Gemma 4 31B IT TEE","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.15,"output":0.46,"cache_read":0.075},"canonical_model_id":"google/gemma-4-31b-it"},"TEE/qwen3.8-27b":{"id":"TEE/qwen3.8-27b","name":"Qwen3.8 27B TEE","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3.8-27b"},"TEE/nemotron-3.5-lightning":{"id":"TEE/nemotron-3.5-lightning","name":"Nvidia Nemotron 3.5 Lightning TEE","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.08,"output":0.2,"cache_read":0.04},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"TEE/glm-5.3-flash":{"id":"TEE/glm-5.3-flash","name":"GLM 5.3 Flash TEE","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"TEE/qwen3.5-27b":{"id":"TEE/qwen3.5-27b","name":"Qwen3.5 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.3,"output":2.4,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3.5-27b"},"TEE/muse-glimmer-30b":{"id":"TEE/muse-glimmer-30b","name":"Muse Glimmer 30B TEE","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"TEE/kimi-k3":{"id":"TEE/kimi-k3","name":"Kimi K3 TEE","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65535},"cost":{"input":3,"output":15,"cache_read":1.5},"canonical_model_id":"moonshotai/kimi-k3"},"TEE/deepseek-v4.1-flash":{"id":"TEE/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash TEE","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":384000},"cost":{"input":0.65,"output":1.45,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"TEE/llama3-3-70b":{"id":"TEE/llama3-3-70b","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-03","last_updated":"2025-07-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":1.75,"output":2.75,"cache_read":1.75}},"TEE/kimi-k2.6":{"id":"TEE/kimi-k2.6","name":"Kimi K2.6 TEE","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":1.5,"output":5.25,"cache_read":0.375},"canonical_model_id":"moonshotai/kimi-k2.6"},"TEE/gemma-4-26b-a4b-uncensored":{"id":"TEE/gemma-4-26b-a4b-uncensored","name":"Gemma 4 26B A4B Uncensored TEE","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-23","last_updated":"2026-05-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":65536},"cost":{"input":0.15,"output":0.7,"cache_read":0.075}},"TEE/gemma4-31b:thinking":{"id":"TEE/gemma4-31b:thinking","name":"Gemma 4 31B Thinking TEE","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-05-02","last_updated":"2026-05-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4}},"TEE/gemma4-31b":{"id":"TEE/gemma4-31b","name":"Gemma 4 31B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-04","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":131072},"cost":{"input":0.4,"output":1,"cache_read":0.4}},"TEE/qwen3.6-35b-a3b":{"id":"TEE/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B TEE","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.2,"output":1.27,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"TEE/glm-5.2:thinking":{"id":"TEE/glm-5.2:thinking","name":"GLM 5.2 Thinking TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.7},"canonical_model_id":"zhipuai/glm-5.2"},"TEE/qwen3.5-397b-a17b":{"id":"TEE/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B TEE","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.55,"output":3.5,"cache_read":0.275},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"TEE/glm-5.2":{"id":"TEE/glm-5.2","name":"GLM 5.2 TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.7},"canonical_model_id":"zhipuai/glm-5.2"},"TEE/glm-5.1-thinking":{"id":"TEE/glm-5.1-thinking","name":"GLM 5.1 Thinking TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":202752,"output":65535},"cost":{"input":1.5,"output":5.25,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.1"},"TEE/glm-5.1":{"id":"TEE/glm-5.1","name":"GLM 5.1 TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":202752,"output":65535},"cost":{"input":1.5,"output":5.25,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.1"},"TEE/qwen2.5-vl-72b-instruct":{"id":"TEE/qwen2.5-vl-72b-instruct","name":"Qwen2.5 VL 72B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"TEE/qwen3.6-27b":{"id":"TEE/qwen3.6-27b","name":"Qwen3.6 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.32,"output":2.7,"cache_read":0.16},"canonical_model_id":"alibaba/qwen3.6-27b"},"TEE/deepseek-v3.2":{"id":"TEE/deepseek-v3.2","name":"DeepSeek V3.2 TEE","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"input":164000,"output":65536},"cost":{"input":0.5,"output":1,"cache_read":0.25},"canonical_model_id":"deepseek/deepseek-v3.2"},"TEE/gpt-oss-120b":{"id":"TEE/gpt-oss-120b","name":"GPT-OSS 120B TEE","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":2,"output":2,"cache_read":2},"canonical_model_id":"openai/gpt-oss-120b"},"TEE/glm-5.3":{"id":"TEE/glm-5.3","name":"GLM 5.3 TEE","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"TEE/kimi-k2.7-code":{"id":"TEE/kimi-k2.7-code","name":"Kimi K2.7 Code TEE","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2","name":"EVA-Qwen2.5-72B-v0.2","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995}},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0","name":"EVA Llama 3.33 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003}},"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{"id":"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2","name":"EVA-Qwen2.5-32B-v0.2","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.799,"output":0.799,"cache_read":0.3995}},"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{"id":"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1","name":"EVA-LLaMA-3.33-70B-v0.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":2.006,"output":2.006,"cache_read":1.003}},"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{"id":"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16","name":"Llama 3.1 70B Celeste v0.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"MarinaraSpaghetti/NemoMix-Unleashed-12B":{"id":"MarinaraSpaghetti/NemoMix-Unleashed-12B","name":"NemoMix 12B Unleashed","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"pamanseau/OpenReasoning-Nemotron-32B":{"id":"pamanseau/OpenReasoning-Nemotron-32B","name":"OpenReasoning Nemotron 32B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated","name":"DeepSeek R1 Qwen Abliterated","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":1.4,"output":1.4,"cache_read":0.7}},"huihui-ai/Qwen2.5-32B-Instruct-abliterated":{"id":"huihui-ai/Qwen2.5-32B-Instruct-abliterated","name":"Qwen 2.5 32B Abliterated","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-06","last_updated":"2025-01-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"huihui-ai/Llama-3.3-70B-Instruct-abliterated":{"id":"huihui-ai/Llama-3.3-70B-Instruct-abliterated","name":"Llama 3.3 70B Instruct abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{"id":"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated","name":"DeepSeek R1 Llama 70B Abliterated","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"Gryphe/MythoMax-L2-13b":{"id":"Gryphe/MythoMax-L2-13b","name":"MythoMax 13B","description":"Llama 2 merge combining MythoLogic and Huginn for creative writing and roleplay","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2023-08-10","last_updated":"2023-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"input":4096,"output":3686},"cost":{"input":0.1003,"output":0.1003,"cache_read":0.05015},"canonical_model_id":"gryphe/mythomax-l2-13b"},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"IBM Granite 4.2 8B is an Apache 2.0-licensed dense model with native step-by-step reasoning and specialized training for agentic work. It can plan before acting, sequence tools, navigate codebases, work in terminals, and verify results across coding, search, mathematics, science, and complex instruction-following tasks.","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.1,"output":0.15,"cache_read":0.05}},"TheDrummer/skyfall-36b-v2":{"id":"TheDrummer/skyfall-36b-v2","name":"TheDrummer Skyfall 36B V2","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"TheDrummer/Artemis-v1.1":{"id":"TheDrummer/Artemis-v1.1","name":"TheDrummer/Artemis v1.1","description":"TheDrummer's Artemis v1.1 is a Gemma 4 31B fine-tune for creative writing, expressive dialogue, and roleplay, with optional thinking and a 262K context window.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-06","last_updated":"2026-09-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.45,"cache_read":0.05}},"TheDrummer/Anubis-70B-v1":{"id":"TheDrummer/Anubis-70B-v1","name":"Anubis 70B v1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155}},"TheDrummer/Anubis-70B-v1.1":{"id":"TheDrummer/Anubis-70B-v1.1","name":"Anubis 70B v1.1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":16384},"cost":{"input":0.31,"output":0.31,"cache_read":0.155}},"TheDrummer/Cydonia-24B-v4.3":{"id":"TheDrummer/Cydonia-24B-v4.3","name":"The Drummer Cydonia 24B v4.3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-25","last_updated":"2025-12-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.12,"output":0.15,"cache_read":0.06}},"TheDrummer/Magidonia-24B-v4.3":{"id":"TheDrummer/Magidonia-24B-v4.3","name":"The Drummer Magidonia 24B v4.3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-25","last_updated":"2025-12-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"TheDrummer/Cydonia-24B-v4.1":{"id":"TheDrummer/Cydonia-24B-v4.1","name":"The Drummer Cydonia 24B v4.1","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":117964},"cost":{"input":0.35,"output":0.55,"cache_read":0.16}},"TheDrummer/UnslopNemo-12B-v4.1":{"id":"TheDrummer/UnslopNemo-12B-v4.1","name":"UnslopNemo 12b v4","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":26214},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"TheDrummer/Cydonia-24B-v2":{"id":"TheDrummer/Cydonia-24B-v2","name":"The Drummer Cydonia 24B v2","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"TheDrummer/Rocinante-12B-v1.1":{"id":"TheDrummer/Rocinante-12B-v1.1","name":"Rocinante 12b","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.408,"output":0.595,"cache_read":0.204}},"TheDrummer/Cydonia-24B-v4":{"id":"TheDrummer/Cydonia-24B-v4","name":"The Drummer Cydonia 24B v4","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.2006,"output":0.2414,"cache_read":0.1003}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1}},"deepseek-ai/deepseek-v3.2-exp-thinking":{"id":"deepseek-ai/deepseek-v3.2-exp-thinking","name":"DeepSeek V3.2 Exp Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125}},"deepseek-ai/deepseek-v3.2-exp":{"id":"deepseek-ai/deepseek-v3.2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"input":163840,"output":65536},"cost":{"input":0.28,"output":0.42,"cache_read":0.14}},"deepseek-ai/DeepSeek-V3.1:thinking":{"id":"deepseek-ai/DeepSeek-V3.1:thinking","name":"DeepSeek V3.1 Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.7,"cache_read":0.1}},"deepseek-ai/DeepSeek-V3.1-Terminus:thinking":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus:thinking","name":"DeepSeek V3.1 Terminus (Thinking)","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.25,"output":0.7,"cache_read":0.125}},"stepfun-ai/step-3.5-flash-2603":{"id":"stepfun-ai/step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"stepfun/step-3.5-flash-2603"},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"stepfun/step-3.5-flash"},"MiniMaxAI/MiniMax-M1-80k":{"id":"MiniMaxAI/MiniMax-M1-80k","name":"MiniMax M1 80K","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-01-08","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":0.6052,"output":2.4225,"cache_read":0.3026}},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Ministral 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.075}},"mistralai/mistral-large-4":{"id":"mistralai/mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"input":524288,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"canonical_model_id":"mistral/mistral-large-4"},"mistralai/mistral-small-4-119b-2603:thinking":{"id":"mistralai/mistral-small-4-119b-2603:thinking","name":"Mistral Small 4 119B Thinking","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/mistral-medium-3.5":{"id":"mistralai/mistral-medium-3.5","name":"Mistral Medium 3.5","description":"Mistral Medium 3.5 is a 128B dense open-weights flagship model for instruction-following, reasoning, coding, long-horizon agentic work, tool use, structured output, and multimodal prompts. It supports a 256k context window and configurable reasoning effort.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75}},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral Small 24B","description":"Mistral Small 24B hosted by IONOS in Berlin, Germany. Zero data retention.","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.1155,"output":0.3465}},"mistralai/mixtral-8x22b-instruct-v0.1":{"id":"mistralai/mixtral-8x22b-instruct-v0.1","name":"Mixtral 8x22B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":26214},"cost":{"input":0.1989,"output":0.595,"cache_read":0.09945}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral Small 3.2 24B (2506)","description":"The latest iteration of Mistral Small, version 3.2 (2506) brings enhanced performance and capabilities. With 24 billion parameters, this model delivers state-of-the-art results across text generation tasks with improved efficiency.","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.2,"output":0.4,"cache_read":0.1}},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"Mistral Small 4 119B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large 2411","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":102400},"cost":{"input":2.006,"output":6.001,"cache_read":0.2}},"mistralai/mistral-medium-3.5:thinking":{"id":"mistralai/mistral-medium-3.5:thinking","name":"Mistral Medium 3.5 Thinking","description":"Mistral Medium 3.5 with reasoning enabled by default (reasoning_effort=high), for complex coding, agentic, and multi-step reasoning prompts.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.75}},"mistralai/devstral-small-2505":{"id":"mistralai/devstral-small-2505","name":"Mistral Devstral Small 2505","description":"OpenHands+Devstral is 100% local 100% open, and is SOTA for the category on SWE-Bench Verified: 46.8% accuracy.","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-08-02","last_updated":"2025-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.06,"output":0.06,"cache_read":0.03}},"mistralai/devstral-2-123b-instruct-2512":{"id":"mistralai/devstral-2-123b-instruct-2512","name":"Devstral 2 123B","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.4,"output":1.4,"cache_read":0.2}},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.4,"output":2,"cache_read":0.2}},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral Small 3.1 24B (2503)","description":"Building upon Mistral Small 3 (2501), Mistral Small 3.1 (2503) adds state-of-the-art vision understanding and enhances long context capabilities up to 128k tokens without compromising text performance. With 24 billion parameters, this model achieves top-tier capabilities in both text and vision tasks.","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":102400},"cost":{"input":0.1,"output":0.3,"cache_read":0.05}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.05}},"mistralai/mistral-nemo-instruct-2407":{"id":"mistralai/mistral-nemo-instruct-2407","name":"Mistral Nemo","description":"12B parameter model with multilingual support.","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.1003,"output":0.1207,"cache_read":0.05015}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Codestral 2508","description":"Mistral code model for low-latency completion, fill-in-the-middle, and code generation","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.15},"canonical_model_id":"mistral/codestral-2508"},"sakana/fugu-max":{"id":"sakana/fugu-max","name":"Fugu Max","description":"Sakana AI's cost-performance Fugu model uses learned multi-agent orchestration to route tasks across expert models for reasoning, coding, and tool use.","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":16384},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"sakana/fugu-ultra"},"sakana/fugu-ultra-v1.1":{"id":"sakana/fugu-ultra-v1.1","name":"Fugu Ultra v1.1","description":"Sakana AI's upgraded Fugu Ultra release with stronger coding, agentic task execution, and advanced reasoning through dynamic orchestration of frontier models.","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":16384},"cost":{"input":5,"output":30,"cache_read":0.5}},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Hybrid-linear MoE reasoning model with 124B total and 5.1B active parameters for efficient agents","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash"},"inclusionai/ling-3.1-flash":{"id":"inclusionai/ling-3.1-flash","name":"Ling 3.1 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.1-flash"},"inclusionai/ling-3.0-flash-vl":{"id":"inclusionai/ling-3.0-flash-vl","name":"Ling 3.0 Flash VL","description":"Native multimodal hybrid MoE model for image and video understanding, reasoning, and visual agents","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"canonical_model_id":"inclusionai/ling-3.0-flash-vl"},"inclusionai/ling-3.0-flash:thinking":{"id":"inclusionai/ling-3.0-flash:thinking","name":"Ling 3.0 Flash Thinking","description":"Hybrid-linear MoE reasoning model with 124B total and 5.1B active parameters for efficient agents","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.2},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code High-Speed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":1.9,"output":8,"cache_read":0.32},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.5,"output":2.6,"cache_read":0.125},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.5:thinking":{"id":"moonshotai/kimi-k2.5:thinking","name":"Kimi K2.5 Thinking","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.3,"output":1.9,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.3,"output":1.9,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Non-thinking Kimi K2 MoE instruction model for coding and tool-using agents","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2},"canonical_model_id":"moonshotai/kimi-k2-instruct"},"moonshotai/kimi-k2.6:thinking":{"id":"moonshotai/kimi-k2.6:thinking","name":"Kimi K2.6 Thinking","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.5,"output":2.6,"cache_read":0.125},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2-instruct-0711":{"id":"moonshotai/kimi-k2-instruct-0711","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"moonshotai/kimi-latest":{"id":"moonshotai/kimi-latest","name":"Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":943718},"cost":{"input":2,"output":10,"cache_read":0.2}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":100352},"cost":{"input":0.4,"output":1.8,"cache_read":0.2}},"THUDM/GLM-Z1-9B-0414":{"id":"THUDM/GLM-Z1-9B-0414","name":"GLM Z1 9B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm-z","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"THUDM/GLM-4-9B-0414":{"id":"THUDM/GLM-4-9B-0414","name":"GLM 4 9B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8000},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"THUDM/GLM-4-32B-0414":{"id":"THUDM/GLM-4-32B-0414","name":"GLM 4 32B 0414","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.2,"output":0.2,"cache_read":0.1}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nvidia Nemotron 3 Nano 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":235929},"cost":{"input":0.17,"output":0.68,"cache_read":0.085},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nvidia Nemotron 3.5 Lightning","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/Llama-3.3-Nemotron-Super-49B-v1":{"id":"nvidia/Llama-3.3-Nemotron-Super-49B-v1","name":"Nvidia Nemotron Super 49B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.15,"output":0.15,"cache_read":0.075},"canonical_model_id":"nvidia/llama-3.3-nemotron-super-49b-v1"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nvidia Nemotron 3 Super 120B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nvidia Nemotron 3 Ultra 550B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-super-120b-a12b:thinking":{"id":"nvidia/nemotron-3-super-120b-a12b:thinking","name":"Nvidia Nemotron 3 Super 120B Thinking","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.05,"output":0.25,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3-ultra-550b-a55b:thinking":{"id":"nvidia/nemotron-3-ultra-550b-a55b:thinking","name":"Nvidia Nemotron 3 Ultra 550B Thinking","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{"id":"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF","name":"Nvidia Nemotron 70b","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.357,"output":0.408,"cache_read":0.1785},"canonical_model_id":"nvidia/llama-3.1-nemotron-70b-instruct"},"nvidia/nemotron-3.5-lightning:thinking":{"id":"nvidia/nemotron-3.5-lightning:thinking","name":"Nvidia Nemotron 3.5 Lightning Thinking","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"xiaomi/mimo-v2.5-pro:thinking":{"id":"xiaomi/mimo-v2.5-pro:thinking","name":"MiMo V2.5 Pro Thinking","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo V2.6 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.6-flash-uncensored:thinking":{"id":"xiaomi/mimo-v2.6-flash-uncensored:thinking","name":"MiMo V2.6 Flash Uncensored Thinking","description":"MiMo V2.6 Flash Uncensored with maximum thinking enabled. Supports a 1M-token context window and tool calling.","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-26","last_updated":"2026-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.1995}},"xiaomi/mimo-v2.6-pro-ultraspeed":{"id":"xiaomi/mimo-v2.6-pro-ultraspeed","name":"MiMo V2.6 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"xiaomi/mimo-v2.5:thinking":{"id":"xiaomi/mimo-v2.5:thinking","name":"MiMo V2.5 Thinking","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo V2.6 Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"xiaomi/mimo-v2.6-flash-abliterated":{"id":"xiaomi/mimo-v2.6-flash-abliterated","name":"MiMo V2.6 Flash Abliterated","description":"A MiMo V2.6 Flash finetune with refusal-direction ablation, image input, a 1M-token context window, separate reasoning output, and tool calling.","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.275}},"xiaomi/mimo-v2.6-flash-uncensored":{"id":"xiaomi/mimo-v2.6-flash-uncensored","name":"MiMo V2.6 Flash Uncensored","description":"A text-only, lower-refusal MiMo V2.6 Flash finetune served by Heabsy with a 1M-token context window, separate reasoning output, and tool calling.","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"input":1048576,"output":65536},"cost":{"input":0.5,"output":1.5,"cache_read":0.1995}},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":6144,"input":6144,"output":4096},"cost":{"input":0.799,"output":1.207,"cache_read":0.3995}},"Salesforce/Llama-xLAM-2-70b-fc-r":{"id":"Salesforce/Llama-xLAM-2-70b-fc-r","name":"Llama-xLAM-2 70B fc-r","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-13","last_updated":"2025-04-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":2.5,"cache_read":1.25}},"minimax/minimax-latest":{"id":"minimax/minimax-latest","name":"MiniMax Latest","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.15},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.7-turbo":{"id":"minimax/minimax-m2.7-turbo","name":"MiniMax M2.7 Turbo","description":"Efficient MiniMax model for quick assistance, coding, and routine automation","family":"minimax-m2.7","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.3}},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax 01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2025-01-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000192,"input":1000192,"output":16384},"cost":{"input":0.1394,"output":1.122,"cache_read":0.0697}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax M2-her","description":"MiniMax M2 variant tuned for conversational and character-driven agent interactions","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65532,"input":65532,"output":2048},"cost":{"input":0.302,"output":1.207,"cache_read":0.151},"canonical_model_id":"minimax/MiniMax-M2-Her"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"input":204800,"output":131072},"cost":{"input":0.315,"output":1.26,"cache_read":0.1575},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3:thinking":{"id":"minimax/minimax-m3:thinking","name":"MiniMax M3 Thinking","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"input":512000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":131072},"cost":{"input":0.17,"output":1.53,"cache_read":0.085},"canonical_model_id":"minimax/MiniMax-M2"},"inflatebot/MN-12B-Mag-Mell-R1":{"id":"inflatebot/MN-12B-Mag-Mell-R1","name":"Mag Mell R1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"soob3123/GrayLine-Qwen3-8B":{"id":"soob3123/GrayLine-Qwen3-8B","name":"Grayline Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"soob3123/Veiled-Calla-12B":{"id":"soob3123/Veiled-Calla-12B","name":"Veiled Calla 12B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-04-13","last_updated":"2025-04-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"soob3123/amoral-gemma3-27B-v2":{"id":"soob3123/amoral-gemma3-27B-v2","name":"Amoral Gemma3 27B v2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-05-23","last_updated":"2025-05-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":8192},"cost":{"input":0.3,"output":0.3,"cache_read":0.15}},"stepfun/step-5-preview":{"id":"stepfun/step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"stepfun/step-3.7-flash:thinking":{"id":"stepfun/step-3.7-flash:thinking","name":"Step 3.7 Flash Thinking","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"Sao10K/L3.1-70B-Hanami-x1":{"id":"Sao10K/L3.1-70B-Hanami-x1","name":"Llama 3.1 70B Hanami","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Sao10K/L3.1-70B-Euryale-v2.2":{"id":"Sao10K/L3.1-70B-Euryale-v2.2","name":"Llama 3.1 70B Euryale","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":20480,"input":20480,"output":16384},"cost":{"input":0.306,"output":0.357,"cache_read":0.153}},"Sao10K/L3.3-70B-Euryale-v2.3":{"id":"Sao10K/L3.3-70B-Euryale-v2.3","name":"Llama 3.3 70B Euryale","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":20480,"input":20480,"output":16384},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"Sao10K/L3-8B-Stheno-v3.2":{"id":"Sao10K/L3-8B-Stheno-v3.2","name":"Sao10K Stheno 8b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-11-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003}},"inception/mercury-2.5-preview":{"id":"inception/mercury-2.5-preview","name":"Mercury 2.5 Preview","description":"Mercury 2.5 Preview is Inception's latest and most intelligent diffusion language model. Instead of generating tokens strictly one at a time, it produces and refines multiple tokens in parallel, reaching up to 1,107 tokens per second on standard GPUs. It delivers a 10+ point intelligence gain over Mercury 2, with tunable reasoning, parallel tool calls, schema-aligned JSON output, and a 260K context window. It is built for latency-sensitive production work such as search agents, voice pipelines, customer support, rapid coding iteration, and coding subagents.","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"input":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"ornith-ai/ornith-1.5-35b-a3b":{"id":"ornith-ai/ornith-1.5-35b-a3b","name":"Ornith 1.5 35B","description":"Ornith 1.5 35B A3B is an open-weight mixture-of-experts model for agentic coding, tool use, image understanding, and long-context work. This variant disables thinking for faster direct responses.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"ornith-ai/ornith-1.5-35b-a3b:thinking":{"id":"ornith-ai/ornith-1.5-35b-a3b:thinking","name":"Ornith 1.5 35B Thinking","description":"Ornith 1.5 35B A3B is an open-weight mixture-of-experts model for agentic coding, reasoning, tool use, image understanding, and long-context work. This variant enables thinking by default.","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"input":300000,"output":5120},"cost":{"input":0.0595,"output":0.238,"cache_read":0.02975}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon Nova 2 Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65535},"cost":{"input":0.51,"output":4.25,"cache_read":0.255}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"input":300000,"output":32000},"cost":{"input":0.799,"output":3.196,"cache_read":0.3995}},"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{"id":"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond","name":"MS3.2 24B Magnum Diamond","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"Llama 3.1 8b (uncensored)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":16384},"cost":{"input":0.8,"output":1.6,"cache_read":0.4}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion 3.0","description":"Aion 3.0 is a GLM-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5":{"id":"aion-labs/aion-3.5","name":"AionLabs: Aion 3.5","description":"A GLM-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5-mini":{"id":"aion-labs/aion-3.5-mini","name":"AionLabs: Aion 3.5 Mini","description":"A GLM-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion 3.0 Mini","description":"Aion 3.0 Mini is a DeepSeek-family collaborative generation model tuned for immersive roleplay and storytelling, with stronger narrative structure, tension, conflict, and nuanced mature themes.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen/qwen3.8-max:thinking":{"id":"qwen/qwen3.8-max:thinking","name":"Qwen3.8 Max Thinking","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0.3,"output":1.9,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1001536,"input":1001536,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"qwen/qwen3.8-27b-kiwen":{"id":"qwen/qwen3.8-27b-kiwen","name":"Qwen 3.8 27B Kiwen","description":"Qwen 3.8 27B Kiwen is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.27,"output":2.16,"cache_read":0.135},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3.5-omni-plus":{"id":"qwen/qwen3.5-omni-plus","name":"Qwen3.5 Omni Plus","description":"Qwen3.5 Omni Plus is Qwen's stronger general multimodal model. We verified live support for text prompts, images, audio files, and direct video URLs on Alibaba's chat-completions-compatible API. Alibaba describes Plus as a comprehensive evolution of Qwen3 Omni with support for over 10 hours of audio input.","family":"qwen3.5","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536}},"qwen/qwen3.7-flash:thinking":{"id":"qwen/qwen3.7-flash:thinking","name":"Qwen3.7 Flash Thinking","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen 3 235b A22B 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.13,"output":0.5,"cache_read":0.065},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen 2.5 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":1.5997,"output":6.392,"cache_read":0.79985},"canonical_model_id":"alibaba/qwen-max"},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.15,"output":0.65,"cache_read":0.075},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.250251,"output":0.80293,"cache_read":0.079764},"canonical_model_id":"alibaba/qwen3-coder-next"},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen 3 Coder 480B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"input":262000,"output":65536},"cost":{"input":0.13,"output":0.5,"cache_read":0.065}},"qwen/qwen3.5-35b-a3b:thinking":{"id":"qwen/qwen3.5-35b-a3b:thinking","name":"Qwen3.5 35B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.225,"output":1.8,"cache_read":0.1125},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen3.8-27b-swift":{"id":"qwen/qwen3.8-27b-swift","name":"Qwen 3.8 27B Swift","description":"Qwen 3.8 27B Swift is a finetune for fast responses, served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3.8-27b-fimi":{"id":"qwen/qwen3.8-27b-fimi","name":"Qwen 3.8 27B Fimi","description":"Qwen 3.8 27B Fimi is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen 3 32b","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3-32b"},"qwen/qwen3.8-27b-kimiko":{"id":"qwen/qwen3.8-27b-kimiko","name":"Qwen 3.8 27B Kimiko","description":"Qwen 3.8 27B Kimiko is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":995904,"input":995904,"output":32768},"cost":{"input":0.3995,"output":1.2002,"cache_read":0.19975},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001},"canonical_model_id":"alibaba/qwen3-max"},"qwen/qwen3.8-27b-obliterated:thinking":{"id":"qwen/qwen3.8-27b-obliterated:thinking","name":"Qwen 3.8 27B Obliterated Thinking","description":"Qwen 3.8 27B Obliterated with thinking enabled for more deliberate creative work, coding, multimodal analysis, tool use, and long-context problem solving.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.2}},"qwen/qwen3.8-27b-antislop":{"id":"qwen/qwen3.8-27b-antislop","name":"Qwen 3.8 27B Antislop","description":"Qwen 3.8 27B Antislop is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen-turbo":{"id":"qwen/qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":8192},"cost":{"input":0.04998,"output":0.2006,"cache_read":0.02499},"canonical_model_id":"alibaba/qwen-turbo"},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"qwen/qwen3.8-27b:thinking":{"id":"qwen/qwen3.8-27b:thinking","name":"Qwen3.8 27B Thinking","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1001536,"input":1001536,"output":32768},"cost":{"input":0.15,"output":0.7,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-27b-obliterated":{"id":"qwen/qwen3.8-27b-obliterated","name":"Qwen 3.8 27B Obliterated","description":"Qwen 3.8 27B Obliterated is an open-weight multimodal model LoRA-tuned for fewer refusals across chat, coding, reasoning, tool use, and long-context work.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.2}},"qwen/qwen3.8-omni-flash":{"id":"qwen/qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen/qwen3.8-27b-uncensored":{"id":"qwen/qwen3.8-27b-uncensored","name":"Qwen 3.8 27B Uncensored","description":"Qwen 3.8 27B Uncensored is an NVFP4 open-weight multimodal model LoRA-tuned for fewer refusals across chat, coding, reasoning, tool use, and long-context work.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"input":1010000,"output":32768},"cost":{"input":0.75,"output":2.5,"cache_read":0.125}},"qwen/qwen3.7-max:thinking":{"id":"qwen/qwen3.7-max:thinking","name":"Qwen3.7 Max Thinking","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen 3 235b A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.3,"output":0.5,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3-235b-a22b"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.437,"output":3.496,"cache_read":0.103788},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.8-27b-uncensored:thinking":{"id":"qwen/qwen3.8-27b-uncensored:thinking","name":"Qwen 3.8 27B Uncensored Thinking","description":"Qwen 3.8 27B Uncensored with thinking enabled for more deliberate creative work, coding, multimodal analysis, tool use, and long-context problem solving.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-29","last_updated":"2026-08-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"input":1010000,"output":32768},"cost":{"input":0.75,"output":2.5,"cache_read":0.125}},"qwen/qwen3.5-omni-flash":{"id":"qwen/qwen3.5-omni-flash","name":"Qwen3.5 Omni Flash","description":"Qwen3.5 Omni Flash is Qwen's fast multimodal model. We verified live support for text prompts, images, audio files, and direct video URLs on Alibaba's chat-completions-compatible API. Alibaba describes Flash as a fully evolved version of Qwen3 Omni with audio input support across 60+ languages.","family":"qwen3.5","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":49152,"input":49152,"output":16384}},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B (Instruct)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.15,"output":0.65,"cache_read":0.075},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"qwen/qwen3-max-2026-01-23":{"id":"qwen/qwen3-max-2026-01-23","name":"Qwen3 Max 2026-01-23","description":"Qwen3 Max is Alibaba's flagship Qwen 3 reasoning model with native tool use (web search, web extractor, code interpreter) and a 256K context window.","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-01-26","last_updated":"2026-01-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":1.2002,"output":6.001,"cache_read":0.6001}},"qwen/qwen3.8-27b-fable":{"id":"qwen/qwen3.8-27b-fable","name":"Qwen 3.8 27B Fable","description":"Qwen 3.8 27B Fable is an open-weight multimodal creative finetune for expressive dialogue, long-form storytelling, character work, and roleplay.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-07-29","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3.8-27b-hemmingway":{"id":"qwen/qwen3.8-27b-hemmingway","name":"Qwen 3.8 27B Hemingway","description":"Qwen 3.8 27B Hemingway is an open-weight NVFP4 multimodal creative finetune for long-form prose, character dialogue, storytelling, and roleplay.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.19,"output":1.16,"cache_read":0.02,"cache_write":0.24},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen3.5-plus:thinking":{"id":"qwen/qwen3.5-plus:thinking","name":"Qwen3.5 Plus Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen3.8-27b-darkidol":{"id":"qwen/qwen3.8-27b-darkidol","name":"Qwen 3.8 27B DarkIdol","description":"Qwen 3.8 27B DarkIdol is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":65536},"cost":{"input":1,"output":5,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3-coder-plus"},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.05,"output":0.15,"cache_read":0.025},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen/qwen3.5-122b-a10b:thinking":{"id":"qwen/qwen3.5-122b-a10b:thinking","name":"Qwen3.5 122B A10B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.437,"output":3.496,"cache_read":0.103788},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.5-397b-a17b:thinking":{"id":"qwen/qwen3.5-397b-a17b:thinking","name":"Qwen3.5 397B A17B Thinking","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.6,"output":3.6,"cache_read":0.3},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.8-max-prime":{"id":"qwen/qwen3.8-max-prime","name":"Qwen3.8 Max Prime","description":"High-throughput edition of Qwen3.8 Max for coding, professional work, multimodal understanding, and long-running agent workflows","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.8-max-prime"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":131072},"cost":{"input":0.14,"output":0.42,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.8-27b-cybersecurity":{"id":"qwen/qwen3.8-27b-cybersecurity","name":"Qwen 3.8 27B Cybersecurity","description":"Qwen 3.8 27B Cybersecurity is a cybersecurity-focused variant based on the uncensored model, with provider moderation for illegal activities. It supports optional reasoning, image understanding, tool calling, and a 262,144-token context window.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-19","last_updated":"2026-09-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3.8-27b-novelist":{"id":"qwen/qwen3.8-27b-novelist","name":"Qwen 3.8 27B Novelist","description":"Qwen 3.8 27B Novelist is a creative finetune served by Aoru in NVFP4 with a 262,144-token context window. It supports image understanding, tool calling, and optional reasoning.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen-long":{"id":"qwen/qwen-long","name":"Qwen Long 10M","description":"Alibaba's huge context window model. Takes in up to 10 million tokens, which is equivalent to dozens of books.","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2024-08-01","last_updated":"2024-08-01","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"input":10000000,"output":8192},"cost":{"input":0.1003,"output":0.408,"cache_read":0.05015}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.225,"output":1.8,"cache_read":0.1125},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":245760,"input":245760,"output":65536},"cost":{"input":1.04,"output":6.24,"cache_read":0.52},"canonical_model_id":"alibaba/qwen3.6-max-preview"},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.6,"output":3.6,"cache_read":0.3},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3-8b":{"id":"qwen/qwen3-8b","name":"Qwen 3 8B","description":"Qwen 3 8B is a 8B model. Supports switching between thinking and non thinking: trigger thinking with /think and /no_think anywhere in a prompt or system message to toggle chain-of-thought reasoning.","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.47,"output":0.47,"cache_read":0.235}},"qwen/qwen3.5-27b:thinking":{"id":"qwen/qwen3.5-27b:thinking","name":"Qwen3.5 27B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":260096,"input":260096,"output":65536},"cost":{"input":0.27,"output":2.16,"cache_read":0.135},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3.8-27b-queen":{"id":"qwen/qwen3.8-27b-queen","name":"Qwen 3.8 27B Queen","description":"Qwen 3.8 27B Queen is an open-weight roleplay finetune with image understanding, tool calling, optional reasoning, and a 262,144-token context window.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"release_date":"2026-09-09","last_updated":"2026-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"input":524288,"output":32768},"cost":{"input":0.25,"output":1.5,"cache_read":0.125}},"qwen/qwen3.8-27b-synthia":{"id":"qwen/qwen3.8-27b-synthia","name":"Qwen 3.8 27B Synthia","description":"Qwen 3.8 27B Synthia is a text-only roleplay finetune served by Aoru in NVFP4 with a 262,144-token context window.","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.05}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen3-30B-A3B-Instruct-2507 is a 30.5B-parameter mixture-of-experts language model from Qwen, with 3.3B active parameters per inference. Significant improvements in general capabilities, including instruction following, logical reasoning, text comprehension, mathematics, science, coding and tool usage.","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-02-20","last_updated":"2025-02-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":32768},"cost":{"input":0.2,"output":0.5,"cache_read":0.1}},"qwen/qwen2.5-coder-32b-instruct":{"id":"qwen/qwen2.5-coder-32b-instruct","name":"Qwen 2.5 Coder 32b","description":"Open coding-focused Qwen model for code generation, repair, and repository reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"input":32000,"output":8192},"cost":{"input":0.2006,"output":0.2006,"cache_read":0.1003},"canonical_model_id":"alibaba/qwen2.5-coder-32b-instruct"},"qwen/qwen3.7-plus:thinking":{"id":"qwen/qwen3.7-plus:thinking","name":"Qwen3.7 Plus Thinking","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":983616,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2025-07-03","last_updated":"2025-07-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":8192},"cost":{"input":0.357,"output":0.408,"cache_read":0.1785}},"qwen/qwen3.6-35b-a3b:thinking":{"id":"qwen/qwen3.6-35b-a3b:thinking","name":"Qwen3.6 35B A3B Thinking","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":16384},"cost":{"input":0.112,"output":0.8,"cache_read":0.056},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen 3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_read":0.0325,"cache_write":0.40625},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.6-27b:thinking":{"id":"qwen/qwen3.6-27b:thinking","name":"Qwen3.6 27B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":65536},"cost":{"input":0.203,"output":2.24,"cache_read":0.1015},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen 3 14b","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":41000,"input":41000,"output":32768},"cost":{"input":0.08,"output":0.24,"cache_read":0.04}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen/qwen3.5-flash:thinking":{"id":"qwen/qwen3.5-flash:thinking","name":"Qwen3.5 Flash Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen/qwen3.8-max-0902":{"id":"qwen/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991808,"input":991808,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{"id":"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5","name":"Llama 3 70B abliterated","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"input":8192,"output":8192},"cost":{"input":0.7,"output":0.7,"cache_read":0.35}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT 5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"input":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-terra-latest":{"id":"openai/gpt-terra-latest","name":"GPT Terra Latest","description":"Compatibility alias that routes to GPT 5.6 Terra, the latest supported GPT Terra model.","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-6-astra-pro":{"id":"openai/gpt-6-astra-pro","name":"GPT 6 Astra Pro","description":"GPT 6 Astra in Pro reasoning mode. Uses additional model work for difficult tasks, with higher latency and token usage at the same per-token rates. Reasoning effort remains independently configurable.","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai/o3-pro-2025-06-10":{"id":"openai/o3-pro-2025-06-10","name":"OpenAI o3-pro (2025-06-10)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":22,"output":88,"cache_read":11}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT 5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT 5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT 5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-03","last_updated":"2026-05-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT 5.6 Sol Pro","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT 5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"OpenAI o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"OpenAI o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT 5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT 4.1 Nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT 5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"OpenAI o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"GPT Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-29","last_updated":"2026-03-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT 5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":15,"output":120,"cache_read":1.5},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT 6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT 6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-luna-latest":{"id":"openai/gpt-luna-latest","name":"GPT Luna Latest","description":"Compatibility alias that routes to GPT 5.6 Luna, the latest supported GPT Luna model.","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT 5.6 Luna Pro","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT 5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":131072,"output":16384},"cost":{"input":0.2,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.075,"output":0.3},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI o3-mini (High)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-01-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-sol-latest":{"id":"openai/gpt-sol-latest","name":"GPT Sol Latest","description":"Compatibility alias that routes to GPT 5.6 Sol, the latest supported GPT Sol model.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"openai/gpt-6-sol-pro":{"id":"openai/gpt-6-sol-pro","name":"GPT 6 Sol Pro","description":"GPT-6 Sol Pro uses the same underlying model as GPT-6 Sol with Pro reasoning mode enabled for higher-quality responses on complex tasks.","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-astra-latest":{"id":"openai/gpt-astra-latest","name":"GPT Astra Latest","description":"Compatibility alias that routes to GPT 6 Astra, the latest supported GPT Astra model.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT 5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT 5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT 5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.1-codex-max"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT 5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT 5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT 4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/o3-mini-low":{"id":"openai/o3-mini-low","name":"OpenAI o3-mini (Low)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-01-31","last_updated":"2025-01-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT 4.1 Mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT 5.6 Terra Pro","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT 6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-6.1-sol-pro":{"id":"openai/gpt-6.1-sol-pro","name":"GPT 6.1 Sol Pro","description":"GPT-6.1 Sol Pro uses the same underlying model as GPT-6.1 Sol with Pro reasoning mode enabled for higher-quality responses on complex tasks.","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI o4-mini high","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-12-04","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-6-luna-pro":{"id":"openai/gpt-6-luna-pro","name":"GPT 6 Luna Pro","description":"GPT-6 Luna Pro uses the same underlying model as GPT-6 Luna with Pro reasoning mode enabled for higher-quality responses on complex tasks.","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT 5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":16384},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT 5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/o3":{"id":"openai/o3","name":"OpenAI o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":1},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT 5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT 5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-5.1-2025-11-13":{"id":"openai/gpt-5.1-2025-11-13","name":"GPT-5.1 (2025-11-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2024-01-01","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT 6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"openai/o1-pro":{"id":"openai/o1-pro","name":"OpenAI o1 Pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":100000},"cost":{"input":150,"output":600,"cache_read":75},"canonical_model_id":"openai/o1-pro"},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"Microsoft WizardLM instruction-tuned Mixtral MoE for multilingual dialogue and complex tasks","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-15","last_updated":"2024-04-15","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.493,"output":0.493,"cache_read":0.2465},"canonical_model_id":"microsoft/wizardlm-2-8x22b"},"NousResearch/hermes-3-llama-3.1-70b":{"id":"NousResearch/hermes-3-llama-3.1-70b","name":"Hermes 3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-01-07","last_updated":"2026-01-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"input":65536,"output":8192},"cost":{"input":0.408,"output":0.408,"cache_read":0.204}},"NousResearch/hermes-4-405b":{"id":"NousResearch/hermes-4-405b","name":"Hermes 4 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"NousResearch/hermes-4-405b:thinking":{"id":"NousResearch/hermes-4-405b:thinking","name":"Hermes 4 Large (Thinking)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.15}},"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{"id":"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0","name":"Omega Directive 24B Unslop v2.0","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.25}}}},"abliteration-ai":{"id":"abliteration-ai","env":["ABLIT_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.abliteration.ai/v1","name":"abliteration.ai","doc":"https://docs.abliteration.ai/models","models":{"abliterated-model-large-v2":{"id":"abliterated-model-large-v2","name":"Abliterated Model Large V2","description":"GLM-5.3 model abliterated and finetuned for cyber, ML red teaming, and agent testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}},"abliterated-model":{"id":"abliterated-model","name":"Abliterated Model","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01-06","last_updated":"2026-07-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":150000,"input":150000,"output":8192},"cost":{"input":3,"output":3,"cache_read":0.3}},"abliterated-model-large":{"id":"abliterated-model-large","name":"Abliterated Model Large","description":"GLM-5.2 model abliterated and finetuned for cyber, ML red teaming, and agent testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-25","last_updated":"2026-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":999990},"cost":{"input":5,"output":5,"cache_read":0.5}}}},"crof":{"id":"crof","env":["CROF_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://crof.ai/v1","name":"CrofAI","doc":"https://crof.ai/docs","models":{"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.1,"output":0.3,"cache_read":0.02},"canonical_model_id":"google/gemma-4-31b-it"},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.5,"cache_read":0.03},"canonical_model_id":"alibaba/qwen3.8-27b"},"kimi-k3-eco":{"id":"kimi-k3-eco","name":"Kimi K3 Eco","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":1,"output":4,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k3"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM 5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.07,"output":0.22,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash (New)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.08,"output":0.1,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2,"output":8,"cache_read":0.25},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.08,"output":0.2,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.5,"output":1.99,"cache_read":0.05},"canonical_model_id":"moonshotai/kimi-k2.6"},"greg-2-super":{"id":"greg-2-super","name":"Greg 2 Super","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-14","last_updated":"2026-06-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":1.5,"output":5,"cache_read":0.25}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro (0813)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":0.8,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.4,"output":0.8,"cache_read":0.003,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"greg-rp":{"id":"greg-rp","name":"Greg (Roleplay)","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-13","last_updated":"2026-03-13","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.04,"output":0.15,"cache_read":0.008}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":1.75,"cache_read":0.07},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.3,"output":1.05,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.45,"output":2.15,"cache_read":0.08,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.35,"output":0.8,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.5,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.6-27b"},"greg-2-ultra":{"id":"greg-2-ultra","name":"Greg 2 Ultra","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-14","last_updated":"2026-06-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":3,"output":10,"cache_read":0.5}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":163840},"cost":{"input":0.18,"output":0.35,"cache_read":0.04}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.4,"output":1.4,"cache_read":0.06},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.55,"output":2.25,"cache_read":0.05},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"greg-1-mini":{"id":"greg-1-mini","name":"Greg 1 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":229376,"output":229376},"cost":{"input":0.07,"output":0.15,"cache_read":0.01}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.12,"output":0.21,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"standardcompute":{"id":"standardcompute","env":["STANDARDCOMPUTE_API_KEY"],"npm":"@openrouter/ai-sdk-provider","api":"https://api.stdcmpt.com/v1","name":"Standard Compute","doc":"https://standardcompute.com/models","models":{"standardcompute":{"id":"standardcompute","name":"Standard Compute","description":"Flat-rate smart-routing gateway: one model id, each request routed across a curated catalog of 1M-context models (DeepSeek, GLM, MiniMax, Qwen, GPT-5.6, Claude 5, Gemini 2.5, Kimi) or pinned to a user-selected model","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-08-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":24576},"cost":{"input":0,"output":0}}}},"cloudferro-sherlock":{"id":"cloudferro-sherlock","env":["CLOUDFERRO_SHERLOCK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-sherlock.cloudferro.com/openai/v1/","name":"CloudFerro Sherlock","doc":"https://docs.sherlock.cloudferro.com/","models":{"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10-09","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":70000,"output":70000},"cost":{"input":2.92,"output":2.92}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"input":180000,"output":16000},"cost":{"input":0.3,"output":1.2}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"OpenAI GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":2.92,"output":2.92},"canonical_model_id":"openai/gpt-oss-120b"},"speakleash/Bielik-11B-v2.6-Instruct":{"id":"speakleash/Bielik-11B-v2.6-Instruct","name":"Bielik 11B v2.6 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.67,"output":0.67}},"speakleash/Bielik-11B-v3.0-Instruct":{"id":"speakleash/Bielik-11B-v3.0-Instruct","name":"Bielik 11B v3.0 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.67,"output":0.67}}}},"anthropic":{"id":"anthropic","env":["ANTHROPIC_API_KEY"],"npm":"@ai-sdk/anthropic","name":"Anthropic","doc":"https://docs.anthropic.com/en/docs/about-claude/models","models":{"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.4,"cache_write":10},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-07","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-29","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-04","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-14","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}}}},"tinfoil":{"id":"tinfoil","env":["TINFOIL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.tinfoil.sh/v1","name":"Tinfoil","doc":"https://docs.tinfoil.sh","models":{"gpt-oss-safeguard-120b":{"id":"gpt-oss-safeguard-120b","name":"gpt-oss-safeguard-120b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-safeguard-120b"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":4,"output":20,"cache_read":0.8},"canonical_model_id":"moonshotai/kimi-k3"},"llama3-3-70b":{"id":"llama3-3-70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":1.75,"output":2.75},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":1},"canonical_model_id":"google/gemma-4-31b-it"},"glm-5-3":{"id":"glm-5-3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.8,"output":5.75,"cache_read":0.45},"canonical_model_id":"zhipuai/glm-5.3"},"deepseek-v4-1-flash":{"id":"deepseek-v4-1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"status":"beta","cost":{"input":0.65,"output":1.45,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"nomic-embed-text":{"id":"nomic-embed-text","name":"Nomic Embed Text v1.5","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2024-02","last_updated":"2024-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":768},"cost":{"input":0.05,"output":0}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"}}},"llama":{"id":"llama","env":["LLAMA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llama.com/compat/v1/","name":"Llama","doc":"https://llama.developer.meta.com/docs/models","models":{"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama-4-Maverick-17B-128E-Instruct-FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"groq-llama-4-maverick-17b-128e-instruct":{"id":"groq-llama-4-maverick-17b-128e-instruct","name":"Groq-Llama-4-Maverick-17B-128E-Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-4-scout-17b-16e-instruct-fp8":{"id":"llama-4-scout-17b-16e-instruct-fp8","name":"Llama-4-Scout-17B-16E-Instruct-FP8","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"cerebras-llama-4-maverick-17b-128e-instruct":{"id":"cerebras-llama-4-maverick-17b-128e-instruct","name":"Cerebras-Llama-4-Maverick-17B-128E-Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"llama-3.3-8b-instruct":{"id":"llama-3.3-8b-instruct","name":"Llama-3.3-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"cerebras-llama-4-scout-17b-16e-instruct":{"id":"cerebras-llama-4-scout-17b-16e-instruct","name":"Cerebras-Llama-4-Scout-17B-16E-Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}}}},"cohere":{"id":"cohere","env":["COHERE_API_KEY"],"npm":"@ai-sdk/cohere","name":"Cohere","doc":"https://docs.cohere.com/docs/models","models":{"command-r-08-2024":{"id":"command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"cohere/command-r-08-2024"},"north-mini-code-1-0":{"id":"north-mini-code-1-0","name":"North Mini Code","description":"Cohere coding model for practical software engineering and agentic edits","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09-23","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.cohere.ai/compatibility/v1"},"cost":{"input":0,"output":0},"canonical_model_id":"cohere/north-mini-code-1-0"},"command-a-translate-08-2025":{"id":"command-a-translate-08-2025","name":"Command A Translate","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-translate-08-2025"},"tiny-aya-fire":{"id":"tiny-aya-fire","name":"Tiny Aya Fire","description":"Compact multilingual model specialized for South Asian languages","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"canonical_model_id":"cohere/tiny-aya-fire"},"command-r7b-arabic-02-2025":{"id":"command-r7b-arabic-02-2025","name":"Command R7B Arabic","description":"Open Command R model optimized for Arabic enterprise chat, RAG, and cultural knowledge","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-02-27","last_updated":"2025-02-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-arabic-02-2025"},"tiny-aya-earth":{"id":"tiny-aya-earth","name":"Tiny Aya Earth","description":"Compact multilingual model specialized for West Asian and African languages","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"canonical_model_id":"cohere/tiny-aya-earth"},"command-a-plus-05-2026":{"id":"command-a-plus-05-2026","name":"Command A Plus","description":"Cohere's stronger command model for multilingual agents and enterprise workflows","family":"command-a","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04-01","release_date":"2026-05-20","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-plus-05-2026"},"command-a-03-2025":{"id":"command-a-03-2025","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-03-2025"},"c4ai-aya-vision-32b":{"id":"c4ai-aya-vision-32b","name":"Aya Vision 32B","description":"Open multilingual vision model for OCR, visual reasoning, and image question answering","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-04","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4000},"canonical_model_id":"cohere/c4ai-aya-vision-32b"},"tiny-aya-global":{"id":"tiny-aya-global","name":"Tiny Aya Global","description":"Compact multilingual model balanced across 70 languages and regions","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"canonical_model_id":"cohere/tiny-aya-global"},"north-small-translate-09-2026":{"id":"north-small-translate-09-2026","name":"North Small Translate","description":"Open-weight translation model for more than 50 languages and locale variants","family":"north","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-09-09","last_updated":"2026-09-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16000},"cost":{"input":0,"output":0},"canonical_model_id":"cohere/north-small-translate-1-0"},"command-r7b-12-2024":{"id":"command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-12-2024"},"command-r-plus-08-2024":{"id":"command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-r-plus-08-2024"},"command-a-vision-07-2025":{"id":"command-a-vision-07-2025","name":"Command A Vision","description":"Cohere vision model for multilingual document analysis, OCR, and image understanding","family":"command-a","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-vision-07-2025"},"tiny-aya-water":{"id":"tiny-aya-water","name":"Tiny Aya Water","description":"Compact multilingual model specialized for European and Asia-Pacific languages","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"canonical_model_id":"cohere/tiny-aya-water"},"command-a-reasoning-08-2025":{"id":"command-a-reasoning-08-2025","name":"Command A Reasoning","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-reasoning-08-2025"},"c4ai-aya-expanse-32b":{"id":"c4ai-aya-expanse-32b","name":"Aya Expanse 32B","description":"Open multilingual model optimized for generation across 23 languages","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-24","last_updated":"2024-10-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"canonical_model_id":"cohere/c4ai-aya-expanse-32b"}}},"deepseek":{"id":"deepseek","env":["DEEPSEEK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.deepseek.com","name":"DeepSeek","doc":"https://api-docs.deepseek.com/quick_start/pricing","models":{"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"status":"deprecated","cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-flash":{"id":"deepseek-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.66,"output":1.98,"reasoning":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"status":"deprecated","cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"}}},"baseten":{"id":"baseten","env":["BASETEN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.baseten.co/v1","name":"Baseten","doc":"https://docs.baseten.co/inference/model-apis/overview","models":{"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":1,"output":4.05},"canonical_model_id":"thinkingmachines/inkling"},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":131000},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.32,"output":3.96},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V4.1-Flash-Fast":{"id":"deepseek-ai/DeepSeek-V4.1-Flash-Fast","name":"DeepSeek V4.1 Flash Fast","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":2.4},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204000,"output":204000},"status":"deprecated","cost":{"input":0.3,"output":1.2}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-01-30","last_updated":"2026-02-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.6,"output":3,"cache_read":0.12}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":1.3,"output":4.3,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM 4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":200000},"cost":{"input":0.6,"output":2.2,"cache_read":0.12}},"zai-org/GLM-5.2-Fast":{"id":"zai-org/GLM-5.2-Fast","name":"GLM 5.2 Fast","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.3-Fast":{"id":"zai-org/GLM-5.3-Fast","name":"GLM 5.3 Fast","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6},"canonical_model_id":"zhipuai/glm-5.3"},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.95,"output":3.15,"cache_read":0.2}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.3"},"nvidia/Nemotron-120B-A12B":{"id":"nvidia/Nemotron-120B-A12B","name":"Nemotron Super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.3,"output":0.75,"cache_read":0.06},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B","name":"Nemotron Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":202800},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"OpenAI GPT 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128072,"output":128072},"cost":{"input":0.1,"output":0.5}}}},"nan":{"id":"nan","env":["NAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.nan.builders/v1","name":"NaN","doc":"https://nan.builders/docs/models","models":{"qwen-image-2.1":{"id":"qwen-image-2.1","name":"Qwen-Image-2.1","description":"Unified text-to-image generation and image editing model with native RGBA transparency and reference-image editing","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-09-14","last_updated":"2026-09-21","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen-image-2.1"},"glm5.3-flash":{"id":"glm5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"gemma4":{"id":"gemma4","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"qwen3.6":{"id":"qwen3.6","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.8-flash"},"glm5.3":{"id":"glm5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"}}},"stepfun-ai-step-plan":{"id":"stepfun-ai-step-plan","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.ai/step_plan/v1","name":"StepFun Step Plan (Global)","doc":"https://platform.stepfun.ai/docs/en/step-plan/integrations/reasoning-api","models":{"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"canonical_model_id":"stepfun/step-5-preview"},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.5-flash-2603"},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.5-flash"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.7-flash"}}},"nearai":{"id":"nearai","env":["NEARAI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://cloud-api.near.ai/v1","name":"NEAR AI Cloud","doc":"https://docs.near.ai/","models":{"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-opus-5-5":{"id":"anthropic/claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-5-5":{"id":"anthropic/claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-sonnet-5-5":{"id":"anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":1.1,"output":1.1,"cache_read":0.55},"canonical_model_id":"deepseek/deepseek-v3.2"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.035},"canonical_model_id":"zhipuai/glm-5.3-flash"},"black-forest-labs/FLUX.2-klein-4B":{"id":"black-forest-labs/FLUX.2-klein-4B","name":"FLUX.2 Klein 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":1,"output":1}},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"Qwen/Qwen3-Reranker-0.6B":{"id":"Qwen/Qwen3-Reranker-0.6B","name":"Qwen3 Reranker 0.6B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":1024},"cost":{"input":0.01,"output":0.01}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.04,"output":1.35,"cache_read":0.018},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen3-VL 30B-A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":8192},"cost":{"input":0.15,"output":0.55,"cache_read":0.03}},"Qwen/Qwen3-Embedding-0.6B":{"id":"Qwen/Qwen3-Embedding-0.6B","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":1024},"cost":{"input":0.01,"output":0.01}},"Qwen/Qwen3.6-35B-A3B-FP8":{"id":"Qwen/Qwen3.6-35B-A3B-FP8","name":"Qwen 3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.17,"output":1.1,"cache_read":0.056},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3.3,"output":16.5,"cache_read":0.33},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.81,"output":3.85,"cache_read":0.41},"canonical_model_id":"moonshotai/kimi-k2.6"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.8,"output":7.5},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.5,"output":3.3,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.01,"output":0.01}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01},"canonical_model_id":"openai/gpt-6-luna"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2},"canonical_model_id":"openai/gpt-6-sol"}}},"wandb":{"id":"wandb","env":["WANDB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inference.wandb.ai/v1","name":"CoreWeave","doc":"https://docs.wandb.ai/inference","models":{"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama 3.1 8B","description":"Efficient conversational model optimized for responsive multilingual chatbot interactions.","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.22,"output":0.22,"cache_read":0.22},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B","description":"Multilingual model excelling in conversational tasks, detailed instruction-following, and coding.","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.71,"output":0.71,"cache_read":0.71},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B","description":"Gemma 4 31B Dense is designed for advanced reasoning, agentic workflows, and longer context and is natively trained on 140+ languages.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.34,"cache_read":0.1},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B","description":"Gemma 4 26B A4B is a multimodal MoE model with LoRA support and function calling for agentic workflows.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3,"cache_read":0.05},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Qwen3.8-27B is a dense multimodal model suited for coding, research, vision, and long-running agent tasks.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3,"cache_read":0.15},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B A3B","description":"Qwen3.6-35B-A3B is an MoE multimodal model with 262K context optimized for agentic coding workflows.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.25,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"Granite 4.2 8B is an instruct model capable of enhanced tool calling, instruction following, and chat capabilities.","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-24","last_updated":"2026-08-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.15,"cache_read":0.05}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"A large hybrid model that supports both thinking and non-thinking modes via prompt templates.","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":161000,"output":161000},"cost":{"input":0.55,"output":1.65,"cache_read":0.55},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"DeepSeek V4-Flash-0731 is an MoE model great for coding, reasoning, and agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.28,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4-Pro-0813 is a 1.6T-parameter MoE model excelling at advanced reasoning, coding, and complex agentic workloads.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.31,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash is a multimodal MoE model for coding, reasoning, and agentic workloads with long contexts.","family":"deepseek","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.2,"output":0.65,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax M3","description":"MiniMax M3 is a multimodal MoE model with 23B active parameters optimized for coding and agentic workflows.","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.23,"output":0.96,"cache_read":0.05},"canonical_model_id":"minimax/MiniMax-M3"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Kimi K2.6 is a multimodal Mixture-of-Experts language model featuring 32 billion activated parameters and a total of 1 trillion parameters.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Kimi K2.7 Code is a 1T-parameter MoE model with 32B active parameters purpose-built for long-horizon agentic coding and software engineering.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":3.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"GLM-5.2 is a Mixture-of-Experts language model featuring 40 billion activated parameters and a total of 744 billion parameters.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.76,"output":2.42,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM 5.3 Flash","description":"GLM-5.3-Flash is a natively multimodal model with 320B total parameters and 18B active parameters.","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.15,"output":0.5,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-5.3-flash"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B","name":"Nemotron 3.5 Lightning","description":"Nemotron 3.5 Lightning is an MoE model built for fast, reliable agentic tasks across use cases such as financial services, cybersecurity, telecom, and retail.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.2,"cache_read":0.04},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B","name":"Nemotron 3 Ultra","description":"Nemotron 3 Ultra is a powerful MoE model designed for long-running agents across coding, deep research, and enterprise automation.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.15,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"gpt-oss-20b","description":"Lower latency Mixture-of-Experts model trained on OpenAI's Harmony response format with reasoning capabilities.","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.03},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"gpt-oss-120b","description":"Efficient Mixture-of-Experts model designed for high-reasoning, agentic and general-purpose use cases.","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.17,"cache_read":0.03},"canonical_model_id":"openai/gpt-oss-120b"}}},"subconscious":{"id":"subconscious","env":["SUBCONSCIOUS_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.subconscious.dev/v1","name":"Subconscious","doc":"https://docs.subconscious.dev","models":{"subconscious/deepseek-v4.1-flash-marathon":{"id":"subconscious/deepseek-v4.1-flash-marathon","name":"DeepSeek V4.1 Flash Marathon","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":5000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"subconscious/glm-5.3-marathon":{"id":"subconscious/glm-5.3-marathon","name":"GLM-5.3 Marathon","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":5000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"}}},"zeldoc":{"id":"zeldoc","env":["ZELDOC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.zeldoc.ai/v1","name":"Zeldoc","doc":"https://docs.zeldoc.ai","models":{"zdev":{"id":"zdev","name":"ZDev","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0}}}},"databricks":{"id":"databricks","env":["DATABRICKS_HOST","DATABRICKS_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1","name":"Databricks","doc":"https://docs.databricks.com/aws/en/machine-learning/foundation-models/","models":{"databricks-claude-opus-4-5":{"id":"databricks-claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"databricks-gpt-5-6-terra":{"id":"databricks-gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"databricks-kimi-k2-7-code":{"id":"databricks-kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"databricks-glm-5-2":{"id":"databricks-glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"databricks-gemini-3-1-flash-lite":{"id":"databricks-gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"databricks-gpt-5-mini":{"id":"databricks-gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"databricks-gemini-3-flash":{"id":"databricks-gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"databricks-claude-opus-4-7":{"id":"databricks-claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"databricks-gpt-oss-20b":{"id":"databricks-gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2}},"databricks-gpt-5-4-mini":{"id":"databricks-gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"databricks-gemini-3-pro":{"id":"databricks-gemini-3-pro","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3-pro-preview"},"databricks-gpt-5-2":{"id":"databricks-gpt-5-2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"databricks-claude-haiku-4-5":{"id":"databricks-claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"databricks-gemini-3-1-pro":{"id":"databricks-gemini-3-1-pro","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"databricks-claude-opus-4-6":{"id":"databricks-claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"databricks-gpt-5-6-sol":{"id":"databricks-gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.6-sol"},"databricks-claude-opus-4-1":{"id":"databricks-claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"databricks-gpt-oss-120b":{"id":"databricks-gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.072,"output":0.28}},"databricks-gemini-2-5-pro":{"id":"databricks-gemini-2-5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"databricks-gemini-2-5-flash":{"id":"databricks-gemini-2-5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"databricks-claude-sonnet-4-5":{"id":"databricks-claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"databricks-gpt-5-4":{"id":"databricks-gpt-5-4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"databricks-gpt-5-4-nano":{"id":"databricks-gpt-5-4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"databricks-claude-sonnet-4-6":{"id":"databricks-claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"databricks-gpt-5-6-luna":{"id":"databricks-gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"tiers":[{"input":2,"output":9,"cache_read":0.2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2}},"canonical_model_id":"openai/gpt-5.6-luna"},"databricks-claude-sonnet-4":{"id":"databricks-claude-sonnet-4","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"databricks-gpt-5-1":{"id":"databricks-gpt-5-1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"databricks-gpt-5-nano":{"id":"databricks-gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"databricks-gpt-5":{"id":"databricks-gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"databricks-gpt-5-5":{"id":"databricks-gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"}}},"umans-ai-coding-plan":{"id":"umans-ai-coding-plan","env":["UMANS_AI_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.code.umans.ai/v1","name":"Umans AI Coding Plan","doc":"https://app.umans.ai/offers/code/docs","models":{"umans-deepseek-v4.1-flash":{"id":"umans-deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"umans-glm-5.3-flash":{"id":"umans-glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"umans-flash":{"id":"umans-flash","name":"Umans Flash","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"umans-deepseek-v4-flash-0731":{"id":"umans-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"umans-kimi-k3":{"id":"umans-kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k3"},"umans-glm-5.3":{"id":"umans-glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"umans-qwen3.6-35b-a3b":{"id":"umans-qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"umans-coder":{"id":"umans-coder","name":"Umans Coder","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"}}},"kuae-cloud-coding-plan":{"id":"kuae-cloud-coding-plan","env":["KUAE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding-plan-endpoint.kuaecloud.net/v1","name":"KUAE Cloud Coding Plan","doc":"https://docs.mthreads.com/kuaecloud/kuaecloud-doc-online/coding_plan/","models":{"GLM-4.7":{"id":"GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"umans-ai":{"id":"umans-ai","env":["UMANS_AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.code.umans.ai/v1","name":"Umans AI","doc":"https://app.umans.ai/offers/code/docs/orgs","models":{"umans-deepseek-v4.1-flash":{"id":"umans-deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0.15,"output":0.6,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"umans-glm-5.3-flash":{"id":"umans-glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"umans-flash":{"id":"umans-flash","name":"Umans Flash","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"umans-deepseek-v4-flash-0731":{"id":"umans-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393215},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"umans-kimi-k3":{"id":"umans-kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"umans-glm-5.3":{"id":"umans-glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"umans-coder":{"id":"umans-coder","name":"Umans Coder","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131071},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"}}},"siliconflow":{"id":"siliconflow","env":["SILICONFLOW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.siliconflow.com/v1","name":"SiliconFlow","doc":"https://cloud.siliconflow.com/models","models":{"ByteDance-Seed/Seed-OSS-36B-Instruct":{"id":"ByteDance-Seed/Seed-OSS-36B-Instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57}},"nex-agi/Nex-N2-Pro":{"id":"nex-agi/Nex-N2-Pro","name":"Nex-N2-Pro","description":"Open agentic MoE model (397B total, 17B active) for coding, tool use, and research workflows","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.5,"output":2.5,"cache_read":0.25},"canonical_model_id":"nex-agi/nex-n2-pro"},"tencent/Hunyuan-A13B-Instruct":{"id":"tencent/Hunyuan-A13B-Instruct","name":"tencent/Hunyuan-A13B-Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"tencent/Hy3":{"id":"tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":262144},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"meituan-longcat/LongCat-2.0":{"id":"meituan-longcat/LongCat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1049000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"canonical_model_id":"meituan/longcat-2.0"},"google/gemma-4-12B-it":{"id":"google/gemma-4-12B-it","name":"Gemma 4 12B IT","description":"Compact Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"google/gemma-4-12b-it"},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen/Qwen3-VL-30B-A3B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3-VL-8B-Instruct":{"id":"Qwen/Qwen3-VL-8B-Instruct","name":"Qwen/Qwen3-VL-8B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68}},"Qwen/Qwen3-VL-32B-Thinking":{"id":"Qwen/Qwen3-VL-32B-Thinking","name":"Qwen/Qwen3-VL-32B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen/Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-27b"},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":1.6},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Qwen/Qwen3-14B":{"id":"Qwen/Qwen3-14B","name":"Qwen/Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"id":"Qwen/Qwen3-VL-30B-A3B-Thinking","name":"Qwen/Qwen3-VL-30B-A3B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen/Qwen2.5-72B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen/Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-01","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen2.5-7B-Instruct":{"id":"Qwen/Qwen2.5-7B-Instruct","name":"Qwen/Qwen2.5-7B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.24,"output":1.8},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.08},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen/Qwen3.5-9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.15}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.39,"output":2.34},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":131000},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"Qwen/Qwen3-VL-32B-Instruct":{"id":"Qwen/Qwen3-VL-32B-Instruct","name":"Qwen/Qwen3-VL-32B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":3.2},"canonical_model_id":"alibaba/qwen3.6-27b"},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"deepseek-ai/DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.50162,"output":3.135,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"deepseek-ai/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42,"cache_read":0.135}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"deepseek-ai/DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V3.2-Exp":{"id":"deepseek-ai/DeepSeek-V3.2-Exp","name":"deepseek-ai/DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.41}},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"id":"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"stepfun-ai/Step-3.5-Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","family":"step","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMaxAI/MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":197000,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"inclusionAI/Ling-flash-2.0":{"id":"inclusionAI/Ling-flash-2.0","name":"inclusionAI/Ling-flash-2.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"moonshotai/Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.77,"output":3.4,"cache_read":0.14}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262000},"cost":{"input":2.7,"output":13.5,"cache_read":0.27},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.85916,"output":3.8,"cache_read":0.17993},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"zai-org/GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":131000},"cost":{"input":1.19,"output":3.74,"cache_read":0.6,"cache_write":0}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":1.302,"output":4.092,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"zai-org/GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":0.95,"output":2.55,"cache_read":0.2}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-5V-Turbo":{"id":"zai-org/GLM-5V-Turbo","name":"zai-org/GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"openai/gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":8000},"cost":{"input":0.04,"output":0.18}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"openai/gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":8000},"cost":{"input":0.05,"output":0.45}}}},"minimax-coding-plan":{"id":"minimax-coding-plan","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.io/anthropic/v1","name":"MiniMax Token Plan (minimax.io)","doc":"https://platform.minimax.io/docs/token-plan/intro","models":{"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M3.1-Flash-Preview":{"id":"MiniMax-M3.1-Flash-Preview","name":"MiniMax-M3.1-Flash-Preview","description":"Frontier multimodal coding model with 1M context window and tunable thinking depth","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-27","last_updated":"2026-09-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"minimax/MiniMax-M3.1-Flash-Preview"},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"alibaba-coding-plan":{"id":"alibaba-coding-plan","env":["ALIBABA_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding-intl.dashscope.aliyuncs.com/v1","name":"Alibaba Coding Plan","doc":"https://www.alibabacloud.com/help/en/model-studio/coding-plan","models":{"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-plus"}}},"lilac":{"id":"lilac","env":["LILAC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.getlilac.com/v1","name":"Lilac","doc":"https://docs.getlilac.com/inference/models","models":{"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":262100},"cost":{"input":0.11,"output":0.35},"canonical_model_id":"google/gemma-4-31b-it"},"minimaxai/minimax-m3":{"id":"minimaxai/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.28,"output":1.1,"cache_read":0.05},"canonical_model_id":"minimax/MiniMax-M3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.2},"canonical_model_id":"moonshotai/kimi-k2.6"},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":524288},"cost":{"input":0.9,"output":3,"cache_read":0.27},"canonical_model_id":"zhipuai/glm-5.2"}}},"moonshotai-cn":{"id":"moonshotai-cn","env":["MOONSHOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.moonshot.cn/v1","name":"Moonshot AI (China)","doc":"https://platform.moonshot.cn/docs/api/chat","models":{"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code HighSpeed","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"canonical_model_id":"moonshotai/kimi-k3"}}},"bothub":{"id":"bothub","env":["BOTHUB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://openai.bothub.ru/v1","name":"Bothub","doc":"https://bothub.ru/models","models":{"gemma-4-31b-it:free":{"id":"gemma-4-31b-it:free","name":"Gemma 4 31B IT (free)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.44},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.1,"output":0.28},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"nemotron-3-ultra-550b-a55b:free":{"id":"nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra (free)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.61,"output":4.84},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.06,"output":0.37},"canonical_model_id":"openai/gpt-5.6-luna"},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2},"canonical_model_id":"meta/muse-spark-1.3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.72,"output":5.41},"canonical_model_id":"zhipuai/glm-5.3"}}},"xiaomi-token-plan-cn":{"id":"xiaomi-token-plan-cn","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-cn.xiaomimimo.com/v1","name":"Xiaomi Token Plan (China)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2-pro"},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}}}},"privatemode-ai":{"id":"privatemode-ai","env":["PRIVATEMODE_API_KEY","PRIVATEMODE_ENDPOINT"],"npm":"@ai-sdk/openai-compatible","api":"http://localhost:8080/v1","name":"Privatemode AI","doc":"https://docs.privatemode.ai/api/overview","models":{"glm-flash-latest":{"id":"glm-flash-latest","name":"GLM Flash (latest)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":0.2311,"output":0.7511,"cache_read":0.0578},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":0.2311,"output":0.7511,"cache_read":0.0578},"canonical_model_id":"zhipuai/glm-5.3-flash"},"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper large-v3","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0.01618,"output":0},"canonical_model_id":"openai/whisper-large-v3"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":262144},"status":"deprecated","cost":{"input":1.791,"output":8.9436,"cache_read":0.1733},"canonical_model_id":"moonshotai/kimi-k2.6"},"deepseek-ocr-2":{"id":"deepseek-ocr-2","name":"DeepSeek OCR 2","description":"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"status":"beta","cost":{"input":0.8897,"output":1.4675,"cache_read":0.0924},"canonical_model_id":"deepseek/deepseek-ocr-2"},"qwen3-embedding-4b":{"id":"qwen3-embedding-4b","name":"Qwen3-Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-06","last_updated":"2025-06-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2560},"cost":{"input":0.1502,"output":0}},"voxtral-mini-3b":{"id":"voxtral-mini-3b","name":"Voxtral Mini 3B","description":"Speech-to-text model for audio transcription, translation, and audio understanding","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07","last_updated":"2025-07","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.00462,"output":0}},"kimi-latest":{"id":"kimi-latest","name":"Kimi (latest)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":262144},"status":"deprecated","cost":{"input":1.791,"output":8.9436,"cache_read":0.1733},"canonical_model_id":"moonshotai/kimi-k2.6"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.2311,"output":0.7511,"cache_read":0.0462},"canonical_model_id":"openai/gpt-oss-120b"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":1.791,"output":6.6326,"cache_read":0.1733},"canonical_model_id":"zhipuai/glm-5.3"},"glm-latest":{"id":"glm-latest","name":"GLM (latest)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":1.791,"output":6.6326,"cache_read":0.1733},"canonical_model_id":"zhipuai/glm-5.3"}}},"llmgateway-providers":{"id":"llmgateway-providers","env":["LLMGATEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmgateway.io/v1","name":"LLM Gateway","doc":"https://llmgateway.io/docs","models":{"entrim/glm-5.3-flash":{"id":"entrim/glm-5.3-flash","name":"GLM-5.3 Flash (entrim)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.35,"cache_read":0.0175},"canonical_model_id":"zhipuai/glm-5.3-flash"},"entrim/deepseek-v4.1-flash":{"id":"entrim/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (entrim)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.005},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"consensusprotocol/gemma-4-31b-it":{"id":"consensusprotocol/gemma-4-31b-it","name":"Gemma 4 31B IT (Consensus Protocol)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.25,"cache_read":0.01},"canonical_model_id":"google/gemma-4-31b-it"},"consensusprotocol/Qwen3.8-27B":{"id":"consensusprotocol/Qwen3.8-27B","name":"Qwen3.8 27B (Consensus Protocol)","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":32768},"cost":{"input":0.08,"output":0.35,"cache_read":0.05}},"consensusprotocol/glm-5.3-flash":{"id":"consensusprotocol/glm-5.3-flash","name":"GLM-5.3 Flash (Consensus Protocol)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.25,"cache_read":0.02},"canonical_model_id":"zhipuai/glm-5.3-flash"},"consensusprotocol/deepseek-v4.1-flash":{"id":"consensusprotocol/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Consensus Protocol)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.55,"cache_read":0.005},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"consensusprotocol/gpt-oss-20b":{"id":"consensusprotocol/gpt-oss-20b","name":"GPT OSS 20B (Consensus Protocol)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.04,"output":0.19,"cache_read":0.01},"canonical_model_id":"openai/gpt-oss-20b"},"consensusprotocol/deepseek-v4-flash":{"id":"consensusprotocol/deepseek-v4-flash","name":"DeepSeek V4 Flash (Consensus Protocol)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":384000},"cost":{"input":0.1,"output":0.2,"cache_read":0.005},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepinfra/mimo-v2.6-pro":{"id":"deepinfra/mimo-v2.6-pro","name":"MiMo V2.6 Pro (DeepInfra)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"deepinfra/gemma-4-31b-it":{"id":"deepinfra/gemma-4-31b-it","name":"Gemma 4 31B IT (DeepInfra)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"deepinfra/qwen3-vl-235b-a22b-instruct":{"id":"deepinfra/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct (DeepInfra)","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"deepinfra/muse-glimmer-30b":{"id":"deepinfra/muse-glimmer-30b","name":"Muse Glimmer 30B (DeepInfra)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"deepinfra/deepseek-v4.1-flash":{"id":"deepinfra/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (DeepInfra)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepinfra/ling-3.0-flash":{"id":"deepinfra/ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash (DeepInfra)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"deepinfra/qwen3-vl-30b-a3b-instruct":{"id":"deepinfra/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct (DeepInfra)","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6}},"deepinfra/gemma-4-26b-a4b-it":{"id":"deepinfra/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT (DeepInfra)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"deepinfra/ling-3.0-flash-vl":{"id":"deepinfra/ling-3.0-flash-vl","name":"Ling 3.0 Flash VL (DeepInfra)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"deepinfra/granite-4.2-8b":{"id":"deepinfra/granite-4.2-8b","name":"Granite 4.2 8B (DeepInfra)","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015}},"deepinfra/nemotron-3-ultra-550b":{"id":"deepinfra/nemotron-3-ultra-550b","name":"Nemotron 3 Ultra 550B (DeepInfra)","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.2,"cache_read":0.1}},"deepinfra/qwen3.5-9b":{"id":"deepinfra/qwen3.5-9b","name":"Qwen3.5 9B (DeepInfra)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"deepinfra/inkling":{"id":"deepinfra/inkling","name":"Inkling (DeepInfra)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":262144},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"canonical_model_id":"thinkingmachines/inkling"},"deepinfra/mimo-v2.6-flash":{"id":"deepinfra/mimo-v2.6-flash","name":"MiMo V2.6 Flash (DeepInfra)","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"deepinfra/deepseek-v4-pro":{"id":"deepinfra/deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepInfra)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepinfra/deepseek-v3.2":{"id":"deepinfra/deepseek-v3.2","name":"DeepSeek V3.2 (DeepInfra)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":65536},"cost":{"input":0.26,"output":0.38,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepinfra/deepseek-v4-flash":{"id":"deepinfra/deepseek-v4-flash","name":"DeepSeek V4 Flash (DeepInfra)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.08,"output":0.18,"cache_read":0.016},"canonical_model_id":"deepseek/deepseek-v4-flash"},"cerebras/gemma-4-31b-it":{"id":"cerebras/gemma-4-31b-it","name":"Gemma 4 31B IT (Cerebras)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.99,"output":1.49},"canonical_model_id":"google/gemma-4-31b-it"},"cerebras/qwen3-235b-a22b-instruct-2507":{"id":"cerebras/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (Cerebras)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":8192},"cost":{"input":0.6,"output":1.2},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"cerebras/llama-3.3-70b-instruct":{"id":"cerebras/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct (Cerebras)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.85,"output":1.2},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"cerebras/glm-4.7":{"id":"cerebras/glm-4.7","name":"GLM-4.7 (Cerebras)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":2.25,"output":2.75},"canonical_model_id":"zhipuai/glm-4.7"},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B (Cerebras)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"groq/gpt-oss-20b":{"id":"groq/gpt-oss-20b","name":"GPT OSS 20B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32766},"cost":{"input":0.1,"output":0.5},"canonical_model_id":"openai/gpt-oss-20b"},"groq/gpt-oss-120b":{"id":"groq/gpt-oss-120b","name":"GPT OSS 120B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32766},"cost":{"input":0.15,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"scx-ai-gp/glm-5.3-flash":{"id":"scx-ai-gp/glm-5.3-flash","name":"GLM-5.3 Flash (SCX.ai)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.088,"output":0.25,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-5.3-flash"},"scx-ai-gp/glm-5.2-fast":{"id":"scx-ai-gp/glm-5.2-fast","name":"GLM-5.2 Turbo (SCX.ai)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.2,"output":6.5,"cache_read":0.45},"canonical_model_id":"zhipuai/glm-5.2"},"scx-ai-gp/qwen3.8-max":{"id":"scx-ai-gp/qwen3.8-max","name":"Qwen3.8 Max (SCX.ai)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"scx-ai-gp/kimi-k3":{"id":"scx-ai-gp/kimi-k3","name":"Kimi K3 (SCX.ai)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3.5,"output":18,"cache_read":0.35},"canonical_model_id":"moonshotai/kimi-k3"},"scx-ai-gp/deepseek-v4.1-flash":{"id":"scx-ai-gp/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (SCX.ai)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"scx-ai-gp/glm-5.2":{"id":"scx-ai-gp/glm-5.2","name":"GLM-5.2 (SCX.ai)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.88,"output":2.55,"cache_read":0.16},"canonical_model_id":"zhipuai/glm-5.2"},"scx-ai-gp/glm-5.3":{"id":"scx-ai-gp/glm-5.3","name":"GLM-5.3 (SCX.ai)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"scx-ai-gp/kimi-k2.7-code":{"id":"scx-ai-gp/kimi-k2.7-code","name":"Kimi K2.7 Code (SCX.ai)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"scx-ai-gp/glm-5.3-fast":{"id":"scx-ai-gp/glm-5.3-fast","name":"GLM 5.3 Fast (SCX.ai)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"canonical_model_id":"zhipuai/glm-5.3"},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-4.6v"},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5 (Z AI)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3 Flash (Z AI)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6 (Z AI)","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-4.5-x":{"id":"zai/glm-4.5-x","name":"GLM-4.5 X (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":2.2,"output":8.9,"cache_read":0.45}},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5 (Z AI)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.5-airx":{"id":"zai/glm-4.5-airx","name":"GLM-4.5 AirX (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":1.1,"output":4.5,"cache_read":0.22}},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM-4.5V (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"zai/glm-4-32b-0414-128k":{"id":"zai/glm-4-32b-0414-128k","name":"GLM-4 32B (0414-128k) (Z AI)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.1,"output":0.1}},"zai/glm-4.6v-flashx":{"id":"zai/glm-4.6v-flashx","name":"GLM-4.6V FlashX (Z AI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004}},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7 (Z AI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2 (Z AI)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1 (Z AI)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM-4.7 FlashX (Z AI)","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5 Air (Z AI)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3 (Z AI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"luminal/deepseek-v4.1-flash":{"id":"luminal/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (luminal)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.135,"output":0.54,"cache_read":0.0027},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"aws-bedrock/claude-haiku-4-5":{"id":"aws-bedrock/claude-haiku-4-5","name":"Claude Haiku 4.5 (AWS Bedrock)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"aws-bedrock/kimi-k3":{"id":"aws-bedrock/kimi-k3","name":"Kimi K3 (AWS Bedrock)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"moonshotai/kimi-k3"},"aws-bedrock/llama-4-maverick-17b-instruct":{"id":"aws-bedrock/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (AWS Bedrock)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.24,"output":0.97},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"aws-bedrock/claude-sonnet-4-5":{"id":"aws-bedrock/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (AWS Bedrock)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"aws-bedrock/claude-opus-5-5":{"id":"aws-bedrock/claude-opus-5-5","name":"Claude Opus 5.5 (AWS Bedrock)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"aws-bedrock/claude-fable-5-1":{"id":"aws-bedrock/claude-fable-5-1","name":"Claude Fable 5.1 (AWS Bedrock)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"aws-bedrock/llama-4-scout-17b-instruct":{"id":"aws-bedrock/llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct (AWS Bedrock)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.17,"output":0.66},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"aws-bedrock/claude-opus-4-1-20250805":{"id":"aws-bedrock/claude-opus-4-1-20250805","name":"Claude Opus 4.1 (AWS Bedrock)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"aws-bedrock/claude-opus-4-5-20251101":{"id":"aws-bedrock/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (AWS Bedrock)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"aws-bedrock/claude-opus-5":{"id":"aws-bedrock/claude-opus-5","name":"Claude Opus 5 (AWS Bedrock)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"aws-bedrock/claude-fable-5":{"id":"aws-bedrock/claude-fable-5","name":"Claude Fable 5 (AWS Bedrock)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"aws-bedrock/claude-opus-4-8":{"id":"aws-bedrock/claude-opus-4-8","name":"Claude Opus 4.8 (AWS Bedrock)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"aws-bedrock/claude-sonnet-4-5-20250929":{"id":"aws-bedrock/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (2025-09-29) (AWS Bedrock)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"aws-bedrock/claude-sonnet-5":{"id":"aws-bedrock/claude-sonnet-5","name":"Claude Sonnet 5 (AWS Bedrock)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"aws-bedrock/claude-opus-4-6":{"id":"aws-bedrock/claude-opus-4-6","name":"Claude Opus 4.6 (AWS Bedrock)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"aws-bedrock/grok-4-3":{"id":"aws-bedrock/grok-4-3","name":"Grok 4.3 (AWS Bedrock)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"aws-bedrock/claude-haiku-4-5-20251001":{"id":"aws-bedrock/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (2025-10-01) (AWS Bedrock)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"aws-bedrock/grok-4-6":{"id":"aws-bedrock/grok-4-6","name":"Grok 4.6 (AWS Bedrock)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"aws-bedrock/claude-haiku-5-5":{"id":"aws-bedrock/claude-haiku-5-5","name":"Claude Haiku 5.5 (AWS Bedrock)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"aws-bedrock/claude-sonnet-4-6":{"id":"aws-bedrock/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (AWS Bedrock)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"aws-bedrock/claude-sonnet-5-5":{"id":"aws-bedrock/claude-sonnet-5-5","name":"Claude Sonnet 5.5 (AWS Bedrock)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"aws-bedrock/grok-4-7":{"id":"aws-bedrock/grok-4-7","name":"Grok 4.7 (AWS Bedrock)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":524288},"cost":{"input":2,"output":6,"cache_read":0.5}},"aws-bedrock/claude-opus-4-7":{"id":"aws-bedrock/claude-opus-4-7","name":"Claude Opus 4.7 (AWS Bedrock)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"aws-bedrock/llama-3.1-70b-instruct":{"id":"aws-bedrock/llama-3.1-70b-instruct","name":"Llama 3.1 70B Instruct (AWS Bedrock)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":2048},"cost":{"input":0.72,"output":0.72}},"google-ai-studio/gemini-3.6-flash":{"id":"google-ai-studio/gemini-3.6-flash","name":"Gemini 3.6 Flash (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.6-flash"},"google-ai-studio/gemini-3.5-flash-lite":{"id":"google-ai-studio/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google-ai-studio/gemini-3.1-pro-preview":{"id":"google-ai-studio/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Google AI Studio)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google-ai-studio/gemini-3.5-flash":{"id":"google-ai-studio/gemini-3.5-flash","name":"Gemini 3.5 Flash (Google AI Studio)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash"},"google-ai-studio/gemini-2.5-pro":{"id":"google-ai-studio/gemini-2.5-pro","name":"Gemini 2.5 Pro (Google AI Studio)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google-ai-studio/gemini-2.5-flash":{"id":"google-ai-studio/gemini-2.5-flash","name":"Gemini 2.5 Flash (Google AI Studio)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"google-ai-studio/gemini-3.7-flash":{"id":"google-ai-studio/gemini-3.7-flash","name":"Gemini 3.7 Flash (Google AI Studio)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.7-flash"},"google-ai-studio/gemini-3-flash-preview":{"id":"google-ai-studio/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview) (Google AI Studio)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"google-ai-studio/gemini-pro-latest":{"id":"google-ai-studio/gemini-pro-latest","name":"Gemini Pro Latest (Google AI Studio)","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"google-ai-studio/gemini-3.8-flash":{"id":"google-ai-studio/gemini-3.8-flash","name":"Gemini 3.8 Flash (Google AI Studio)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.8-flash"},"google-ai-studio/gemini-2.5-flash-lite":{"id":"google-ai-studio/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite (Google AI Studio)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google-ai-studio/gemini-3.1-flash-lite":{"id":"google-ai-studio/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite (Google AI Studio)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.1-flash-lite"},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (Anthropic)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (Anthropic)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-opus-5-5":{"id":"anthropic/claude-opus-5-5","name":"Claude Opus 5.5 (Anthropic)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1 (Anthropic)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (Anthropic)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5 (Anthropic)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5 (Anthropic)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8 (Anthropic)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4-5-20250929":{"id":"anthropic/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (2025-09-29) (Anthropic)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Anthropic)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Anthropic)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-4-5-20251001":{"id":"anthropic/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (2025-10-01) (Anthropic)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"anthropic/claude-haiku-5-5":{"id":"anthropic/claude-haiku-5-5","name":"Claude Haiku 5.5 (Anthropic)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Anthropic)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-sonnet-5-5":{"id":"anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5 (Anthropic)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Anthropic)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (DeepSeek)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepSeek)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"runpod/kimi-k3":{"id":"runpod/kimi-k3","name":"Kimi K3 (Runpod)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"runware/gemma-4-31b-it":{"id":"runware/gemma-4-31b-it","name":"Gemma 4 31B IT (Runware)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.102,"output":0.297,"cache_read":0.012},"canonical_model_id":"google/gemma-4-31b-it"},"runware/glm-5.3-flash":{"id":"runware/glm-5.3-flash","name":"GLM-5.3 Flash (Runware)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"runware/kimi-k3":{"id":"runware/kimi-k3","name":"Kimi K3 (Runware)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"runware/deepseek-v4.1-flash":{"id":"runware/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Runware)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"runware/kimi-k2.6":{"id":"runware/kimi-k2.6","name":"Kimi K2.6 (Runware)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.6,"output":3.05,"cache_read":0.13},"canonical_model_id":"moonshotai/kimi-k2.6"},"runware/glm-5.2":{"id":"runware/glm-5.2","name":"GLM-5.2 (Runware)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"canonical_model_id":"zhipuai/glm-5.2"},"runware/deepseek-v4-pro":{"id":"runware/deepseek-v4-pro","name":"DeepSeek V4 Pro (Runware)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.961,"output":1.922,"cache_read":0.079},"canonical_model_id":"deepseek/deepseek-v4-pro"},"runware/gpt-oss-120b":{"id":"runware/gpt-oss-120b","name":"GPT OSS 120B (Runware)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.032,"output":0.14,"cache_read":0.032},"canonical_model_id":"openai/gpt-oss-120b"},"runware/glm-5.3":{"id":"runware/glm-5.3","name":"GLM-5.3 (Runware)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5.3"},"runware/deepseek-v4-flash":{"id":"runware/deepseek-v4-flash","name":"DeepSeek V4 Flash (Runware)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash"},"tencent/glm-5v-turbo":{"id":"tencent/glm-5v-turbo","name":"GLM-5V Turbo (Tencent Cloud)","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"tencent/kimi-k3":{"id":"tencent/kimi-k3","name":"Kimi K3 (Tencent Cloud)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"tencent/glm-5":{"id":"tencent/glm-5","name":"GLM-5 (Tencent Cloud)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"tencent/kimi-k2.7-code-highspeed":{"id":"tencent/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed (Tencent Cloud)","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"tencent/kimi-k2.6":{"id":"tencent/kimi-k2.6","name":"Kimi K2.6 (Tencent Cloud)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.858,"output":3.566,"cache_read":0.145},"canonical_model_id":"moonshotai/kimi-k2.6"},"tencent/minimax-m2.7":{"id":"tencent/minimax-m2.7","name":"MiniMax M2.7 (Tencent Cloud)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"tencent/mimo-v2.5-pro":{"id":"tencent/mimo-v2.5-pro","name":"MiMo V2.5 Pro (Tencent Cloud)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"tencent/minimax-m3":{"id":"tencent/minimax-m3","name":"MiniMax M3 (Tencent Cloud)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"tencent/glm-5.2":{"id":"tencent/glm-5.2","name":"GLM-5.2 (Tencent Cloud)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3 (Tencent Cloud)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"tencent/hy-mt2-plus":{"id":"tencent/hy-mt2-plus","name":"Hy-MT2 Plus (Tencent Cloud)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/glm-5.1":{"id":"tencent/glm-5.1","name":"GLM-5.1 (Tencent Cloud)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"tencent/glm-5-turbo":{"id":"tencent/glm-5-turbo","name":"GLM-5 Turbo (Tencent Cloud)","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"tencent/deepseek-v4-pro":{"id":"tencent/deepseek-v4-pro","name":"DeepSeek V4 Pro (Tencent Cloud)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.00363},"canonical_model_id":"deepseek/deepseek-v4-pro"},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 Preview (Tencent Cloud)","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"tencent/kimi-k2.7-code":{"id":"tencent/kimi-k2.7-code","name":"Kimi K2.7 Code (Tencent Cloud)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"tencent/deepseek-v4-flash":{"id":"tencent/deepseek-v4-flash","name":"DeepSeek V4 Flash (Tencent Cloud)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"meta-contributor/muse-spark-1.2-contributor":{"id":"meta-contributor/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor (Meta Contributor)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta-contributor/muse-spark-1.3-contributor":{"id":"meta-contributor/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor (Meta Contributor)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"novita/glm-4.6v":{"id":"novita/glm-4.6v","name":"GLM-4.6V (NovitaAI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16000},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"canonical_model_id":"zhipuai/glm-4.6v"},"novita/gemma-4-31b-it":{"id":"novita/gemma-4-31b-it","name":"Gemma 4 31B IT (NovitaAI)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"novita/qwen3-vl-235b-a22b-instruct":{"id":"novita/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct (NovitaAI)","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"novita/qwen3.7-max":{"id":"novita/qwen3.7-max","name":"Qwen3.7 Max (NovitaAI)","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.7-max"},"novita/mimo-v2.5":{"id":"novita/mimo-v2.5","name":"MiMo V2.5 (NovitaAI)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}},"canonical_model_id":"xiaomi/mimo-v2.5"},"novita/qwen3.8-27b":{"id":"novita/qwen3.8-27b","name":"Qwen3.8 27B (NovitaAI)","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085},"canonical_model_id":"alibaba/qwen3.8-27b"},"novita/qwen3-vl-235b-a22b-thinking":{"id":"novita/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking (NovitaAI)","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"novita/qwen3.8-2.4t-a95b":{"id":"novita/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B (NovitaAI)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"novita/glm-5.3-flash":{"id":"novita/glm-5.3-flash","name":"GLM-5.3 Flash (NovitaAI)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"novita/glm-4.6":{"id":"novita/glm-4.6","name":"GLM-4.6 (NovitaAI)","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"novita/qwen3-235b-a22b-instruct-2507":{"id":"novita/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (NovitaAI)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.58},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"novita/qwen3.8-max":{"id":"novita/qwen3.8-max","name":"Qwen3.8 Max (NovitaAI)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"novita/kimi-k3":{"id":"novita/kimi-k3","name":"Kimi K3 (NovitaAI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"novita/llama-4-maverick-17b-instruct":{"id":"novita/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (NovitaAI)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"novita/glm-5":{"id":"novita/glm-5","name":"GLM-5 (NovitaAI)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"novita/deepseek-v4.1-flash":{"id":"novita/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (NovitaAI)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"novita/minimax-m2.5":{"id":"novita/minimax-m2.5","name":"MiniMax M2.5 (NovitaAI)","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"novita/kimi-k2.6":{"id":"novita/kimi-k2.6","name":"Kimi K2.6 (NovitaAI)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"novita/qwen3-max":{"id":"novita/qwen3-max","name":"Qwen3 Max (NovitaAI)","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38},"canonical_model_id":"alibaba/qwen3-max"},"novita/glm-4.5v":{"id":"novita/glm-4.5v","name":"GLM-4.5V (NovitaAI)","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"novita/llama-4-scout-17b-instruct":{"id":"novita/llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct (NovitaAI)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"novita/qwen3-235b-a22b-fp8":{"id":"novita/qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B FP8 (NovitaAI)","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8}},"novita/qwen3-coder-480b-a35b-instruct":{"id":"novita/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct (NovitaAI)","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"novita/qwen3-coder-30b-a3b-instruct":{"id":"novita/qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct (NovitaAI)","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":32768},"cost":{"input":0.07,"output":0.27},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"novita/ling-3.0-flash":{"id":"novita/ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash (NovitaAI)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"novita/qwen3-vl-30b-a3b-instruct":{"id":"novita/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct (NovitaAI)","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-10-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7}},"novita/ling-3.1-flash":{"id":"novita/ling-3.1-flash","name":"Ling 3.1 Flash (NovitaAI)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"novita/gemma-4-26b-a4b-it":{"id":"novita/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT (NovitaAI)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"novita/llama-3-70b-instruct":{"id":"novita/llama-3-70b-instruct","name":"Llama 3 70B Instruct (NovitaAI)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-18","last_updated":"2024-04-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74}},"novita/qwen3-235b-a22b-thinking-2507":{"id":"novita/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507 (NovitaAI)","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":3}},"novita/qwen3.5-122b-a10b":{"id":"novita/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B (NovitaAI)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"novita/llama-3.3-70b-instruct":{"id":"novita/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct (NovitaAI)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":120000},"cost":{"input":0.135,"output":0.4},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"novita/qwen3.6-35b-a3b":{"id":"novita/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B (NovitaAI)","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.248,"output":1.485},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"novita/qwen3-next-80b-a3b-instruct":{"id":"novita/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct (NovitaAI)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"novita/minimax-m2.7":{"id":"novita/minimax-m2.7","name":"MiniMax M2.7 (NovitaAI)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"novita/mimo-v2.5-pro":{"id":"novita/mimo-v2.5-pro","name":"MiMo V2.5 Pro (NovitaAI)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"novita/glm-4.7":{"id":"novita/glm-4.7","name":"GLM-4.7 (NovitaAI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"novita/qwen3.8-flash":{"id":"novita/qwen3.8-flash","name":"Qwen3.8 Flash (NovitaAI)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash"},"novita/qwen35-397b-a17b":{"id":"novita/qwen35-397b-a17b","name":"Qwen3.5 397B A17B (NovitaAI)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":64000},"cost":{"input":0.6,"output":3.6}},"novita/glm-5.2":{"id":"novita/glm-5.2","name":"GLM-5.2 (NovitaAI)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"novita/ernie-4.5-vl-424b-a47b":{"id":"novita/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B (NovitaAI)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"novita/hy3":{"id":"novita/hy3","name":"Hy3 (NovitaAI)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"canonical_model_id":"tencent/hy3"},"novita/kimi-k2":{"id":"novita/kimi-k2","name":"Kimi K2 (NovitaAI)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"novita/glm-5.1":{"id":"novita/glm-5.1","name":"GLM-5.1 (NovitaAI)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"novita/step-3.7-flash":{"id":"novita/step-3.7-flash","name":"Step 3.7 Flash (NovitaAI)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"novita/llama-3.2-3b-instruct":{"id":"novita/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct (NovitaAI)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05}},"novita/deepseek-v3.2":{"id":"novita/deepseek-v3.2","name":"DeepSeek V3.2 (NovitaAI)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.269,"output":0.4,"cache_read":0.1345},"canonical_model_id":"deepseek/deepseek-v3.2"},"novita/glm-5.3":{"id":"novita/glm-5.3","name":"GLM-5.3 (NovitaAI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"novita/kimi-k2.7-code":{"id":"novita/kimi-k2.7-code","name":"Kimi K2.7 Code (NovitaAI)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"novita/minimax-m2.1":{"id":"novita/minimax-m2.1","name":"MiniMax M2.1 (NovitaAI)","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.1"},"novita/deepseek-v4-flash":{"id":"novita/deepseek-v4-flash","name":"DeepSeek V4 Flash (NovitaAI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"embercloud/glm-4.5":{"id":"embercloud/glm-4.5","name":"GLM-4.5 (EmberCloud)","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"embercloud/qwen3-coder-next":{"id":"embercloud/qwen3-coder-next","name":"Qwen3 Coder Next (EmberCloud)","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.108,"output":0.675,"cache_read":0.06},"canonical_model_id":"alibaba/qwen3-coder-next"},"embercloud/glm-5":{"id":"embercloud/glm-5","name":"GLM-5 (EmberCloud)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":0.72,"output":2.3,"cache_read":0.144},"canonical_model_id":"zhipuai/glm-5"},"embercloud/kimi-k2.5":{"id":"embercloud/kimi-k2.5","name":"Kimi K2.5 (EmberCloud)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225},"canonical_model_id":"moonshotai/kimi-k2.5"},"embercloud/glm-4.7-flash":{"id":"embercloud/glm-4.7-flash","name":"GLM-4.7 Flash (EmberCloud)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flash"},"embercloud/glm-4.7":{"id":"embercloud/glm-4.7","name":"GLM-4.7 (EmberCloud)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.38,"output":1.98,"cache_read":0.19},"canonical_model_id":"zhipuai/glm-4.7"},"embercloud/glm-5.2":{"id":"embercloud/glm-5.2","name":"GLM-5.2 (EmberCloud)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"canonical_model_id":"zhipuai/glm-5.2"},"embercloud/glm-5.1":{"id":"embercloud/glm-5.1","name":"GLM-5.1 (EmberCloud)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131000},"cost":{"input":0.931,"output":2.93,"cache_read":0.173},"canonical_model_id":"zhipuai/glm-5.1"},"embercloud/glm-4.5-air":{"id":"embercloud/glm-4.5-air","name":"GLM-4.5 Air (EmberCloud)","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":96000},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-4.5-air"},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar (Perplexity)","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":4096},"cost":{"input":0.25,"output":2.5,"cache_write":0.25},"canonical_model_id":"perplexity/sonar"},"azure-ai-foundry/grok-4-1-fast-reasoning":{"id":"azure-ai-foundry/grok-4-1-fast-reasoning","name":"Grok 4.1 Fast Reasoning (Azure AI Foundry)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"azure-ai-foundry/grok-4-1-fast-non-reasoning":{"id":"azure-ai-foundry/grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning (Azure AI Foundry)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"azure-ai-foundry/grok-4-3":{"id":"azure-ai-foundry/grok-4-3","name":"Grok 4.3 (Azure AI Foundry)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":20000,"output":8192},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3 (Meta)","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1 (Meta)","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2 (Meta)","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"azure/gpt-5.4":{"id":"azure/gpt-5.4","name":"GPT-5.4 (Azure)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"azure/gpt-5.4-pro":{"id":"azure/gpt-5.4-pro","name":"GPT-5.4 Pro (Azure)","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.4-pro"},"azure/gpt-5.4-nano":{"id":"azure/gpt-5.4-nano","name":"GPT-5.4 Nano (Azure)","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"azure/gpt-5.2-codex":{"id":"azure/gpt-5.2-codex","name":"GPT-5.2 Codex (Azure)","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"azure/gpt-5.1-codex":{"id":"azure/gpt-5.1-codex","name":"GPT-5.1 Codex (Azure)","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":1.25,"output":10},"canonical_model_id":"openai/gpt-5.1-codex"},"azure/gpt-4o":{"id":"azure/gpt-4o","name":"GPT-4o (Azure)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"azure/gpt-5-mini":{"id":"azure/gpt-5-mini","name":"GPT-5 Mini (Azure)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"azure/gpt-5.3-codex":{"id":"azure/gpt-5.3-codex","name":"GPT-5.3 Codex (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"azure/gpt-4.1-nano":{"id":"azure/gpt-4.1-nano","name":"GPT-4.1 Nano (Azure)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"azure/gpt-5-nano":{"id":"azure/gpt-5-nano","name":"GPT-5 Nano (Azure)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"azure/gpt-6.1-sol":{"id":"azure/gpt-6.1-sol","name":"GPT-6.1 Sol (Azure)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"azure/gpt-6-astra":{"id":"azure/gpt-6-astra","name":"GPT-6 Astra (Azure)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"openai/gpt-6-astra"},"azure/gpt-5.1":{"id":"azure/gpt-5.1","name":"GPT-5.1 (Azure)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"azure/gpt-5.4-mini":{"id":"azure/gpt-5.4-mini","name":"GPT-5.4 Mini (Azure)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"azure/gpt-5.6-luna":{"id":"azure/gpt-5.6-luna","name":"GPT-5.6 Luna (Azure)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"azure/gpt-5.2":{"id":"azure/gpt-5.2","name":"GPT-5.2 (Azure)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"azure/gpt-5.5":{"id":"azure/gpt-5.5","name":"GPT-5.5 (Azure)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"azure/gpt-4.1":{"id":"azure/gpt-4.1","name":"GPT-4.1 (Azure)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"azure/gpt-4.1-mini":{"id":"azure/gpt-4.1-mini","name":"GPT-4.1 Mini (Azure)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"azure/gpt-6-luna":{"id":"azure/gpt-6-luna","name":"GPT-6 Luna (Azure)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"azure/gpt-5.6-terra":{"id":"azure/gpt-5.6-terra","name":"GPT-5.6 Terra (Azure)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"azure/gpt-oss-120b":{"id":"azure/gpt-oss-120b","name":"GPT OSS 120B (Azure)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"azure/gpt-5.1-codex-mini":{"id":"azure/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"azure/gpt-5":{"id":"azure/gpt-5","name":"GPT-5 (Azure)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"azure/gpt-5.6-sol":{"id":"azure/gpt-5.6-sol","name":"GPT-5.6 Sol (Azure)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"azure/gpt-6-sol":{"id":"azure/gpt-6-sol","name":"GPT-6 Sol (Azure)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"alibaba/qwen-flash":{"id":"alibaba/qwen-flash","name":"Qwen Flash (Alibaba Cloud)","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625},"canonical_model_id":"alibaba/qwen-flash"},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen3.7 Max (Alibaba Cloud)","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"alibaba/qwen3-vl-plus":{"id":"alibaba/qwen3-vl-plus","name":"Qwen3 VL Plus (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"cache_read":0.04,"cache_write":0.25},"canonical_model_id":"alibaba/qwen3-vl-plus"},"alibaba/qwen3.5-27b":{"id":"alibaba/qwen3.5-27b","name":"Qwen3.5 27B (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-27b"},"alibaba/qwen-max":{"id":"alibaba/qwen-max","name":"Qwen Max (Alibaba Cloud)","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4},"canonical_model_id":"alibaba/qwen-max"},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen3.8 Max (Alibaba Cloud)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"alibaba/kimi-k3":{"id":"alibaba/kimi-k3","name":"Kimi K3 (Alibaba Cloud)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"alibaba/glm-5":{"id":"alibaba/glm-5","name":"GLM-5 (Alibaba Cloud)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58},"canonical_model_id":"zhipuai/glm-5"},"alibaba/deepseek-v4.1-flash":{"id":"alibaba/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Alibaba Cloud)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"alibaba/qwen-plus":{"id":"alibaba/qwen-plus","name":"Qwen Plus (Alibaba Cloud)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen-plus"},"alibaba/qwen3.7-flash":{"id":"alibaba/qwen3.7-flash","name":"Qwen3.7 Flash (Alibaba Cloud)","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375},"canonical_model_id":"alibaba/qwen3.7-flash"},"alibaba/qwen3.5-122b-a10b":{"id":"alibaba/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"alibaba/kimi-k2.5":{"id":"alibaba/kimi-k2.5","name":"Kimi K2.5 (Alibaba Cloud)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.574,"output":3.011},"canonical_model_id":"moonshotai/kimi-k2.5"},"alibaba/qwen3.6-35b-a3b":{"id":"alibaba/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B (Alibaba Cloud)","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.375,"output":2.25},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"alibaba/qwen3.6-flash":{"id":"alibaba/qwen3.6-flash","name":"Qwen3.6 Flash (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125},"canonical_model_id":"alibaba/qwen3.6-flash"},"alibaba/qwen3-coder-flash":{"id":"alibaba/qwen3-coder-flash","name":"Qwen3 Coder Flash (Alibaba Cloud)","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":997952,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"alibaba/qwen3-coder-flash"},"alibaba/qwen3.8-flash":{"id":"alibaba/qwen3.8-flash","name":"Qwen3.8 Flash (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"alibaba/qwen35-397b-a17b":{"id":"alibaba/qwen35-397b-a17b","name":"Qwen3.5 397B A17B (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"alibaba/qwen3.5-35b-a3b":{"id":"alibaba/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B (Alibaba Cloud)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"alibaba/glm-5.2":{"id":"alibaba/glm-5.2","name":"GLM-5.2 (Alibaba Cloud)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28},"canonical_model_id":"zhipuai/glm-5.2"},"alibaba/deepseek-v4-pro":{"id":"alibaba/deepseek-v4-pro","name":"DeepSeek V4 Pro (Alibaba Cloud)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":2.4,"output":4.8,"cache_read":0.2},"canonical_model_id":"deepseek/deepseek-v4-pro"},"alibaba/qwen3.6-plus":{"id":"alibaba/qwen3.6-plus","name":"Qwen3.6 Plus (Alibaba Cloud)","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"alibaba/qwen3.6-plus"},"alibaba/qwen-plus-latest":{"id":"alibaba/qwen-plus-latest","name":"Qwen Plus Latest (Alibaba Cloud)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-09-09","last_updated":"2024-09-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5}},"alibaba/glm-5.3":{"id":"alibaba/glm-5.3","name":"GLM-5.3 (Alibaba Cloud)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28},"canonical_model_id":"zhipuai/glm-5.3"},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen3.7 Plus (Alibaba Cloud)","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"alibaba/deepseek-v4-flash":{"id":"alibaba/deepseek-v4-flash","name":"DeepSeek V4 Flash (Alibaba Cloud)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.2,"output":0.4,"cache_read":0.04},"canonical_model_id":"deepseek/deepseek-v4-flash"},"baidu/glm-5":{"id":"baidu/glm-5","name":"GLM-5 (Baidu)","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"baidu/deepseek-v4.1-flash":{"id":"baidu/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Baidu)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"baidu/kimi-k2.6":{"id":"baidu/kimi-k2.6","name":"Kimi K2.6 (Baidu)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"baidu/glm-5.2":{"id":"baidu/glm-5.2","name":"GLM-5.2 (Baidu)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"baidu/glm-5.1":{"id":"baidu/glm-5.1","name":"GLM-5.1 (Baidu)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"baidu/deepseek-v4-pro":{"id":"baidu/deepseek-v4-pro","name":"DeepSeek V4 Pro (Baidu)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.042},"canonical_model_id":"deepseek/deepseek-v4-pro"},"baidu/glm-5.3":{"id":"baidu/glm-5.3","name":"GLM-5.3 (Baidu)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"baidu/deepseek-v4-flash":{"id":"baidu/deepseek-v4-flash","name":"DeepSeek V4 Flash (Baidu)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash"},"gonka24/glm-5.3-flash":{"id":"gonka24/glm-5.3-flash","name":"GLM-5.3 Flash (Gonka24)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":16384},"cost":{"input":0.15,"output":0.3,"cache_read":0.035},"canonical_model_id":"zhipuai/glm-5.3-flash"},"gonka24/minimax-m2.7":{"id":"gonka24/minimax-m2.7","name":"MiniMax M2.7 (Gonka24)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.08,"output":0.32,"cache_read":0.017},"canonical_model_id":"minimax/MiniMax-M2.7"},"gonka24/deepseek-v4-flash":{"id":"gonka24/deepseek-v4-flash","name":"DeepSeek V4 Flash (Gonka24)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":390000,"output":16384},"cost":{"input":0.065,"output":0.116,"cache_read":0.012},"canonical_model_id":"deepseek/deepseek-v4-flash"},"reka-ai/reka-edge-2603":{"id":"reka-ai/reka-edge-2603","name":"Reka Edge 2603 (reka-ai)","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-09","last_updated":"2026-10-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"cost":{"input":0.1,"output":0.1}},"reka-ai/qwen3.8-27b":{"id":"reka-ai/qwen3.8-27b","name":"Qwen3.8 27B (reka-ai)","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":2.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-27b"},"reka-ai/glm-5.3-flash":{"id":"reka-ai/glm-5.3-flash","name":"GLM-5.3 Flash (reka-ai)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.5,"cache_read":0.015},"canonical_model_id":"zhipuai/glm-5.3-flash"},"reka-ai/deepseek-v4-pro":{"id":"reka-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro (reka-ai)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.2,"output":3.3,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4-pro"},"reka-ai/glm-5.3":{"id":"reka-ai/glm-5.3","name":"GLM-5.3 (reka-ai)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.17,"output":3.96,"cache_read":0.234},"canonical_model_id":"zhipuai/glm-5.3"},"reka-ai/deepseek-v4-flash":{"id":"reka-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash (reka-ai)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.11,"output":0.66,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash"},"bytedance/seed-1-6-flash-250715":{"id":"bytedance/seed-1-6-flash-250715","name":"Seed 1.6 Flash (250715) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.07,"output":0.3,"cache_read":0.015}},"bytedance/seed-2-0-code-preview-260328":{"id":"bytedance/seed-2-0-code-preview-260328","name":"Seed 2.0 Code Preview (260328) (ByteDance)","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"bytedance/seed-1-6-250915":{"id":"bytedance/seed-1-6-250915","name":"Seed 1.6 (250915) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/seed-2-0-mini-260428":{"id":"bytedance/seed-2-0-mini-260428","name":"Seed 2.0 Mini (260428) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4,"cache_read":0.02}},"bytedance/seed-2-0-pro-260328":{"id":"bytedance/seed-2-0-pro-260328","name":"Seed 2.0 Pro (260328) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"bytedance/seed-1-8-251228":{"id":"bytedance/seed-1-8-251228","name":"Seed 1.8 (251228) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/glm-4.7":{"id":"bytedance/glm-4.7","name":"GLM-4.7 (ByteDance)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"bytedance/seed-1-6-250615":{"id":"bytedance/seed-1-6-250615","name":"Seed 1.6 (250615) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/glm-5.2":{"id":"bytedance/glm-5.2","name":"GLM-5.2 (ByteDance)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"bytedance/seed-2-0-lite-260428":{"id":"bytedance/seed-2-0-lite-260428","name":"Seed 2.0 Lite (260428) (ByteDance)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"bytedance/deepseek-v4-pro":{"id":"bytedance/deepseek-v4-pro","name":"DeepSeek V4 Pro (ByteDance)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro"},"bytedance/deepseek-v3.2":{"id":"bytedance/deepseek-v3.2","name":"DeepSeek V3.2 (ByteDance)","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.28,"output":0.42,"cache_read":0.056},"canonical_model_id":"deepseek/deepseek-v3.2"},"bytedance/gpt-oss-120b":{"id":"bytedance/gpt-oss-120b","name":"GPT OSS 120B (ByteDance)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.1,"output":0.5,"cache_read":0.02},"canonical_model_id":"openai/gpt-oss-120b"},"bytedance/deepseek-v4-flash":{"id":"bytedance/deepseek-v4-flash","name":"DeepSeek V4 Flash (ByteDance)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash"},"sciforium/deepseek-v4.1-flash":{"id":"sciforium/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (sciforium)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.246,"output":0.944,"cache_read":0.012},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"xai/grok-4-5":{"id":"xai/grok-4-5","name":"Grok 4.5 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"xai/grok-build-0-1":{"id":"xai/grok-build-0-1","name":"Grok Build 0.1 (xAI)","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"xai/grok-4":{"id":"xai/grok-4","name":"Grok 4 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"xai/grok-4-20-beta-0309-non-reasoning":{"id":"xai/grok-4-20-beta-0309-non-reasoning","name":"Grok 4.20 Beta Non-Reasoning (0309) (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4-3":{"id":"xai/grok-4-3","name":"Grok 4.3 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4-20-beta-0309-reasoning":{"id":"xai/grok-4-20-beta-0309-reasoning","name":"Grok 4.20 Beta Reasoning (0309) (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"xai/grok-4-6":{"id":"xai/grok-4-6","name":"Grok 4.6 (xAI)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"xai/grok-4-7":{"id":"xai/grok-4-7","name":"Grok 4.7 (xAI)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"ranoai/deepseek-v4-flash":{"id":"ranoai/deepseek-v4-flash","name":"DeepSeek V4 Flash (RanoAI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"canopywave/kimi-k3":{"id":"canopywave/kimi-k3","name":"Kimi K3 (CanopyWave)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"canopywave/kimi-k2.6":{"id":"canopywave/kimi-k2.6","name":"Kimi K2.6 (CanopyWave)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"canopywave/glm-5.2":{"id":"canopywave/glm-5.2","name":"GLM-5.2 (CanopyWave)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"canopywave/deepseek-v4-pro":{"id":"canopywave/deepseek-v4-pro","name":"DeepSeek V4 Pro (CanopyWave)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.74,"output":3.48,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4-pro"},"canopywave/deepseek-v4-flash":{"id":"canopywave/deepseek-v4-flash","name":"DeepSeek V4 Flash (CanopyWave)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash"},"fireworks/glm-5.3-flash":{"id":"fireworks/glm-5.3-flash","name":"GLM-5.3 Flash (Fireworks AI)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"fireworks/kimi-k3":{"id":"fireworks/kimi-k3","name":"Kimi K3 (Fireworks AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":1040384},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"fireworks/deepseek-v4.1-flash":{"id":"fireworks/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Fireworks AI)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"fireworks/kimi-k3-fast":{"id":"fireworks/kimi-k3-fast","name":"Kimi K3 Fast (Fireworks AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":1040384},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"fireworks/deepseek-v4-pro":{"id":"fireworks/deepseek-v4-pro","name":"DeepSeek V4 Pro (Fireworks AI)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro"},"fireworks/glm-5.3":{"id":"fireworks/glm-5.3","name":"GLM-5.3 (Fireworks AI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"fireworks/deepseek-v4-flash":{"id":"fireworks/deepseek-v4-flash","name":"DeepSeek V4 Flash (Fireworks AI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash"},"sakana/fugu-max":{"id":"sakana/fugu-max","name":"Fugu Max (Sakana AI)","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25}},"sakana/fugu-ultra-v2.0":{"id":"sakana/fugu-ultra-v2.0","name":"Fugu Ultra v2.0 (Sakana AI)","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra (Sakana AI)","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"sakana/fugu-ultra"},"scx-ai/gemma-4-31b-it":{"id":"scx-ai/gemma-4-31b-it","name":"Gemma 4 31B IT (SCX.ai (Turbo))","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":0.91},"canonical_model_id":"google/gemma-4-31b-it"},"scx-ai/llama-4-maverick-17b-instruct":{"id":"scx-ai/llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct (SCX.ai (Turbo))","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.53,"output":1.62},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"scx-ai/qwen3-32b":{"id":"scx-ai/qwen3-32b","name":"Qwen3 32B (SCX.ai (Turbo))","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.36,"output":0.87},"canonical_model_id":"alibaba/qwen3-32b"},"scx-ai/minimax-m2.7":{"id":"scx-ai/minimax-m2.7","name":"MiniMax M2.7 (SCX.ai (Turbo))","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05},"canonical_model_id":"minimax/MiniMax-M2.7"},"scx-ai/gpt-oss-120b":{"id":"scx-ai/gpt-oss-120b","name":"GPT OSS 120B (SCX.ai (Turbo))","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.17,"output":0.55},"canonical_model_id":"openai/gpt-oss-120b"},"together-ai/qwen3.8-2.4t-a95b":{"id":"together-ai/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B (Together AI)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"output":909000},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"together-ai/glm-5.3-flash":{"id":"together-ai/glm-5.3-flash","name":"GLM-5.3 Flash (Together AI)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943717},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"together-ai/muse-glimmer-30b":{"id":"together-ai/muse-glimmer-30b","name":"Muse Glimmer 30B (Together AI)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"together-ai/kimi-k3":{"id":"together-ai/kimi-k3","name":"Kimi K3 (Together AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"together-ai/deepseek-v4.1-flash":{"id":"together-ai/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Together AI)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"together-ai/glm-4.7":{"id":"together-ai/glm-4.7","name":"GLM-4.7 (Together AI)","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.45,"output":2},"canonical_model_id":"zhipuai/glm-4.7"},"together-ai/minimax-m3":{"id":"together-ai/minimax-m3","name":"MiniMax M3 (Together AI)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"together-ai/deepseek-v4-pro":{"id":"together-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro (Together AI)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":163840},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4-pro"},"together-ai/gpt-oss-120b":{"id":"together-ai/gpt-oss-120b","name":"GPT OSS 120B (Together AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"together-ai/glm-5.3":{"id":"together-ai/glm-5.3","name":"GLM-5.3 (Together AI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943717},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"together-ai/deepseek-v4-flash":{"id":"together-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash (Together AI)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo V2.6 Pro (Xiaomi)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo V2.5 (Xiaomi)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro (Xiaomi)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo V2.6 Flash (Xiaomi)","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"quartz/gemini-3.1-pro-preview":{"id":"quartz/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Quartz)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5 (MiniMax)","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning (MiniMax)","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48}},"minimax/minimax-text-01":{"id":"minimax/minimax-text-01","name":"MiniMax Text 01 (MiniMax)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7 (MiniMax)","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3 (MiniMax)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 Highspeed (MiniMax)","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 Highspeed (MiniMax)","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1 (MiniMax)","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.27,"output":1.1},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2 (MiniMax)","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2"},"inference.net/glm-5.3-flash":{"id":"inference.net/glm-5.3-flash","name":"GLM-5.3 Flash (Inference.net)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.09,"output":0.28,"cache_read":0.02},"canonical_model_id":"zhipuai/glm-5.3-flash"},"inference.net/llama-3.2-11b-instruct":{"id":"inference.net/llama-3.2-11b-instruct","name":"Llama 3.2 11B Instruct (Inference.net)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.33}},"inference.net/glm-5.3":{"id":"inference.net/glm-5.3","name":"GLM-5.3 (Inference.net)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.9,"output":3,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-5.3"},"azure-anthropic/claude-opus-5-5":{"id":"azure-anthropic/claude-opus-5-5","name":"Claude Opus 5.5 (Azure Anthropic)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"azure-anthropic/claude-fable-5-1":{"id":"azure-anthropic/claude-fable-5-1","name":"Claude Fable 5.1 (Azure Anthropic)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"azure-anthropic/claude-opus-5":{"id":"azure-anthropic/claude-opus-5","name":"Claude Opus 5 (Azure Anthropic)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"azure-anthropic/claude-fable-5":{"id":"azure-anthropic/claude-fable-5","name":"Claude Fable 5 (Azure Anthropic)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"azure-anthropic/claude-opus-4-8":{"id":"azure-anthropic/claude-opus-4-8","name":"Claude Opus 4.8 (Azure Anthropic)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"azure-anthropic/claude-sonnet-5":{"id":"azure-anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Azure Anthropic)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"azure-anthropic/claude-opus-4-6":{"id":"azure-anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Azure Anthropic)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"azure-anthropic/claude-sonnet-5-5":{"id":"azure-anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5 (Azure Anthropic)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"azure-anthropic/claude-opus-4-7":{"id":"azure-anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Azure Anthropic)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"atria/atria-dawn-preview":{"id":"atria/atria-dawn-preview","name":"Atria Dawn Preview (Atria)","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large Latest (Mistral AI)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12},"canonical_model_id":"mistral/mistral-large-latest"},"mistral/ministral-8b-2512":{"id":"mistral/ministral-8b-2512","name":"Ministral 8B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.15}},"mistral/mistral-large-4":{"id":"mistral/mistral-large-4","name":"Mistral Large 4 (Mistral AI)","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"canonical_model_id":"mistral/mistral-large-4"},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2 (Mistral AI)","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-2512"},"mistral/mistral-medium-3-5":{"id":"mistral/mistral-medium-3-5","name":"Mistral Medium 3.5 (Mistral AI)","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5}},"mistral/mistral-small-2603":{"id":"mistral/mistral-small-2603","name":"Mistral Small 4 (Mistral AI)","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"mistral/mistral-small-2603"},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3 (Mistral AI)","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-2512"},"mistral/ministral-14b-2512":{"id":"mistral/ministral-14b-2512","name":"Ministral 14B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.2}},"mistral/mistral-small-2506":{"id":"mistral/mistral-small-2506","name":"Mistral Small 3.2 (Mistral AI)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/mistral-small-2506"},"mistral/ministral-3b-2512":{"id":"mistral/ministral-3b-2512","name":"Ministral 3B (Mistral AI)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1}},"mistral/glm-5.3":{"id":"mistral/glm-5.3","name":"GLM-5.3 (Mistral AI)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.3"},"mistral/codestral-2508":{"id":"mistral/codestral-2508","name":"Codestral (Mistral AI)","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"vertex-anthropic/claude-haiku-4-5":{"id":"vertex-anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (Vertex AI (Anthropic))","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"vertex-anthropic/claude-sonnet-4-5":{"id":"vertex-anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (Vertex AI (Anthropic))","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"vertex-anthropic/claude-opus-4-5-20251101":{"id":"vertex-anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (Vertex AI (Anthropic))","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"vertex-anthropic/claude-sonnet-5":{"id":"vertex-anthropic/claude-sonnet-5","name":"Claude Sonnet 5 (Vertex AI (Anthropic))","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"vertex-anthropic/claude-opus-4-6":{"id":"vertex-anthropic/claude-opus-4-6","name":"Claude Opus 4.6 (Vertex AI (Anthropic))","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"vertex-anthropic/claude-sonnet-4-6":{"id":"vertex-anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Vertex AI (Anthropic))","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"vertex-anthropic/claude-opus-4-7":{"id":"vertex-anthropic/claude-opus-4-7","name":"Claude Opus 4.7 (Vertex AI (Anthropic))","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"vertex-openai/qwen3-235b-a22b-instruct-2507":{"id":"vertex-openai/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507 (Vertex AI (OpenAI-compatible))","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.22,"output":0.88},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"vertex-openai/qwen3-next-80b-a3b-thinking":{"id":"vertex-openai/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking (Vertex AI (OpenAI-compatible))","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"vertex-openai/glm-5":{"id":"vertex-openai/glm-5","name":"GLM-5 (Vertex AI (OpenAI-compatible))","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":32768},"cost":{"input":1,"output":3.2,"cache_read":0.1},"canonical_model_id":"zhipuai/glm-5"},"vertex-openai/qwen3-coder-480b-a35b-instruct":{"id":"vertex-openai/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct (Vertex AI (OpenAI-compatible))","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.8,"cache_read":0.022},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"vertex-openai/kimi-k2-thinking":{"id":"vertex-openai/kimi-k2-thinking","name":"Kimi K2 Thinking (Vertex AI (OpenAI-compatible))","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":2.5,"cache_read":0.06},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"vertex-openai/qwen3-next-80b-a3b-instruct":{"id":"vertex-openai/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct (Vertex AI (OpenAI-compatible))","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"vertex-openai/glm-4.7":{"id":"vertex-openai/glm-4.7","name":"GLM-4.7 (Vertex AI (OpenAI-compatible))","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.7"},"vertex-openai/grok-4-20-non-reasoning":{"id":"vertex-openai/grok-4-20-non-reasoning","name":"Grok 4.20 Non-Reasoning (Vertex AI (OpenAI-compatible))","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"vertex-openai/grok-4-6":{"id":"vertex-openai/grok-4-6","name":"Grok 4.6 (Vertex AI (OpenAI-compatible))","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"vertex-openai/grok-4-20-reasoning":{"id":"vertex-openai/grok-4-20-reasoning","name":"Grok 4.20 Reasoning (Vertex AI (OpenAI-compatible))","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"vertex-openai/deepseek-v3.2":{"id":"vertex-openai/deepseek-v3.2","name":"DeepSeek V3.2 (Vertex AI (OpenAI-compatible))","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.56,"output":1.68,"cache_read":0.056},"canonical_model_id":"deepseek/deepseek-v3.2"},"google-vertex/gemini-3.6-flash":{"id":"google-vertex/gemini-3.6-flash","name":"Gemini 3.6 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.6-flash"},"google-vertex/gemini-3.5-flash-lite":{"id":"google-vertex/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google-vertex/gemini-3.1-pro-preview":{"id":"google-vertex/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro (Preview) (Google Vertex AI)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google-vertex/gemini-3.5-flash":{"id":"google-vertex/gemini-3.5-flash","name":"Gemini 3.5 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash"},"google-vertex/gemini-2.5-pro":{"id":"google-vertex/gemini-2.5-pro","name":"Gemini 2.5 Pro (Google Vertex AI)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google-vertex/gemini-2.5-flash":{"id":"google-vertex/gemini-2.5-flash","name":"Gemini 2.5 Flash (Google Vertex AI)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"google-vertex/gemini-3.7-flash":{"id":"google-vertex/gemini-3.7-flash","name":"Gemini 3.7 Flash (Google Vertex AI)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.7-flash"},"google-vertex/gemini-3-flash-preview":{"id":"google-vertex/gemini-3-flash-preview","name":"Gemini 3 Flash (Preview) (Google Vertex AI)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"google-vertex/gemini-3.8-flash":{"id":"google-vertex/gemini-3.8-flash","name":"Gemini 3.8 Flash (Google Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"google-vertex/gemini-2.5-flash-lite":{"id":"google-vertex/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite (Google Vertex AI)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google-vertex/gemini-3.1-flash-lite":{"id":"google-vertex/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite (Google Vertex AI)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.1-flash-lite"},"aws-mantle/gpt-6-astra":{"id":"aws-mantle/gpt-6-astra","name":"GPT-6 Astra (AWS Mantle)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"openai/gpt-6-astra"},"aws-mantle/gpt-5.6-luna":{"id":"aws-mantle/gpt-5.6-luna","name":"GPT-5.6 Luna (AWS Mantle)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":921600,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275},"canonical_model_id":"openai/gpt-5.6-luna"},"aws-mantle/gpt-5.6-terra":{"id":"aws-mantle/gpt-5.6-terra","name":"GPT-5.6 Terra (AWS Mantle)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":921600,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"openai/gpt-5.6-terra"},"aws-mantle/gpt-5.6-sol":{"id":"aws-mantle/gpt-5.6-sol","name":"GPT-5.6 Sol (AWS Mantle)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":921600,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4 (OpenAI)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro (OpenAI)","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo (OpenAI)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-4o-transcribe":{"id":"openai/gpt-4o-transcribe","name":"GPT-4o Transcribe (OpenAI)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":2000},"cost":{"input":2.5,"output":10}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro (OpenAI)","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano (OpenAI)","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o (OpenAI)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini (OpenAI)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro (OpenAI)","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4 Mini (OpenAI)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3 Mini (OpenAI)","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4 (OpenAI)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex (OpenAI)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 Nano (OpenAI)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano (OpenAI)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"o1 (OpenAI)","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro (OpenAI)","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol (OpenAI)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra (OpenAI)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-03","last_updated":"2026-09-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1 (OpenAI)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o Mini (OpenAI)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini (OpenAI)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna (OpenAI)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2 (OpenAI)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5 (OpenAI)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1 (OpenAI)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 Mini (OpenAI)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna (OpenAI)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-4o-mini-transcribe":{"id":"openai/gpt-4o-mini-transcribe","name":"GPT-4o Mini Transcribe (OpenAI)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":2000},"cost":{"input":1.25,"output":5}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra (OpenAI)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo (OpenAI)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/o3":{"id":"openai/o3","name":"o3 (OpenAI)","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5 (OpenAI)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol (OpenAI)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol (OpenAI)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3 (Moonshot AI)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed (Moonshot AI)","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6 (Moonshot AI)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshot/kimi-k2.5":{"id":"moonshot/kimi-k2.5","name":"Kimi K2.5 (Moonshot AI)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code (Moonshot AI)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"above":{"id":"above","env":["ABOVE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.above.dev/v1","name":"above.dev","doc":"https://above.dev/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo V2.6 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.5077,"output":1.0154,"cache_read":0.0042},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.165,"output":0.55,"cache_read":0.0319},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM 5.2 Fast","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.31,"output":7.26,"cache_read":0.231},"canonical_model_id":"zhipuai/glm-5.2"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen 3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2.2,"output":6.6,"cache_read":0.275},"canonical_model_id":"alibaba/qwen3.8-max"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.165,"output":0.66,"reasoning":0.66,"cache_read":0.0033},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"mimo-v2.6-pro-ultraspeed":{"id":"mimo-v2.6-pro-ultraspeed","name":"MiMo V2.6 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":5.0769,"output":10.1538,"cache_read":0.0423},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo V2.6 Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1692,"output":0.3385,"cache_read":0.0034},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.54,"output":4.84,"cache_read":0.154},"canonical_model_id":"zhipuai/glm-5.2"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.726,"output":2.178,"reasoning":2.178,"cache_read":0.0242},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"status":"deprecated","cost":{"input":0.165,"output":0.66,"reasoning":0.66,"cache_read":0.0033},"canonical_model_id":"deepseek/deepseek-v4.1-flash"}}},"kilo":{"id":"kilo","env":["KILO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.kilo.ai/api/gateway","name":"Kilo Gateway","doc":"https://kilo.ai","models":{"sao10k/l3-lunaris-8b":{"id":"sao10k/l3-lunaris-8b","name":"Sao10K: Llama 3 8B Lunaris","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05}},"sao10k/l3.3-euryale-70b":{"id":"sao10k/l3.3-euryale-70b","name":"Sao10K: Llama 3.3 Euryale 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.65,"output":0.75}},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-28","last_updated":"2024-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85}},"stealth/claude-opus-4.6":{"id":"stealth/claude-opus-4.6","name":"Stealth: Claude Opus 4.6 (20% off)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}},"stealth/claude-opus-4.7":{"id":"stealth/claude-opus-4.7","name":"Stealth: Claude Opus 4.7 (20% off)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}},"stealth/claude-opus-4.8":{"id":"stealth/claude-opus-4.8","name":"Stealth: Claude Opus 4.8 (20% off)","description":"Your prompts and completions may be retained and used to train or improve the provider's services. This third-party-served variant of Claude Opus 4.8 is offered at 20% lower cost than standard Claude Opus 4.8 pricing and is not served by Anthropic or Kilo Code.","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"reasoning":0,"cache_read":0.4,"cache_write":5}},"stealth/glyph-cluster":{"id":"stealth/glyph-cluster","name":"Stealth: Glyph Cluster (free)","description":"Your prompts and completions may be retained and used to train or improve the provider's services. Glyph Cluster is a reasoning model for coding and long-context analysis, served through Vercel AI Gateway during its stealth period at no cost. It supports function calling and streaming, takes text input only, and does not support structured outputs. Zero Data Retention is not available for this model.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"reasoning":0,"cache_read":0}},"stealth/claude-sonnet-4.6":{"id":"stealth/claude-sonnet-4.6","name":"Stealth: Claude Sonnet 4.6 (20% off)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.4,"output":12,"reasoning":0,"cache_read":0.24,"cache_write":3}},"stealth/qwen3.6-plus":{"id":"stealth/qwen3.6-plus","name":"Stealth: Qwen3.6 Plus (50% off)","description":"Your prompts and completions may be retained and used to train or improve the provider's services. This third-party-served variant of Qwen3.6 Plus is offered at 50% lower cost than standard Qwen3.6 Plus pricing and is not served by Alibaba or Kilo Code. Note: a surcharge applies to long-context workloads exceeding 256K input tokens.","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":0,"cache_read":0.025,"cache_write":0.3125}},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"ByteDance Seed: Seed 1.6 Flash (retires Nov 11)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"ByteDance Seed: Seed 2.1 Turbo","description":"Seed 2.1 Turbo is a multimodal model from ByteDance Seed for coding and long-horizon agent workflows. It is suited for end-to-end software delivery, multi-step task execution, and understanding visual and...","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5}},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"Seed 2.0 Code","description":"Seed 2.0 Code is a model from ByteDance Seed optimized for agentic coding. It is suited for frontend development, multilingual programming tasks, and coding-agent workflows in tools such as Claude...","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"ByteDance Seed: Seed 1.6 (retires Nov 11)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2}},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"MoonshotAI: Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.55,"output":16.5,"cache_read":0.3}},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Poolside: Laguna S 2.1 (free)","description":"Laguna S 2.1 is the latest coding agent model from [Poolside](). Laguna S 2.1 is a 118B total parameter model with 8B active parameters, scoring 70.2% on Terminal-Bench 2.1 and...","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Poolside: Laguna S 2.1 (retires Oct 31)","description":"Laguna S 2.1 is the latest coding agent model from [Poolside](). Laguna S 2.1 is a 118B total parameter model with 8B active parameters, scoring 70.2% on Terminal-Bench 2.1 and...","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01}},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Poolside: Laguna XS 2.1 (free)","description":"Laguna XS 2.1 is the latest coding agent model in the 33B-A3B category from [Poolside](https://poolside.ai/) and a step forward from their Laguna XS.2 model (released in April 2026). It combines...","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Poolside: Laguna XS 2.1 (retires Oct 31)","description":"Laguna XS 2.1 is the latest coding agent model in the 33B-A3B category from [Poolside](https://poolside.ai/) and a step forward from their Laguna XS.2 model (released in April 2026). It combines...","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.2,"cache_read":0.05}},"prism-ml/ternary-bonsai-2-27b":{"id":"prism-ml/ternary-bonsai-2-27b","name":"PrismML: Ternary Bonsai 2 27B","description":"Bonsai 2 27B is a 27B-parameter reasoning model from PrismML derived from Qwen3.8-27B. It supports coding, mathematics, tool calling, and image understanding with a 262K-token context window. Ternary compression shrinks...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-haiku-5.5":{"id":"anthropic/claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Claude Haiku 5.5 is Anthropic's small, fast model for high-volume, cost-sensitive work such as summarization, subagents, and browser use. It succeeds Claude Haiku 4.5 with stronger coding, computer use, and...","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Claude Opus 4.8 is Anthropic's most capable generally available model in the Opus family. It supports text, image, and file inputs with text output, with reasoning support and a 1M-token...","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Claude Opus 5 is Anthropic’s flagship model for demanding reasoning, coding, and long-horizon agentic work. It is particularly strong at end-to-end software tasks, code review and bug finding, visual analysis...","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Claude Sonnet 5.5 is Anthropic's Sonnet-class model for well-scoped everyday work, succeeding Claude Sonnet 5 as a direct upgrade. It is especially strong at building features, fixing bugs, and producing...","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude Fable 5.1 improves on Claude Fable 5 across the board, with the biggest gains in agentic coding, long-running agentic workflows, and knowledge work: long code refactors, front-end and visual...","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude Fable 5 is a Mythos-class model from Anthropic, built for autonomous knowledge work and coding. It supports text, image, and file inputs with text output, with reasoning support and...","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Anthropic: Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Sonnet 5 is Anthropic's most capable Sonnet-class model, with frontier performance across coding, agents, and professional work. It supports adaptive thinking with selectable reasoning effort levels (low, medium, high, max,...","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude Opus 5.5 is Anthropic's flagship model for demanding reasoning, coding, and long-horizon agentic work, succeeding Claude Opus 5. It is particularly strong at multi-step changes in large codebases, code...","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"nex-agi/nex-n2.5-mini":{"id":"nex-agi/nex-n2.5-mini","name":"Nex AGI: Nex-N2.5-Mini","description":"Nex-N2.5 is an agentic model built to turn goals into working, verified outcomes. Its core strength is agentic coding within a visual feedback loop: it can explore codebases, implement multi-file...","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025}},"nex-agi/nex-n2.5-pro":{"id":"nex-agi/nex-n2.5-pro","name":"Nex AGI: Nex-N2.5-Pro","description":"Nex-N2.5 is an agentic model built to turn goals into working, verified outcomes. Its core strength is agentic coding within a visual feedback loop: it can explore codebases, implement multi-file...","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"cohere/command-r-08-2024"},"cohere/command-a-plus":{"id":"cohere/command-a-plus","name":"Cohere: Command A+","description":"Command A+ is Cohere's flagship model for enterprise agentic workflows. It accepts text and image inputs with a 192K context window, supports native tool calling with strict tool schemas, structured...","family":"command-a","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":64000},"cost":{"input":0.3,"output":1.5,"cache_read":0.15}},"cohere/command-a":{"id":"cohere/command-a","name":"Cohere: Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10}},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"Cohere: North Mini Code (free)","description":"North Mini Code is Cohere's first agentic coding model and the debut of its North family. A sparse mixture-of-experts model with 30B total parameters and 3B active, it is optimized...","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-12-2024"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-r-plus-08-2024"},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek: DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":32768},"cost":{"input":0.25,"output":0.95,"cache_read":0.13}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"DeepSeek V4 Flash 0731 is a sparse mixture-of-experts model from DeepSeek, with 13B active parameters out of 284B total. This re-post-trained revision is suited for coding, reasoning, and agent workflows.","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash is a sparse mixture-of-experts model from DeepSeek, and the cost-efficient tier of the V4.1 family. DeepSeek reports that it exceeds V4 Pro on performance, speed, and task...","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"DeepSeek V4 Flash Vision Exp is an experimental vision-enabled version of [DeepSeek V4 Flash 0731](https://openrouter.ai/deepseek/deepseek-v4-flash-0731) from DeepSeek, adding image understanding while matching the base model on text capabilities including agents,...","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.00686},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek: DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":1}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89},"canonical_model_id":"deepseek/deepseek-chat"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro 0813 is a large-scale mixture-of-experts model from DeepSeek. This is the GA release of DeepSeek V4 Pro.","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek: DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":0.41}},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":0.29,"output":1.14,"cache_read":0.11}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":1.6,"output":3.2,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5,"cache_read":0.35},"canonical_model_id":"deepseek/deepseek-r1-0528"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":147456},"cost":{"input":0.259,"output":0.8,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.03,"output":1.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash"},"unbiased/pareto-26.10-preview":{"id":"unbiased/pareto-26.10-preview","name":"Pareto 26.10 Preview","description":"Pareto is a multimodal composite model built for research, coding, and agentic workflows, while delivering frontier-level performance across a broad range of general-purpose tasks. This is a preview of the...","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03}},"unbiased/pareto":{"id":"unbiased/pareto","name":"Pareto","description":"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"canonical_model_id":"unbiased/pareto"},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06},"canonical_model_id":"tencent/hy3-preview"},"tencent/hunyuan-a13b-instruct":{"id":"tencent/hunyuan-a13b-instruct","name":"Tencent: Hunyuan A13B Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57}},"tencent/hy-mt2-30b-a3b":{"id":"tencent/hy-mt2-30b-a3b","name":"Tencent: Hy-MT2-30B-A3B","description":"Hy-MT2-30B-A3B is Tencent's flagship translation model in the Hy-MT2 family. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and...","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-1.8b":{"id":"tencent/hy-mt2-1.8b","name":"Tencent: Hy-MT2-1.8B","description":"Hy-MT2-1.8B is a compact 1.8B-parameter translation model from Tencent. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and style-guided...","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Hy3 is a 295B-parameter Mixture-of-Experts model from Tencent (21B active, 192 experts with top-8 routing) built for reasoning, agentic workflows, and real-world production use. It supports a configurable reasoning effort:...","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"tencent/hy-mt2-7b":{"id":"tencent/hy-mt2-7b","name":"Tencent: Hy-MT2-7B","description":"Hy-MT2-7B is a 7B-parameter translation model from Tencent. It supports 33 language pairs and five Chinese dialect and minority-language pairs, with workflows for structured, delimiter-based, contextual, glossary-based, and style-guided translation.","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"Tencent: Hy4 preview is a mixture-of-experts model from Tencent, with 49B active parameters out of 770B total. It is designed for coding agents, complex tool-use workflows, and productivity tasks that...","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":327680,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/llama-guard-4-12b":{"id":"meta-llama/llama-guard-4-12b","name":"Meta: Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":16384},"cost":{"input":0.18,"output":0.18}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.1875,"output":0.6525,"cache_read":0.05}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.32},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.02,"output":0.04},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201},"canonical_model_id":"meta/llama-3.2-1b-instruct"},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Meta: Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.33}},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Llama-3.1-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4},"canonical_model_id":"meta/llama-3.1-70b-instruct"},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Google: Gemini Flash Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Google: Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["audio","pdf","image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron: Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5}},"perceptron/perceptron-mk1.5":{"id":"perceptron/perceptron-mk1.5","name":"Perceptron: Perceptron Mk1.5","description":"Perceptron Mk1.5 is Perceptron's embodied reasoning model for physical agents. It accepts text, image, video, and audio input, and answers with text plus optional structured annotations: points, boxes, polygons, tracks,...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":36864,"output":8192},"cost":{"input":0.15,"output":1.5}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-4.6v"},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5.3-prime":{"id":"z-ai/glm-5.3-prime","name":"Z.ai: GLM 5.3 Prime","description":"GLM-5.3-Prime is the high-speed variant of Z.ai's GLM-5.3, inheriting its full capabilities while delivering 1.5–2× the output throughput through inference acceleration. It supports text input and output with a 1M-token...","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"GLM-5.3-Flash is a native multimodal model from Z.ai. It is suited for efficient coding and long-horizon agent tasks. Its hybrid sparse and linear attention architecture maintains accurate long-context behavior while...","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":943717},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.1},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":128000},"cost":{"input":0.6,"output":1.92,"cache_read":0.12},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"z-ai/glm-5.3-flashx":{"id":"z-ai/glm-5.3-flashx","name":"Z.ai: GLM 5.3 FlashX","description":"GLM-5.3-FlashX is the high-speed variant of Z.ai's GLM-5.3-Flash, a native multimodal model delivering inference speeds of up to 200 tokens/s. Built on the same hybrid sparse and linear attention architecture...","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.09}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.0605,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"GLM 5.2 is a large-scale reasoning model from Z.ai. It supports text input and output with a 1M-token context window, and is suited for long-horizon agent workflows, project-level software engineering,...","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"GLM-5.3 is a large-scale reasoning model from Z.ai, built for complex software engineering and long-horizon agent tasks. It supports text input and output with a 1M-token context window, and improves...","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"inference-net/schematron-v2-small":{"id":"inference-net/schematron-v2-small","name":"Inference.net: Schematron V2 Small","description":"Schematron V2 Small is a 3B-parameter HTML-to-JSON extraction model from Inference.net. It prioritizes extraction quality for complex schemas and long pages. Extraction instructions must be supplied through a JSON schema...","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05}},"inference-net/schematron-v2-turbo":{"id":"inference-net/schematron-v2-turbo","name":"Inference.net: Schematron V2 Turbo","description":"Schematron V2 Turbo is a 3B-parameter HTML-to-JSON extraction model from Inference.net. It prioritizes throughput for high-volume extraction workloads. Extraction instructions must be supplied through a JSON schema in response_format rather...","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03}},"thinkingmachines/inkling-small:free":{"id":"thinkingmachines/inkling-small:free","name":"Thinking Machines: Inkling Small (free)","description":"Inkling Small is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 12B active parameters out of 276B total. It is positioned as the smaller, more efficient member of...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Inkling Small is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 12B active parameters out of 276B total. It is positioned as the smaller, more efficient member of...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Inkling is an open-weight multimodal mixture-of-experts model from Thinking Machines Lab, with 41B active parameters out of 975B total. It is designed for general-purpose reasoning, coding, agentic and tool-use systems,...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":471859},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"canonical_model_id":"thinkingmachines/inkling"},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"Meituan: LongCat 2.0","description":"LongCat 2.0 is a sparse mixture-of-experts language model from Meituan, with 48B active parameters out of 1.6T total. It is suited for coding, repository-level changes, long-horizon problem solving, and agentic...","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048756,"output":262144},"cost":{"input":0.75,"output":3,"cache_read":0.015}},"openrouter/bodybuilder":{"id":"openrouter/bodybuilder","name":"Body Builder (beta)","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"status":"beta","cost":{"input":0,"output":0}},"openrouter/free":{"id":"openrouter/free","name":"OpenRouter Free Models Router","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32768},"cost":{"input":0,"output":0}},"openrouter/pareto-code":{"id":"openrouter/pareto-code","name":"Pareto Code Router","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-05-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65536},"cost":{"input":0,"output":0}},"openrouter/auto":{"id":"openrouter/auto","name":"Auto Router","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["audio","image","pdf","text","video"],"output":["image","text"]},"open_weights":false,"limit":{"context":2000000,"output":32768},"cost":{"input":0,"output":0}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Perplexity: Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Perplexity: Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Perplexity: Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Perplexity: Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8}},"perplexity/sonar-pro-search":{"id":"perplexity/sonar-pro-search","name":"Perplexity: Sonar Pro Search","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It is designed to keep track of information across extended tasks, work through...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer 30B is a dense, open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark and optimized for autonomous agents on consumer hardware. It is suited for long-horizon...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark 1.1 is a multimodal reasoning model from Meta, built for agentic tasks. It accepts text, images, video, audio, and PDF documents and returns text, with a 1M-token context...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a reasoning model from Meta, designed for complex agentic tasks. It accepts text, images, video, audio, and PDF documents, returns text, and offers a 1M-token context...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Meta: Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 contributor tier is a reasoning model from Meta designed for developers who want to start building at an even lower cost. It’s meaningfully cheaper than Muse Spark...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Meta: Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 Contributor is the cost-efficient contributor tier of Meta’s multimodal reasoning model for experimentation, learning, and early-stage agentic, multi-agent, and coding workflows. It is designed to track information...","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Nous: Hermes 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-18","last_updated":"2024-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7}},"nousresearch/hermes-3-llama-3.1-405b":{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Nous: Hermes 3 405B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-08-16","last_updated":"2024-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1}},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"Nous: Hermes 4 405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"nousresearch","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3}},"~z-ai/glm-flash-latest":{"id":"~z-ai/glm-flash-latest","name":"Z.ai: GLM Flash Latest","description":"This model always redirects to the latest model in the GLM Flash family.","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.032,"output":1.2,"cache_read":0.032}},"~z-ai/glm-latest":{"id":"~z-ai/glm-latest","name":"Z.ai: GLM Latest","description":"This model always redirects to the latest GLM model from Z.ai.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.079,"output":4.8,"cache_read":0.059}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"~openai/gpt-terra-latest":{"id":"~openai/gpt-terra-latest","name":"OpenAI: GPT Terra Latest","description":"This model always redirects to the latest model in the OpenAI GPT Terra family.","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5}},"~openai/gpt-luna-latest":{"id":"~openai/gpt-luna-latest","name":"OpenAI: GPT Luna Latest","description":"This model always redirects to the latest model in the OpenAI GPT Luna family.","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"~openai/gpt-sol-latest":{"id":"~openai/gpt-sol-latest","name":"OpenAI: GPT Sol Latest","description":"This model always redirects to the latest model in the OpenAI GPT Sol family.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"~openai/gpt-astra-latest":{"id":"~openai/gpt-astra-latest","name":"OpenAI: GPT Astra Latest ($$$$)","description":"This model always redirects to the latest model in the OpenAI GPT Astra family.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"OpenAI: GPT Mini Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","name":"Venice: Uncensored","description":"Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving...","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"TheDrummer: Skyfall 36B V2","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"TheDrummer: UnslopNemo 12B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-11-08","last_updated":"2024-11-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"output":819200},"cost":{"input":0.4,"output":0.4}},"thedrummer/cydonia-24b-v4.1":{"id":"thedrummer/cydonia-24b-v4.1","name":"TheDrummer: Cydonia 24B V4.1","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-09-27","last_updated":"2025-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"SpaceXAI: Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"Grok 4.7 is SpaceXAI's smartest model with frontier performance on coding, knowledge work, and STEM.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"Grok 4.5 is SpaceXAI's smartest model with frontier performance on coding, knowledge work, and STEM.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"SpaceXAI: Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"Grok 4.6 is SpaceXAI's smartest model with frontier performance on coding, knowledge work, and STEM.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Anthropic: Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5}},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Anthropic: Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Anthropic: Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Anthropic: Claude Fable Latest ($$$$)","description":"This model always redirects to the latest model in the Claude Fable family.","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Upstage: Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Upstage: Solar Pro 4","description":"Solar Pro 4 is a large language model from Upstage. It is suited for agentic workflows, office productivity, document-intensive work, and coding.","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"upstage/solar-mini4":{"id":"upstage/solar-mini4","name":"Upstage: Solar Mini 4","description":"Solar Mini 4 is Upstage's compact, cost-efficient language model, a 35B-parameter mixture-of-experts with 3B active parameters and a 524K context window. It is built for agentic use cases where response...","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.1,"output":0.4,"cache_read":0.01}},"~deepseek/deepseek-flash-latest":{"id":"~deepseek/deepseek-flash-latest","name":"DeepSeek: DeepSeek Flash Latest","description":"This model always redirects to the latest model in the DeepSeek Flash family.","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-14","last_updated":"2026-09-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.0264,"output":1.188,"cache_read":0.0264}},"~deepseek/deepseek-pro-latest":{"id":"~deepseek/deepseek-pro-latest","name":"DeepSeek: DeepSeek Pro Latest","description":"This model always redirects to the latest model in the DeepSeek Pro family.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-14","last_updated":"2026-09-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.21,"output":5,"cache_read":0.2}},"~deepseek/deepseek-v4-flash-latest":{"id":"~deepseek/deepseek-v4-flash-latest","name":"DeepSeek: DeepSeek V4 Flash Latest","description":"This model always redirects to the latest model in the DeepSeek V4 Flash family.","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-01","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.01096,"output":1.44,"cache_read":0.01096}},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"xAI: Grok Latest","description":"This model always redirects to the latest Grok model from xAI.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5}},"bytedance/ui-tars-1.5-7b":{"id":"bytedance/ui-tars-1.5-7b","name":"ByteDance: UI-TARS 7B ","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1}},"liquid/lfm-2.5-2.6b:free":{"id":"liquid/lfm-2.5-2.6b:free","name":"LiquidAI: LFM2.5-2.6B (free)","description":"LFM2.5-2.6B is a compact reasoning model from Liquid AI. It is suited for agent workflows, data extraction, RAG, and long-context processing. Liquid advises against using it for agentic coding or...","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.34,"cache_read":0.05},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"google/lyria-3-pro-preview":{"id":"google/lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-pro-preview"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.16},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash-image"},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-07-13","last_updated":"2024-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Gemini 3.6 Flash is a high-efficiency model from Google for coding, agentic workflows, and web and app development. It is designed to produce polished outputs with fewer unnecessary edits and...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.375,"output":1.875,"reasoning":1.875,"cache_read":0.0375,"cache_write":0.020833},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.042,"output":0.22,"cache_read":0.021},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":1,"output":6,"reasoning":6,"cache_read":0.1,"cache_write":0.1875},"canonical_model_id":"google/gemini-3-pro-image-preview"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Gemini 3.5 Flash Lite is a high-efficiency model from Google with upgraded agentic capabilities. It is suited for subagents that execute focused tasks within complex, multi-agent workflows.","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.15,"output":1.25,"reasoning":1.25,"cache_read":0.015,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Gemini 3.1 Flash Image, a.k.a. \"Nano Banana 2,\" is Google’s latest state of the art image generation and editing model, delivering Pro-level visual quality at Flash speed. It combines advanced...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"google/lyria-3-clip-preview":{"id":"google/lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-clip-preview"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":6,"reasoning":6,"cache_read":0.1,"cache_write":0.1875},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"google/gemma-3-12b-it"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":4.5,"reasoning":4.5,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro is Google’s most advanced image-generation and editing model, built on Gemini 3 Pro. It extends the original Nano Banana with significantly improved multimodal reasoning, real-world grounding, and...","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3-pro-image"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image) is Google's fastest, most cost-efficient Gemini image model, built for high-velocity developer pipelines and rapid-fire visual exploration. It delivers text-to-image generation...","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Gemini 3.7 Flash is a multimodal model from Google for fast agentic workflows, coding, and complex multi-step reasoning. It is designed for tasks that require responsive performance and reliable multi-step...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.041667},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Gemini 3.8 Flash is Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows.","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-4b-it"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"reasoning":0.4,"cache_read":0.01,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Google: Gemini 2.5 Pro Preview 06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"reasoning":0.75,"cache_read":0.0125,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"google/gemini-nano-banana-2.1":{"id":"google/gemini-nano-banana-2.1","name":"Nano Banana 2.1","description":"Nano Banana 2.1 (Gemini Nano Banana 2.1) is Google's image generation and editing model on the Flash tier, succeeding Nano Banana 2 and Nano Banana Pro. It improves product recontextualization,...","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["image","text","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"google/gemini-nano-banana-2.1"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.125,"output":0.75,"reasoning":0.75,"cache_read":0.0125,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.1-flash-lite"},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Writer: Palmyra X5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"palmyra","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-21","last_updated":"2026-01-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6}},"ibm-granite/granite-4.0-h-micro":{"id":"ibm-granite/granite-4.0-h-micro","name":"IBM: Granite 4.0 Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"IBM: Granite 4.2 8B","description":"Granite 4.2 8B is a dense reasoning model from IBM. It is suited for mathematics, code generation, multilingual dialogue, and agentic workflows that need multi-step reasoning. It supports full, low-effort,...","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015}},"fireworks/ember-1":{"id":"fireworks/ember-1","name":"Fireworks: Ember-1","description":"Ember-1 is a specialized reasoning model from Fireworks Research, built on [Kimi K3](https://openrouter.ai/moonshotai/kimi-k3). It is designed to make every token go further: it produces shorter reasoning traces, using roughly 40%...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-24","last_updated":"2026-09-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3}},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"canonical_model_id":"mistral/mistral-nemo"},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Mistral: Ministral 3 8B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015}},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08}},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Devstral 2 is a state-of-the-art open-source model by Mistral AI specializing in agentic coding. It is a 123B-parameter dense transformer model supporting a 256K context window. Devstral 2 supports exploring...","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04},"canonical_model_id":"mistral/devstral-2512"},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Mistral: Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02}},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral: Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral: Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral: Mistral Small 3.2 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.1,"output":0.3,"cache_read":0.01}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-02-26","last_updated":"2024-02-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral Small 4","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"mistral/mistral-small-2603"},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral: Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"canonical_model_id":"mistral/voxtral-small-24b-2507"},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Mistral Large 3 2512 is Mistral’s most capable model to date, featuring a sparse mixture-of-experts architecture with 41B active parameters (675B total), and released under the Apache 2.0 license.","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"mistral/mistral-large-2512"},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-19","last_updated":"2024-11-19","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Mistral: Ministral 3 14B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02}},"mistralai/mistral-large-4-0":{"id":"mistralai/mistral-large-4-0","name":"Mistral: Mistral Large 4 (50% off)","description":"Mistral Large 4 is a frontier multimodal (text and image input) model from Mistral AI built for reasoning, coding, and agentic workloads. It offers a 512K-token context window with up...","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Mistral: Ministral 3 3B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Codestral 25.08","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"canonical_model_id":"mistral/codestral-2508"},"sakana/fugu-max":{"id":"sakana/fugu-max","name":"Sakana: Fugu Max","description":"Fugu Max is the cost-performance model in Sakana AI's Fugu family. Rather than a single monolithic model, Fugu is a learned multi-agent orchestration system: a language model trained to route...","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25}},"sakana/fugu-ultra-v2":{"id":"sakana/fugu-ultra-v2","name":"Sakana: Fugu Ultra v2","description":"Fugu Ultra v2 is the higher-performance model in Sakana AI's Fugu family. Rather than a single monolithic model, Fugu is a learned multi-agent orchestration system: a language model trained to...","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Fugu Ultra is the higher-performance model in Sakana AI's Fugu family. Rather than a single monolithic model, Fugu is a learned multi-agent orchestration system: a language model trained to route...","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"sakana/fugu-ultra"},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Sakana Namazu is a Japanese-specialized reasoning model from Sakana AI, based on Kimi K2.6 with additional training for Japanese language and business contexts. It is suited for Japanese instruction following,...","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"canonical_model_id":"sakana/sakana-namazu"},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"inclusionAI: Ling 3.0 Flash","description":"*Ling-3.0-flash* is a *124B-parameter Mixture-of-Experts (MoE) model*, with approximately *5.1B parameters activated per token*. The model is designed with *token efficiency and production-scale agentic inference* as key priorities, enabling developers...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"inclusionai/ling-3.1-flash":{"id":"inclusionai/ling-3.1-flash","name":"inclusionAI: Ling 3.1 Flash","description":"Ling 3.1 Flash is a hybrid reasoning mixture-of-experts model from inclusionAI, with 25B active parameters out of 560B total.","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-10-02","last_updated":"2026-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"inclusionai/ling-3.0-flash-sante":{"id":"inclusionai/ling-3.0-flash-sante","name":"inclusionAI: Ling 3.0 Flash Sante","description":"Ling 3.0 Flash Sante is a health and medicine-focused mixture-of-experts model from InclusionAI, built on Ling 3.0 Flash with 5.1B active parameters out of 124B total. It is designed for...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"inclusionai/ling-3.0-flash-vl":{"id":"inclusionai/ling-3.0-flash-vl","name":"inclusionAI: Ling 3.0 Flash VL","description":"Ling 3.0 Flash VL builds on Ling 3.0 Flash (124B total / 5.5B active MoE from InclusionAI), further strengthening its language capabilities while adding native visual perception and advanced visual...","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"inclusionAI: Ling 3.0 Flash Fin","description":"Ling 3.0 Flash Fin is a finance-focused mixture-of-experts model from InclusionAI, built on Ling 3.0 Flash with 5.1B active parameters out of 124B total. It is designed for real-world investment...","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi K3 is a 2.8T parameter open-weight multimodal reasoning model from Moonshot AI. It is suited for complex coding, knowledge work, and long-horizon agentic workflows, and is particularly strong at...","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 Instruct 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-0905"},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"MoonshotAI: Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"MoonshotAI: Kimi K2.7 Code is a coding-focused model in Moonshot AI's Kimi K2 family, built to complete end-to-end programming tasks reliably over long contexts. It uses a native multimodal mixture-of-experts...","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.6712,"output":3.35,"cache_read":0.18},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"kilo-auto/small":{"id":"kilo-auto/small","name":"Auto Small","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.4,"reasoning":0,"cache_read":0.005}},"kilo-auto/efficient":{"id":"kilo-auto/efficient","name":"Auto Efficient","description":"Routes each request to the cheapest model that gets the job done, based on continuously benchmarked accuracy and cost.","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"reasoning":0,"cache_read":0.0325,"cache_write":0.40625}},"kilo-auto/free":{"id":"kilo-auto/free","name":"Auto Free","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"cost":{"input":0,"output":0,"reasoning":0,"cache_read":0,"cache_write":0}},"kilo-auto/frontier":{"id":"kilo-auto/frontier","name":"Auto Frontier","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"reasoning":0,"cache_read":0.5,"cache_write":6.25}},"kilo-auto/balanced":{"id":"kilo-auto/balanced","name":"Auto Balanced","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"reasoning":0,"cache_read":0.0325,"cache_write":0.40625}},"rekaai/reka-flash-3":{"id":"rekaai/reka-flash-3","name":"Reka Flash 3","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"reka","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2}},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.05,"output":0.2},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-content-safety:free":{"id":"nvidia/nemotron-3.5-content-safety:free","name":"NVIDIA: Nemotron 3.5 Content Safety (free)","description":"NVIDIA Nemotron 3.5 Content Safety is a compact 4B-parameter multimodal guardrail model from NVIDIA, fine-tuned from Google Gemma-3-4B. It moderates both inputs to and responses from LLMs and VLMs, accepting... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"NVIDIA Nemotron 3.5 Lightning is an open mixture-of-experts model from NVIDIA, with 3B active parameters out of 30B total. It is suited for high-throughput agentic workloads and specialized tasks that...","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.12,"cache_read":0.0125},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"NVIDIA: Nemotron 3 Nano Omni (free)","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.08,"output":0.45},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"NVIDIA: Nemotron 3 Ultra (free)","description":"NVIDIA Nemotron 3 Ultra is an open frontier-reasoning and orchestration model from NVIDIA, with 55B active parameters out of 550B total (MoE). Built on a hybrid Transformer-Mamba mixture-of-experts architecture, it... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"NVIDIA Nemotron 3 Ultra is an open frontier-reasoning and orchestration model from NVIDIA, with 55B active parameters out of 550B total (MoE). Built on a hybrid Transformer-Mamba mixture-of-experts architecture, it...","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":182520},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"NVIDIA: Nemotron 3 Super (free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"NVIDIA Nemotron 3.5 Content Safety is a compact 4B-parameter multimodal guardrail model from NVIDIA, fine-tuned from Google Gemma-3-4B. It moderates both inputs to and responses from LLMs and VLMs, accepting...","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/nemotron-3.5-lightning:free":{"id":"nvidia/nemotron-3.5-lightning:free","name":"NVIDIA: Nemotron 3.5 Lightning (free)","description":"NVIDIA Nemotron 3.5 Lightning is an open mixture-of-experts model from NVIDIA, with 3B active parameters out of 30B total. It is suited for high-throughput agentic workloads and specialized tasks that... **Terms of service** For NVIDIA free endpoints (Super/Ultra/etc): Trial use only - do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://www.nvidia.com/en-us/about-nvidia/privacy-policy/). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf).","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"MiMo-V2.6-Pro is the flagship foundation model developed by Xiaomi. Built at a scale of over 1T parameters, it is designed to push the ceiling of capability for the most demanding...","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"id":"xiaomi/mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","description":"MiMo-V2.6-Pro-UltraSpeed is the fast speed edition of Xiaomi's flagship foundation model, MiMo-V2.6-Pro. Built from the same 1T MiMo-V2.6-Pro checkpoint, it matches the original model in quality while delivering roughly 10x...","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.004,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo-V2.6-Flash is an open-source foundation model developed by Xiaomi. Built on a Mixture-of-Experts architecture with 309B total parameters and 15B activated per token, it employs a hybrid attention mechanism for...","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.28,"cache_read":0.05},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-07-22","last_updated":"2023-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65}},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-07-02","last_updated":"2023-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3686},"cost":{"input":0.08,"output":0.11}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax: MiniMax-01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000192,"output":900172},"cost":{"input":0.2,"output":1.1}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax-M2 Her","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2-Her"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":176947},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax: MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":40000},"cost":{"input":0.4,"output":2.2}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":176947},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2"},"mancer/weaver":{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","description":"An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.","family":"alpha","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2023-08-02","last_updated":"2023-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75}},"stepfun/step-5-preview":{"id":"stepfun/step-5-preview","name":"Step 5 Preview","description":"Step 5 Preview is StepFun's flagship model for agentic work, built on a sparse Mixture-of-Experts architecture (27B active / 600B total parameters). It performs strongly in software engineering and professional...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"stepfun/step-3.5-flash"},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Step 3.7 Flash is StepFun's latest high-efficiency multimodal Mixture-of-Experts model. It pairs a 196B-parameter language backbone with a vision encoder for native image and video understanding, activating roughly 11B parameters...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"stepfun/step-5-preview-free":{"id":"stepfun/step-5-preview-free","name":"StepFun: Step 5 Preview (free)","description":"Step 5 Preview is StepFun's flagship model for agentic work, with strong capabilities in software engineering, professional knowledge work, and finance. It natively supports text, image, and video input with a 1M-token context window and up to 64K output tokens. The model supports tool calling, structured outputs, and selectable reasoning levels (low/medium/high) for long-context research, coding, and multi-step workflows.","family":"step","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0,"cache_read":0}},"dots-studio/dots-3-note-preview:free":{"id":"dots-studio/dots-3-note-preview:free","name":"Dots Studio: Dots3-Note Preview (free)","description":"Dots3-Note Preview is an open-weight mixture-of-experts model from Dots Studio, with 16B active parameters out of 280B total. It is the lightest model in the Dots 3 family and is...","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0}},"inception/mercury-2.5":{"id":"inception/mercury-2.5","name":"Inception: Mercury 2.5","description":"Mercury 2.5 is the fastest reasoning LLM, and the latest diffusion LLM (dLLM) from Inception. Instead of generating tokens sequentially, Mercury 2.5 produces and refines multiple tokens in parallel, achieving...","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.2,"output":0.75,"cache_read":0.02}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Inception: Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Amazon: Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2}},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Amazon: Nova Premier 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14}},"relace/relace-search":{"id":"relace/relace-search","name":"Relace: Relace Search","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3}},"relace/relace-apply-3":{"id":"relace/relace-apply-3","name":"Relace: Relace Apply 3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"AionLabs: Aion-2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"AionLabs: Aion-RP 1.0 (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-02-04","last_updated":"2025-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"AionLabs: Aion-3.0","description":"Aion-3.0 is a multi-model roleplaying and storytelling system from AionLabs, built on the GLM family of models. It uses a collaborative generation process in which multiple specialized models each contribute...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5":{"id":"aion-labs/aion-3.5","name":"AionLabs: Aion 3.5","description":"Aion 3.5 is a multi-model roleplaying and storytelling system from AionLabs, built on the GLM family of models. It uses a collaborative generation process in which multiple specialized models each...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5-mini":{"id":"aion-labs/aion-3.5-mini","name":"AionLabs: Aion 3.5 Mini","description":"Aion 3.5 Mini is a multi-model roleplaying and storytelling system from AionLabs, built on the GLM family of models. It is the smaller, lower-cost sibling of Aion 3.5 and uses...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"AionLabs: Aion-3.0-Mini","description":"Aion-3.0 Mini is a multi-model roleplaying and storytelling system from AionLabs, built on the DeepSeek family of models. It uses a collaborative generation process in which multiple specialized models each...","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen: Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen3.8 27B is an open-weight dense vision-language model from Qwen. It is suited for coding, professional workflows, research, multimodal interaction, and long-running agent tasks, with flexible thinking that can be...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.425,"output":2.55,"cache_read":0.085,"cache_write":0.53125},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.195,"output":1.56},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.12,"output":0.8,"cache_read":0.07},"canonical_model_id":"alibaba/qwen3-coder-next"},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen: Qwen3 Coder 480B A35B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.1}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.08,"output":0.28},"canonical_model_id":"alibaba/qwen3-32b"},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Qwen3.7 Flash is a vision-language reasoning model from Alibaba. It is suited for multimodal agents, visual coding, search, and computer interaction, with strengths in object recognition, spatial understanding, and real-world...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.28},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"qwen/qwen3.8-omni-flash":{"id":"qwen/qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen3.8 Omni Flash is an omni-modal reasoning model from Alibaba, the first Qwen model built around agentic capabilities with native audio-video understanding. It is suited for audio-video analysis and summarization,...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen: Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.08},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.95,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":1.1,"cache_read":0.07},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen: Qwen3 VL 30B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.29,"output":1}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen-2.5-coder-32b-instruct":{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1}},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen: Qwen3.5-Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen/qwen3.8-max-prime":{"id":"qwen/qwen3.8-max-prime","name":"Qwen 3.8 Max Prime","description":"Qwen3.8 Max Prime is a higher-throughput variant of Qwen3.8 Max from Alibaba's Qwen team, served as a separate SKU at a higher price point. It accepts text, image, and video...","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.8-max-prime"},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen: Qwen3.5 Plus 2026-04-20","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen3.8 Flash is a multimodal reasoning model from Alibaba. It is suited for coding assistance, agentic workflows, visual understanding, document and codebase analysis, desktop interaction, chart analysis, and long-video analysis.","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1625,"output":1.3},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.39,"output":2.34},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen: Qwen3 VL 8B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":0.75,"cache_read":0.12}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen: Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.3}},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen: Qwen2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-02-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4}},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen: Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2}},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen: Qwen3.5 Plus 2026-02-15","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.45,"output":2.7},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen: Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Qwen3.7-Plus is a cost-effective model in Alibaba's Qwen3.7 series. It supports text and image input with text output, building on the series' text capabilities with a comprehensive upgrade to its...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen/qwen3.8-max-0902":{"id":"qwen/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"Qwen3.8 Max 0902 is an updated snapshot of Qwen3.8 Max from Alibaba's Qwen team. It is a 2.4-trillion-parameter mixture-of-experts model that accepts text, image, and video input and returns text,...","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph: Morph V3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph: Morph V3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":81920,"output":38000},"cost":{"input":0.8,"output":1.2}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-image-2":{"id":"openai/gpt-5.4-image-2","name":"OpenAI: GPT-5.4 Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"OpenAI: GPT Audio","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio","pdf"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-6-astra-pro":{"id":"openai/gpt-6-astra-pro","name":"OpenAI: GPT-6 Astra Pro ($$$$)","description":"GPT-6 Astra Pro is the same underlying model as [GPT-6 Astra](https://openrouter.ai/openai/gpt-6-astra), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"canonical_model_id":"openai/gpt-4o-2024-05-13"},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"OpenAI: GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-05-05","last_updated":"2026-05-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"OpenAI: GPT Audio Mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio","pdf"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT-5.6 Sol","description":"GPT-5.6 Sol Pro is the same underlying model as [GPT-5.6 Sol](https://openrouter.ai/openai/gpt-5.6-sol), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2023-09-28","last_updated":"2023-09-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2}},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"GPT-6.1 Sol is an upgrade to GPT-6 Sol from OpenAI, positioned below the flagship GPT-6 Astra in the GPT-6 series. It is suited for agentic coding, computer use, document-heavy professional...","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's flagship model for demanding end-to-end work. It is suited for advanced analysis, software engineering, deep research, scientific work, and document creation, with particular strengths in long-horizon...","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT-5.6 Luna","description":"GPT-5.6 Luna Pro is the same underlying model as [GPT-5.6 Luna](https://openrouter.ai/openai/gpt-5.6-luna), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"OpenAI: GPT-5 Image Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["pdf","image","text"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"canonical_model_id":"openai/o3-pro"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.018,"output":0.09,"cache_read":0.009},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-02-12","last_updated":"2025-02-12","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2023-08-28","last_updated":"2023-08-28","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"OpenAI: GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-6-sol-pro":{"id":"openai/gpt-6-sol-pro","name":"OpenAI: GPT-6 Sol Pro","description":"GPT-6 Sol Pro is the same underlying model as [GPT-6 Sol](https://openrouter.ai/openai/gpt-6-sol), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"OpenAI: GPT-5 Image ($$$$)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"GPT-5.6 Luna is a fast, cost-efficient model in OpenAI's GPT-5.6 series. It is suited for high-volume, latency-sensitive tasks such as chat, classification, and lightweight agentic workflows, providing capable reasoning for...","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT-5.6 Terra","description":"GPT-5.6 Terra Pro is the same underlying model as [GPT-5.6 Terra](https://openrouter.ai/openai/gpt-5.6-terra), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"GPT-6 Luna is the fast, cost-efficient model in OpenAI's GPT-6 series, positioned below GPT-6 Sol. It is suited for high-volume and latency-sensitive workloads such as chat, classification, and lightweight agentic...","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-6.1-sol-pro":{"id":"openai/gpt-6.1-sol-pro","name":"OpenAI: GPT-6.1 Sol Pro","description":"GPT-6.1 Sol Pro is the same underlying model as [GPT-6.1 Sol](https://openrouter.ai/openai/gpt-6.1-sol), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. **Cost note:** pro mode spends far more...","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-6-luna-pro":{"id":"openai/gpt-6-luna-pro","name":"OpenAI: GPT-6 Luna Pro","description":"GPT-6 Luna Pro is the same underlying model as [GPT-6 Luna](https://openrouter.ai/openai/gpt-6-luna), served with `reasoning.mode` set to `pro` for higher-quality responses on complex tasks. Learn more in OpenAI's docs: https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"GPT-5.6 Terra is a balanced model in OpenAI's GPT-5.6 series, positioned between the flagship Sol tier and the cost-efficient Luna tier. It is suited for everyday coding, reasoning, and agentic...","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.03,"output":0.15,"cache_read":0.03},"canonical_model_id":"openai/gpt-oss-120b"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/o3":{"id":"openai/o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"GPT-5.6 Sol is the flagship model in OpenAI's GPT-5.6 series. It is suited for complex reasoning, coding, and agentic workflows, and is particularly strong at command-line and multi-step coding tasks...","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"GPT-6 Sol is the cost-efficient high-end model in OpenAI's GPT-6 series, positioned below the flagship GPT-6 Astra and above the fast GPT-6 Luna tier. It is suited for demanding professional...","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"canonical_model_id":"openai/o1-pro"},"microsoft/phi-4":{"id":"microsoft/phi-4","name":"Microsoft: Phi 4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":14745},"cost":{"input":0.07,"output":0.14}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-16","last_updated":"2024-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62}}}},"venice":{"id":"venice","env":["VENICE_API_KEY"],"npm":"venice-ai-sdk-provider","name":"Venice AI","doc":"https://docs.venice.ai","models":{"qwen-3-8-2-4t-a95b":{"id":"qwen-3-8-2-4t-a95b","name":"Qwen 3.8 2.4T","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"openai-gpt-56-luna":{"id":"openai-gpt-56-luna","name":"GPT-5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.3125,"tiers":[{"input":0.5,"output":2.25,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.5,"output":2.25,"cache_read":0.05,"cache_write":0.625}},"canonical_model_id":"openai/gpt-5.6-luna"},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32000},"cost":{"input":2.27,"output":6.8,"cache_read":0.34,"tiers":[{"input":4.53,"output":13.6,"cache_read":0.68,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.53,"output":13.6,"cache_read":0.68}},"canonical_model_id":"xai/grok-4.5"},"aion-labs-aion-3-5":{"id":"aion-labs-aion-3-5","name":"Aion 3.5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":3.75,"output":7.5,"cache_read":0.9375}},"kimi-k3-fast-api":{"id":"kimi-k3-fast-api","name":"Kimi K3 Fast","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3-6-27b":{"id":"qwen3-6-27b","name":"Qwen 3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.325,"output":3.25},"canonical_model_id":"alibaba/qwen3.6-27b"},"hermes-3-llama-3.1-405b":{"id":"hermes-3-llama-3.1-405b","name":"Hermes 3 Llama 3.1 405b","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"hermes","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-09-25","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":3}},"claude-opus-5-5-fast":{"id":"claude-opus-5-5-fast","name":"Claude Opus 5.5 Fast","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-26","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":9.6,"output":48,"cache_read":0.48,"cache_write":12},"canonical_model_id":"anthropic/claude-opus-5-5"},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-13","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"google-gemma-3-27b-it":{"id":"google-gemma-3-27b-it","name":"Google Gemma 3 27B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-04","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.12,"output":0.2},"canonical_model_id":"google/gemma-3-27b-it"},"qwen-3-7-max":{"id":"qwen-3-7-max","name":"Qwen 3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-22","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.7,"output":8.05,"cache_read":0.27,"cache_write":3.35},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen-3-8-max":{"id":"qwen-3-8-max","name":"Qwen 3.8 Max","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-22","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.3125,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"venice-uncensored-role-play":{"id":"venice-uncensored-role-play","name":"Venice Role Play Uncensored","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"venice","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-02-20","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":2}},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen 3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.75},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"openai-gpt-6-luna":{"id":"openai-gpt-6-luna","name":"GPT-6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.125,"output":0.625,"cache_read":0.0125,"cache_write":0.15625,"tiers":[{"input":0.25,"output":0.9375,"cache_read":0.025,"cache_write":0.3125,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.25,"output":0.9375,"cache_read":0.025,"cache_write":0.3125}},"canonical_model_id":"openai/gpt-6-luna"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3.75,"output":18.75,"cache_read":0.375},"canonical_model_id":"moonshotai/kimi-k3"},"openai-gpt-54-mini":{"id":"openai-gpt-54-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-27","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.9375,"output":5.625,"cache_read":0.09375},"canonical_model_id":"openai/gpt-5.4-mini"},"qwen-3-8-flash":{"id":"qwen-3-8-flash","name":"Qwen 3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.49,"cache_read":0.014},"canonical_model_id":"alibaba/qwen3.8-flash"},"olafangensan-glm-4.7-flash-heretic":{"id":"olafangensan-glm-4.7-flash-heretic","name":"GLM 4.7 Flash Heretic","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-02-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":24000},"cost":{"input":0.07,"output":0.4,"cache_read":0.035}},"xiaomi-mimo-v2-6-flash":{"id":"xiaomi-mimo-v2-6-flash","name":"MiMo-V2.6-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.175,"output":0.35,"cache_read":0.00375},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"deepseek-v4-flash-0731-fast":{"id":"deepseek-v4-flash-0731-fast","name":"DeepSeek V4 Flash 0731 Fast","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-08-09","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.35,"output":0.7,"cache_read":0.0875},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-12-06","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":198000,"output":32768},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"anthropic/claude-opus-4-5"},"zai-org-glm-5-2":{"id":"zai-org-glm-5-2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"claude-opus-4-8-fast":{"id":"claude-opus-4-8-fast","name":"Claude Opus 4.8 Fast","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15},"canonical_model_id":"anthropic/claude-opus-4-8"},"z-ai-glm-5-turbo":{"id":"z-ai-glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32768},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai-org-glm-4.6":{"id":"zai-org-glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2024-04-01","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.43,"output":1.75,"cache_read":0.08},"canonical_model_id":"zhipuai/glm-4.6"},"openai-gpt-54-pro":{"id":"openai-gpt-54-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":37.5,"output":225,"tiers":[{"input":75,"output":337.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":75,"output":337.5}},"canonical_model_id":"openai/gpt-5.4-pro"},"aion-labs-aion-3-0":{"id":"aion-labs-aion-3-0","name":"Aion 3.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":3.75,"output":7.5,"cache_read":0.9375}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-01-15","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":198000,"output":64000},"cost":{"input":3.75,"output":18.75,"cache_read":0.375,"cache_write":4.69},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-18","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.8,"output":24,"cache_read":0.24,"cache_write":6},"canonical_model_id":"anthropic/claude-opus-5-5"},"kimi-k2-5":{"id":"kimi-k2-5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-04","release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.56,"output":3.5,"cache_read":0.22},"canonical_model_id":"moonshotai/kimi-k2.5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-08-29","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":0.3,"cache_write":15},"canonical_model_id":"anthropic/claude-fable-5-1"},"gemini-3-7-flash":{"id":"gemini-3-7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"canonical_model_id":"google/gemini-3.7-flash"},"grok-4-20":{"id":"grok-4-20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-03-12","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}}},"openai-gpt-56-sol-pro":{"id":"openai-gpt-56-sol-pro","name":"GPT-5.6 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"seed-2-1-turbo":{"id":"seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-28","last_updated":"2026-07-24","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.625,"output":3.125,"cache_read":0.125},"canonical_model_id":"bytedance-seed/seed-2.1-turbo"},"z-ai-glm-5v-turbo":{"id":"z-ai-glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32768},"cost":{"input":1.5,"output":5,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5v-turbo"},"openai-gpt-55-pro":{"id":"openai-gpt-55-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":37.5,"output":225},"canonical_model_id":"openai/gpt-5.5-pro"},"qwen-3-7-plus":{"id":"qwen-3-7-plus","name":"Qwen 3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":1.5,"output":6,"cache_read":0.15,"cache_write":1.875,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.5,"output":6,"cache_read":0.15,"cache_write":1.875}},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen 3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5}},"openai-gpt-61-sol":{"id":"openai-gpt-61-sol","name":"GPT-6.1 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":12.5,"cache_read":0.125,"cache_write":3.125,"tiers":[{"input":5,"output":18.75,"cache_read":0.25,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":18.75,"cache_read":0.25,"cache_write":6.25}},"canonical_model_id":"openai/gpt-6.1-sol"},"zai-org-glm-4.7-flash":{"id":"zai-org-glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flash"},"openai-gpt-61-sol-ultrafast":{"id":"openai-gpt-61-sol-ultrafast","name":"GPT-6.1 Sol Ultrafast","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-10-08","last_updated":"2026-10-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":15,"output":75,"cache_read":0.75,"cache_write":18.75,"tiers":[{"input":30,"output":112.5,"cache_read":1.5,"cache_write":37.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":30,"output":112.5,"cache_read":1.5,"cache_write":37.5}}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-23","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"anthropic/claude-opus-5"},"openai-gpt-6-astra":{"id":"openai-gpt-6-astra","name":"GPT-6 Astra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-05","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"minimax-m27":{"id":"minimax-m27","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32768},"cost":{"input":0.375,"output":1.5,"cache_read":0.06875},"canonical_model_id":"minimax/MiniMax-M2.7"},"mercury-2-5":{"id":"mercury-2-5","name":"Mercury 2.5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-08","last_updated":"2026-09-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.25,"output":0.9375,"cache_read":0.025}},"qwen3-next-80b":{"id":"qwen3-next-80b","name":"Qwen 3 Next 80b","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2025-04-29","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.35,"output":1.9}},"minimax-m25":{"id":"minimax-m25","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32768},"cost":{"input":0.27,"output":0.95,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"qwen3-6-35b-a3b":{"id":"qwen3-6-35b-a3b","name":"Qwen 3.6 35B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.1,"output":1},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"grok-4-20-multi-agent":{"id":"grok-4-20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"release_date":"2026-03-12","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}}},"zai-org-glm-4.7":{"id":"zai-org-glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":16384},"cost":{"input":0.55,"output":2.65,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"qwen3-5-9b":{"id":"qwen3-5-9b","name":"Qwen 3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3 VL 235B","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-16","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.21,"output":1.9,"cache_read":0.1}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-10","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15},"canonical_model_id":"anthropic/claude-fable-5"},"qwen3-5-35b-a3b":{"id":"qwen3-5-35b-a3b","name":"Qwen 3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.15,"output":1,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":4.95,"cache_read":0.165},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"openai-gpt-56-terra":{"id":"openai-gpt-56-terra","name":"GPT-5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-5.6-terra"},"llama-3.3-70b":{"id":"llama-3.3-70b","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"release_date":"2025-04-06","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.7,"output":2.8}},"openai-gpt-4o-mini-2024-07-18":{"id":"openai-gpt-4o-mini-2024-07-18","name":"GPT-4o Mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2026-02-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.1875,"output":0.75,"cache_read":0.09375},"canonical_model_id":"openai/gpt-4o-mini"},"mistral-small-3-2-24b-instruct":{"id":"mistral-small-3-2-24b-instruct","name":"Mistral Small 3.2 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-15","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.09375,"output":0.25}},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":1.25,"output":5.0625,"cache_read":0.2125},"canonical_model_id":"thinkingmachines/inkling"},"z-ai-glm-5-3":{"id":"z-ai-glm-5-3","name":"GLM 5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.75,"output":5.5,"cache_read":0.325},"canonical_model_id":"zhipuai/glm-5.3"},"google-gemma-4-26b-a4b-it":{"id":"google-gemma-4-26b-a4b-it","name":"Google Gemma 4 26B A4B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.13,"output":0.4,"cache_read":0.05},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.75,"output":3.5,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"openai-gpt-6-astra-pro":{"id":"openai-gpt-6-astra-pro","name":"GPT-6 Astra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-05","last_updated":"2026-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":12.5,"output":62.5,"cache_read":1.25,"cache_write":15.625,"tiers":[{"input":25,"output":93.75,"cache_read":2.5,"cache_write":31.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":25,"output":93.75,"cache_read":2.5,"cache_write":31.25}}},"openai-gpt-54":{"id":"openai-gpt-54","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":131072},"cost":{"input":3.13,"output":18.8,"cache_read":0.313},"canonical_model_id":"openai/gpt-5.4"},"gemma-4-uncensored":{"id":"gemma-4-uncensored","name":"Gemma 4 Uncensored","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-13","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.1625,"output":0.5}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"abliteration-abliterated-model-large-v2":{"id":"abliteration-abliterated-model-large-v2","name":"Abliterated Large V2","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":3,"output":5,"cache_read":0.3}},"minimax-m3-preview":{"id":"minimax-m3-preview","name":"MiniMax M3 Preview","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-06-12","last_updated":"2026-06-13","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"openai-gpt-oss-120b":{"id":"openai-gpt-oss-120b","name":"OpenAI GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-06","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3},"canonical_model_id":"openai/gpt-oss-120b"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-29","last_updated":"2026-07-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":12.5,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"anthropic/claude-sonnet-5"},"deepseek-v4-1-flash":{"id":"deepseek-v4-1-flash","name":"DeepSeek V4.1 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.0075},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gemini-3-8-flash":{"id":"gemini-3-8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"canonical_model_id":"google/gemini-3.8-flash"},"qwen-3-6-plus":{"id":"qwen-3-6-plus","name":"Qwen 3.6 Plus Uncensored","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-06","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.625,"output":3.75,"cache_read":0.0625,"cache_write":0.78,"tiers":[{"input":2.5,"output":7.5,"cache_read":0.0625,"cache_write":0.78,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2.5,"output":7.5,"cache_read":0.0625,"cache_write":0.78}},"canonical_model_id":"alibaba/qwen3.6-plus"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"openai-gpt-6-sol":{"id":"openai-gpt-6-sol","name":"GPT-6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":12.5,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":18.75,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":18.75,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-6-sol"},"qwen-3-8-27b":{"id":"qwen-3-8-27b","name":"Qwen 3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-17","last_updated":"2026-08-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.2},"canonical_model_id":"alibaba/qwen3.8-27b"},"openai-gpt-53-codex":{"id":"openai-gpt-53-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.19,"output":17.5,"cache_read":0.219},"canonical_model_id":"openai/gpt-5.3-codex"},"aion-labs-aion-3-0-mini":{"id":"aion-labs-aion-3-0-mini","name":"Aion 3.0 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.875,"output":1.75,"cache_read":0.225}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-18","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.42,"output":2.83,"cache_read":0.23,"tiers":[{"input":2.83,"output":5.67,"cache_read":0.45,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.83,"output":5.67,"cache_read":0.45}},"canonical_model_id":"xai/grok-4.3"},"aion-labs-aion-3-5-mini":{"id":"aion-labs-aion-3-5-mini","name":"Aion 3.5 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.875,"output":1.75,"cache_read":0.225}},"openai-gpt-56-terra-pro":{"id":"openai-gpt-56-terra-pro","name":"GPT-5.6 Terra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-5.6-terra"},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-19","last_updated":"2026-06-11","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":0.7,"output":3.75,"cache_read":0.07},"canonical_model_id":"google/gemini-3-flash-preview"},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-02-20","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.3125,"output":0.9375,"cache_read":0.03125}},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-10","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":200000},"cost":{"input":2.27,"output":6.8,"cache_read":0.57,"tiers":[{"input":4.53,"output":13.6,"cache_read":1.13,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.53,"output":13.6,"cache_read":1.13}},"canonical_model_id":"xai/grok-4.6"},"zai-org-glm-5-1":{"id":"zai-org-glm-5-1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":80000},"cost":{"input":1.54,"output":4.84,"cache_read":0.286},"canonical_model_id":"zhipuai/glm-5.1"},"xiaomi-mimo-v2-5":{"id":"xiaomi-mimo-v2-5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-06-11","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2,"cache_read":0.08},"canonical_model_id":"xiaomi/mimo-v2.5"},"openai-gpt-4o-2024-11-20":{"id":"openai-gpt-4o-2024-11-20","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2026-02-28","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":3.125,"output":12.5},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai-gpt-52":{"id":"openai-gpt-52","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-13","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":272000,"output":65536},"cost":{"input":2.19,"output":17.5,"cache_read":0.219},"canonical_model_id":"openai/gpt-5.2"},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-09","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.9375,"output":4.6875,"cache_read":0.09375},"canonical_model_id":"google/gemini-3.6-flash"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.125,"output":0.625,"cache_read":0.0125,"cache_write":0.15625,"tiers":[{"input":0.625,"output":3.125,"cache_read":0.0625,"cache_write":0.78125,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-3-1-pro-preview":{"id":"gemini-3-1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2.5,"output":15,"cache_read":0.5,"cache_write":0.5,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":0.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":0.5}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.65,"output":3.301,"cache_read":0.33},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.6,"output":18,"cache_read":0.36,"cache_write":4.5},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-opus-5-fast":{"id":"claude-opus-5-fast","name":"Claude Opus 5 Fast","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-23","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":12,"output":60,"cache_read":1.2,"cache_write":15},"canonical_model_id":"anthropic/claude-opus-5"},"openai-gpt-55":{"id":"openai-gpt-55","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":131072},"cost":{"input":6.25,"output":37.5,"cache_read":0.625,"tiers":[{"input":12.5,"output":56.25,"cache_read":1.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":12.5,"output":56.25,"cache_read":1.25}},"canonical_model_id":"openai/gpt-5.5"},"openai-gpt-56-sol":{"id":"openai-gpt-56-sol","name":"GPT-5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"qwen3-coder-480b-a35b-instruct-turbo":{"id":"qwen3-coder-480b-a35b-instruct-turbo","name":"Qwen 3 Coder 480B Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.35,"output":1.5,"cache_read":0.04}},"z-ai-glm-5-3-flash":{"id":"z-ai-glm-5-3-flash","name":"GLM 5.3 Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-26","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":12.5,"cache_read":0.125,"cache_write":3.125},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"zai-org-glm-5":{"id":"zai-org-glm-5","name":"GLM 5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":32000},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"grok-4-7":{"id":"grok-4-7","name":"Grok 4.7","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-16","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":200000},"cost":{"input":2.27,"output":6.8,"cache_read":0.57,"tiers":[{"input":4.53,"output":13.6,"cache_read":1.13,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.53,"output":13.6,"cache_read":1.13}},"canonical_model_id":"xai/grok-4.7"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":160000,"output":32768},"cost":{"input":0.33,"output":0.48,"cache_read":0.16},"canonical_model_id":"deepseek/deepseek-v3.2"},"gemini-3-5-flash-lite":{"id":"gemini-3-5-flash-lite","name":"Gemini 3.5 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-09","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.375,"output":3.125,"cache_read":0.0375},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-22","last_updated":"2026-06-11","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.55,"output":9.45,"cache_read":0.155,"cache_write":0.086},"canonical_model_id":"google/gemini-3.5-flash"},"google-gemma-4-31b-it":{"id":"google-gemma-4-31b-it","name":"Google Gemma 4 31B Instruct","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-03","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.12,"output":0.36,"cache_read":0.09},"canonical_model_id":"google/gemma-4-31b-it"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"anthropic/claude-opus-4-7"},"venice-uncensored-1-2":{"id":"venice-uncensored-1-2","name":"Venice Uncensored 1.2","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"venice","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-04-01","last_updated":"2026-06-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"qwen3-5-397b-a17b":{"id":"qwen3-5-397b-a17b","name":"Qwen 3.5 397B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-06-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.75,"output":4.5},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"llama-3.2-3b":{"id":"llama-3.2-3b","name":"Llama 3.2 3B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-10-03","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"meta/llama-3.2-3b"},"openai-gpt-56-luna-pro":{"id":"openai-gpt-56-luna-pro","name":"GPT-5.6 Luna Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.3125,"tiers":[{"input":0.5,"output":2.25,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.5,"output":2.25,"cache_read":0.05,"cache_write":0.625}},"canonical_model_id":"openai/gpt-5.6-luna"},"nvidia-nemotron-3-ultra-550b-a55b":{"id":"nvidia-nemotron-3-ultra-550b-a55b","name":"NVIDIA Nemotron 3 Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.625,"output":3.125,"cache_read":0.1875},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash 0423","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.138,"output":0.275,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"nvidia-nemotron-3-nano-30b-a3b":{"id":"nvidia-nemotron-3-nano-30b-a3b","name":"NVIDIA Nemotron 3 Nano 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-06-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.3},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"}}},"alibaba-token-plan-cn":{"id":"alibaba-token-plan-cn","env":["ALIBABA_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1","name":"Alibaba Token Plan (China)","doc":"https://www.alibabacloud.com/help/zh/model-studio/token-plan-overview","models":{"happyhorse-1.1-r2v":{"id":"happyhorse-1.1-r2v","name":"HappyHorse 1.1 Reference-to-Video","description":"Video model for reference-guided video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-max"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-max"},"happyhorse-1.1-t2v":{"id":"happyhorse-1.1-t2v","name":"HappyHorse 1.1 Text-to-Video","description":"Video model for prompt-driven text-to-video generation","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen-image-2.0":{"id":"qwen-image-2.0","name":"Qwen Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"qwen-image-2.0-pro":{"id":"qwen-image-2.0-pro","name":"Qwen Image 2.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"wan2.7-image":{"id":"wan2.7-image","name":"Wan2.7 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"wan2.7-image-pro":{"id":"wan2.7-image-pro","name":"Wan2.7 Image Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":0},"cost":{"input":0,"output":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.5"},"happyhorse-1.1-i2v":{"id":"happyhorse-1.1-i2v","name":"HappyHorse 1.1 Image-to-Video","description":"Video model for image-to-video generation","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-17","last_updated":"2026-07-17","modalities":{"input":["image","text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-flash"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"input":196601,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"minimax/MiniMax-M2.5"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-plus"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-03","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0,"output":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-plus"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"ai21":{"id":"ai21","env":["AI21_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ai21.com/studio/v1","name":"AI21 Labs","doc":"https://docs.ai21.com/docs/jamba-foundation-models","models":{"jamba-large":{"id":"jamba-large","name":"Jamba Large","description":"AI21's hybrid SSM-Transformer long-context model for enterprise agents and grounded generation","family":"jamba","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-22","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":2,"output":8},"canonical_model_id":"ai21/jamba-large"},"jamba-mini":{"id":"jamba-mini","name":"Jamba Mini","description":"AI21's efficient, lightweight hybrid SSM-Transformer model for a wide range of tasks","family":"jamba","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-22","release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.2,"output":0.4},"canonical_model_id":"ai21/jamba-mini"}}},"lowrouter":{"id":"lowrouter","env":["LOWROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lowrouter.ai/v1","name":"LowRouter","doc":"https://lowrouter.ai/docs/models/available","models":{"auto/mistralai/ministral-8b-2512":{"id":"auto/mistralai/ministral-8b-2512","name":"Ministral 3 8B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1569,"output":0.1569,"cache_read":0.0157},"canonical_model_id":"mistral/ministral-3-8b-instruct-2512"},"auto/mistralai/mistral-large-4":{"id":"auto/mistralai/mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":262144},"status":"beta","cost":{"input":0.7112,"output":2.1859,"cache_read":0.0732},"canonical_model_id":"mistral/mistral-large-4"},"auto/mistralai/mistral-medium-3.5":{"id":"auto/mistralai/mistral-medium-3.5","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5688,"output":7.8442,"cache_read":0.1569},"canonical_model_id":"mistral/mistral-medium-2604"},"auto/mistralai/mistral-small-2603":{"id":"auto/mistralai/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.1569,"output":0.6275,"cache_read":0.0157},"canonical_model_id":"mistral/mistral-small-2603"},"auto/mistralai/mistral-large-2512":{"id":"auto/mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5229,"output":1.5688,"cache_read":0.0523},"canonical_model_id":"mistral/mistral-large-2512"},"auto/mistralai/ministral-14b-2512":{"id":"auto/mistralai/ministral-14b-2512","name":"Ministral 3 14B","description":"Open vision-language model for efficient local deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2092,"output":0.2092,"cache_read":0.0209},"canonical_model_id":"mistral/ministral-3-14b-instruct-2512"},"auto/mistralai/ministral-3b-2512":{"id":"auto/mistralai/ministral-3b-2512","name":"Ministral 3 3B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1046,"output":0.1046,"cache_read":0.0105},"canonical_model_id":"mistral/ministral-3-3b-instruct-2512"},"auto/mistralai/codestral-2508":{"id":"auto/mistralai/codestral-2508","name":"Codestral 25.08","description":"Mistral code model for low-latency completion, fill-in-the-middle, and code generation","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.3138,"output":0.9413,"cache_read":0.0314},"canonical_model_id":"mistral/codestral-2508"}}},"inference":{"id":"inference","env":["INFERENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.net/v1","name":"Inference","doc":"https://inference.net/models","models":{"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.025,"output":0.025}},"meta/llama-3.2-11b-vision-instruct":{"id":"meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.055,"output":0.055}},"meta/llama-3.2-1b-instruct":{"id":"meta/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.01,"output":0.01}},"meta/llama-3.2-3b-instruct":{"id":"meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.02,"output":0.02}},"google/gemma-3":{"id":"google/gemma-3","name":"Google Gemma 3","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":125000,"output":4096},"cost":{"input":0.15,"output":0.3}},"osmosis/osmosis-structure-0.6b":{"id":"osmosis/osmosis-structure-0.6b","name":"Osmosis Structure 0.6B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"osmosis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4000,"output":2048},"cost":{"input":0.1,"output":0.5}},"mistral/mistral-nemo-12b-instruct":{"id":"mistral/mistral-nemo-12b-instruct","name":"Mistral Nemo 12B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.038,"output":0.1}},"qwen/qwen3-embedding-4b":{"id":"qwen/qwen3-embedding-4b","name":"Qwen 3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0}},"qwen/qwen-2.5-7b-vision-instruct":{"id":"qwen/qwen-2.5-7b-vision-instruct","name":"Qwen 2.5 7B Vision Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":125000,"output":4096},"cost":{"input":0.2,"output":0.2}}}},"iflowcn":{"id":"iflowcn","env":["IFLOW_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://apis.iflow.cn/v1","name":"iFlow","doc":"https://platform.iflow.cn/en/docs","models":{"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL-Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3-Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3-235B-A22B-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-max-preview":{"id":"qwen3-max-preview","name":"Qwen3-Max-Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3-Coder-Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-235b-a22b-instruct":{"id":"qwen3-235b-a22b-instruct","name":"Qwen3-235B-A22B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"kimi-k2-0905":{"id":"kimi-k2-0905","name":"Kimi-K2-0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"kimi-k2":{"id":"kimi-k2","name":"Kimi-K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0}},"qwen3-235b":{"id":"qwen3-235b","name":"Qwen3-235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0,"output":0}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0,"output":0}}}},"minimax-cn-coding-plan":{"id":"minimax-cn-coding-plan","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.cn/anthropic/v1","name":"MiniMax Token Plan (minimax.cn)","doc":"https://platform.minimaxi.com/docs/token-plan/intro","models":{"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M3.1-Flash-Preview":{"id":"MiniMax-M3.1-Flash-Preview","name":"MiniMax-M3.1-Flash-Preview","description":"Frontier multimodal coding model with 1M context window and tunable thinking depth","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-27","last_updated":"2026-09-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":512000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"minimax/MiniMax-M3.1-Flash-Preview"},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"thinkingmachines":{"id":"thinkingmachines","env":["TINKER_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api/v1","name":"Thinking Machines","doc":"https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/anthropic/","models":{"thinkingmachines/Inkling:peft:262144":{"id":"thinkingmachines/Inkling:peft:262144","name":"Inkling (256K)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":3.74,"output":9.36,"cache_read":0.748},"canonical_model_id":"thinkingmachines/inkling"},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"canonical_model_id":"thinkingmachines/inkling"}}},"stepfun-step-plan":{"id":"stepfun-step-plan","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.com/step_plan/v1","name":"StepFun Step Plan (China)","doc":"https://platform.stepfun.com/docs/zh/step-plan/integrations/reasoning-api","models":{"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"canonical_model_id":"stepfun/step-5-preview"},"step-router-v1":{"id":"step-router-v1","name":"Step Router v1","description":"StepFun routing model that dispatches requests to the appropriate Step model.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":256000,"output":256000}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.5-flash-2603"},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.5-flash"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"canonical_model_id":"stepfun/step-3.7-flash"}}},"melious":{"id":"melious","env":["MELIOUS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.melious.ai/v1","name":"Melious","doc":"https://melious.ai/docs/reference/models","models":{"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.11592,"output":0.46368,"cache_read":0.023184},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.11592,"output":0.2898,"cache_read":0.023184},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3.1878,"output":15.939,"cache_read":0.788256},"canonical_model_id":"moonshotai/kimi-k3"},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":1.10124,"output":3.36168,"cache_read":0.266616},"canonical_model_id":"zhipuai/glm-5"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.23184,"output":1.1592,"cache_read":0.011592},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.81144,"output":4.0572,"cache_read":0.266616},"canonical_model_id":"moonshotai/kimi-k2.6"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.5796,"output":2.95596,"cache_read":0.139104},"canonical_model_id":"moonshotai/kimi-k2.5"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":1.50696,"output":4.6368,"cache_read":0.370944},"canonical_model_id":"zhipuai/glm-5.1"},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":32768},"cost":{"input":0.69552,"output":2.78208,"cache_read":0.185472},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":64000},"cost":{"input":0.34776,"output":0.5796,"cache_read":0.092736},"canonical_model_id":"deepseek/deepseek-v3.2"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.1592,"output":3.4776,"cache_read":0.23184},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.81144,"output":3.4776,"cache_read":0.220248},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"berget":{"id":"berget","env":["BERGET_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.berget.ai/v1","name":"Berget.AI","doc":"https://api.berget.ai","models":{"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B Instruct","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["audio","image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.275,"output":0.55}},"Qwen/Qwen3.8-27B-FP8":{"id":"Qwen/Qwen3.8-27B-FP8","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.46,"output":3.48},"canonical_model_id":"alibaba/qwen3.8-27b"},"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"mistralai/Mistral-Small-3.2-24B-Instruct-2506","name":"Mistral Small 3.2 24B Instruct 2506","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":8192},"cost":{"input":0.33,"output":0.33}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"output":32768},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":32768},"cost":{"input":1.54,"output":4.84},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-09-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0.29,"output":0.58},"canonical_model_id":"zhipuai/glm-5.3-flash"}}},"snowflake-cortex":{"id":"snowflake-cortex","env":["SNOWFLAKE_ACCOUNT","SNOWFLAKE_CORTEX_PAT"],"npm":"@ai-sdk/openai-compatible","api":"https://${SNOWFLAKE_ACCOUNT}.snowflakecomputing.com/api/v2/cortex/v1","name":"Snowflake Cortex","doc":"https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-rest-api","models":{"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"canonical_model_id":"anthropic/claude-haiku-4-5"},"openai-gpt-5.5":{"id":"openai-gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","canonical_model_id":"openai/gpt-5.5"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"canonical_model_id":"anthropic/claude-opus-4-5"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"openai-gpt-5-nano":{"id":"openai-gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"input":272000,"output":8192},"status":"beta","canonical_model_id":"openai/gpt-5-nano"},"openai-gpt-5":{"id":"openai-gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"input":272000,"output":8192},"status":"beta","canonical_model_id":"openai/gpt-5"},"openai-gpt-4.1":{"id":"openai-gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"canonical_model_id":"openai/gpt-4.1"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-opus-5"},"mistral-large2":{"id":"mistral-large2","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"canonical_model_id":"mistral/mistral-large-latest"},"openai-gpt-5.2":{"id":"openai-gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5.2"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-fable-5"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-opus-4-8"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-sonnet-5"},"openai-gpt-5.6-luna":{"id":"openai-gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","canonical_model_id":"openai/gpt-5.6-luna"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-opus-4-6"},"openai-gpt-5.6-sol":{"id":"openai-gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","canonical_model_id":"openai/gpt-5.6-sol"},"openai-gpt-5-mini":{"id":"openai-gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"input":272000,"output":8192},"status":"beta","canonical_model_id":"openai/gpt-5-mini"},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"canonical_model_id":"deepseek/deepseek-r1"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"openai-gpt-5.1":{"id":"openai-gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"input":272000,"output":8192},"canonical_model_id":"openai/gpt-5.1"},"snowflake-llama3.3-70b":{"id":"snowflake-llama3.3-70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"openai-gpt-5.6-terra":{"id":"openai-gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","canonical_model_id":"openai/gpt-5.6-terra"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"canonical_model_id":"anthropic/claude-opus-4-7"},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-3.1-pro-preview"},"openai-gpt-5.4":{"id":"openai-gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"status":"beta","experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"canonical_model_id":"openai/gpt-5.4"}}},"sarvam":{"id":"sarvam","env":["SARVAM_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.sarvam.ai/v1","name":"Sarvam AI","doc":"https://docs.sarvam.ai/api-reference-docs/getting-started/models","models":{"sarvam-30b":{"id":"sarvam-30b","name":"Sarvam-30B","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":[null,"low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-18","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536}},"sarvam-105b":{"id":"sarvam-105b","name":"Sarvam-105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":[null,"low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-18","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072}}}},"nova":{"id":"nova","env":["NOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.nova.amazon.com/v1","name":"Nova","doc":"https://nova.amazon.com/dev/documentation","models":{"nova-2-pro-v1":{"id":"nova-2-pro-v1","name":"Nova 2 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2026-01-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0}},"nova-2-lite-v1":{"id":"nova-2-lite-v1","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"reasoning":0}}}},"abacus":{"id":"abacus","env":["ABACUS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://routellm.abacus.ai/v1","name":"Abacus","doc":"https://abacus.ai/help/api","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5},"canonical_model_id":"alibaba/qwen3.7-max"},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"Nano Banana 2 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30},"canonical_model_id":"google/gemini-2.5-flash-image"},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6},"canonical_model_id":"alibaba/qwen3.8-max"},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5-codex"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"claude-3-7-sonnet-20250219":{"id":"claude-3-7-sonnet-20250219","name":"Claude Sonnet 3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"qwen-2.5-coder-32b":{"id":"qwen-2.5-coder-32b","name":"Qwen 2.5 Coder 32B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.79,"output":0.79}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4},"canonical_model_id":"openai/o4-mini"},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.18},"canonical_model_id":"openai/gpt-5.3-codex"},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"GPT-5.2 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"GPT-5.1 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":1.2,"output":6}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"kimi-k2-turbo-preview":{"id":"kimi-k2-turbo-preview","name":"Kimi K2 Turbo Preview","description":"Fast Kimi model for responsive chat, coding help, and agent loops","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":0.15,"output":8}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"Grok 4 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":16384},"cost":{"input":0.2,"output":0.5}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Nano Banana Pro Preview","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3-pro-image-preview"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3.1-pro-preview"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6},"canonical_model_id":"xai/grok-4.5"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Llama 3.3 70B Versatile","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.59,"output":0.79}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-5"},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2},"canonical_model_id":"xiaomi/mimo-v2-pro"},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-4o-mini"},"o3-pro":{"id":"o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":40},"canonical_model_id":"openai/o3-pro"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3-pro-image"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"canonical_model_id":"anthropic/claude-fable-5"},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-8"},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.2,"output":1.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"gpt-5.3-codex-xhigh":{"id":"gpt-5.3-codex-xhigh","name":"GPT-5.3 Codex XHigh","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"gpt-4o-2024-11-20":{"id":"gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.6-terra"},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-7"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}},"route-llm":{"id":"route-llm","name":"RouteLLM","description":"RouteLLM routes prompts to an appropriate Abacus-backed text-generation model","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2026-07-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":3,"output":15}},"grok-4-0709":{"id":"grok-4-0709","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":3,"output":15}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"canonical_model_id":"google/gemini-3.1-flash-lite"},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.55,"output":1.66}},"meta-llama/Meta-Llama-3.3-70B-Instruct":{"id":"meta-llama/Meta-Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.59,"output":0.79},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta-llama/Meta-Llama-3.1-8B-Instruct":{"id":"meta-llama/Meta-Llama-3.1-8B-Instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.05}},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{"id":"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo","name":"Llama 3.1 405B Instruct Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":3.5,"output":3.5}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.14,"output":0.59},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":3.74,"output":9.36,"cache_read":0.748},"canonical_model_id":"thinkingmachines/inkling"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"Qwen/QwQ-32B":{"id":"Qwen/QwQ-32B","name":"QwQ 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2024-11-28","last_updated":"2024-11-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.4,"output":0.4}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.13,"output":0.6}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen 2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":0.38}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.09,"output":0.29},"canonical_model_id":"alibaba/qwen3-32b"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.29,"output":1.2},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.32,"output":3.2},"canonical_model_id":"alibaba/qwen3.6-27b"},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":3,"output":7}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.74,"output":3.48,"cache_read":0.15},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-15","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":0.4}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.27,"output":1}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.7"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.7"},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2},"canonical_model_id":"zhipuai/glm-5"},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.6"},"zai-org/GLM-4.5":{"id":"zai-org/GLM-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":96000},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.5"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.08,"output":0.44},"canonical_model_id":"openai/gpt-oss-120b"}}},"novita-ai":{"id":"novita-ai","env":["NOVITA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.novita.ai/openai","name":"Novita AI","doc":"https://novita.ai/docs/guides/introduction","models":{"baai/bge-m3":{"id":"baai/bge-m3","type":"embedding","name":"BGE M3","description":"Multilingual embedding model combining dense, sparse, and multi-vector retrieval","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-30","last_updated":"2024-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":0},"cost":{"input":0.01,"output":0},"canonical_model_id":"baai/bge-m3"},"baai/bge-reranker-v2-m3":{"id":"baai/bge-reranker-v2-m3","type":"reranking","name":"BGE Reranker V2 M3","description":"Lightweight multilingual cross-encoder that scores query-document relevance","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-15","last_updated":"2024-03-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":0},"cost":{"input":0.01,"output":0},"canonical_model_id":"baai/bge-reranker-v2-m3"},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.44,"output":1.32,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-r1-0528-qwen3-8b":{"id":"deepseek/deepseek-r1-0528-qwen3-8b","name":"DeepSeek R1 0528 Qwen3 8B","description":"DeepSeek R1 0528 distilled into Qwen3 8B for mathematics, coding, and reasoning","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.06,"output":0.09},"canonical_model_id":"deepseek/deepseek-r1-0528-qwen3-8b"},"deepseek/deepseek-ocr-2":{"id":"deepseek/deepseek-ocr-2","name":"DeepSeek OCR 2","description":"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.03,"output":0.03},"canonical_model_id":"deepseek/deepseek-ocr-2"},"deepseek/deepseek-r1-turbo":{"id":"deepseek/deepseek-r1-turbo","name":"DeepSeek R1 (Turbo)","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek_v3":{"id":"deepseek/deepseek_v3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.89,"output":0.89},"canonical_model_id":"deepseek/deepseek-v3"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.6,"output":3.2,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"May 2025 DeepSeek R1 update with improved mathematics, coding, and reasoning","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5,"cache_read":0.35},"canonical_model_id":"deepseek/deepseek-r1-0528"},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"canonical_model_id":"tencent/hy3"},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"id":"meta-llama/llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8192},"cost":{"input":0.27,"output":0.85},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":12288,"output":12288},"cost":{"input":0.135,"output":0.4},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.05},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Compact instruction-tuned Llama model for multilingual dialogue and on-device assistants","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":32000},"cost":{"input":0.02,"output":0.02},"canonical_model_id":"meta/llama-3.2-1b-instruct"},"meta-llama/llama-4-scout-17b-16e-instruct":{"id":"meta-llama/llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.18,"output":0.59},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"nousresearch/hermes-2-pro-llama-3-8b":{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"Hermes 2 Pro Llama 3 8B","description":"Llama 3 fine-tune optimized for function calling, structured JSON responses, and dialogue","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-04-30","last_updated":"2024-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.14,"output":0.14},"canonical_model_id":"nousresearch/hermes-2-pro-llama-3-8b"},"xiaomimimo/mimo-v2.6-pro":{"id":"xiaomimimo/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomimimo/mimo-v2.5":{"id":"xiaomimimo/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomimimo/mimo-v2.5-pro":{"id":"xiaomimimo/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.522,"output":1.044,"cache_read":0.0043},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomimimo/mimo-v2.6-flash":{"id":"xiaomimimo/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"baidu/ernie-4.5-21B-a3b":{"id":"baidu/ernie-4.5-21B-a3b","name":"ERNIE 4.5 21B A3B","description":"Open ERNIE text MoE with 21B total and 3B active parameters","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":120000,"output":8000},"cost":{"input":0.07,"output":0.28},"canonical_model_id":"baidu/ernie-4.5-21b-a3b"},"baidu/cobuddy":{"id":"baidu/cobuddy","name":"CoBuddy","description":"Baidu Qianfan model optimized for code generation and tool-using coding agents","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-06","last_updated":"2026-05-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.28,"output":1.13,"cache_read":0.07},"canonical_model_id":"baidu/cobuddy"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":98304,"output":16384},"cost":{"input":0.119,"output":0.2},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-12b-it"},"minimaxai/minimax-m1-80k":{"id":"minimaxai/minimax-m1-80k","name":"MiniMax M1 80K","description":"Open hybrid-attention MoE reasoning model with a million-token context and an 80K thinking budget","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2},"canonical_model_id":"minimax/minimax-m1-80k"},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Hybrid-linear MoE reasoning model with 124B total and 5.1B active parameters for efficient agents","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.18,"cache_read":0.012},"canonical_model_id":"inclusionai/ling-3.0-flash"},"inclusionai/ling-3.1-flash":{"id":"inclusionai/ling-3.1-flash","name":"Ling 3.1 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"inclusionai/ling-3.0-flash-sante":{"id":"inclusionai/ling-3.0-flash-sante","name":"Ling 3.0 Flash Sante","description":"Health and medicine specialization of Ling 3.0 Flash for medical reasoning and evidence-based retrieval","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash-sante"},"inclusionai/ling-3.0-flash-vl":{"id":"inclusionai/ling-3.0-flash-vl","name":"Ling 3.0 Flash VL","description":"Native multimodal hybrid MoE model for image and video understanding, reasoning, and visual agents","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash-vl"},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-08-27","last_updated":"2026-09-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash-fin"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3.4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Non-thinking Kimi K2 MoE instruction model for coding and tool-using agents","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3},"canonical_model_id":"moonshotai/kimi-k2-instruct"},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 Instruct 0905","description":"September 2025 Kimi K2 instruction update with a 256K context and improved agentic coding","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-0905"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/glm-4.6v":{"id":"zai-org/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.055},"canonical_model_id":"zhipuai/glm-4.6v"},"zai-org/glm-5.3-flash":{"id":"zai-org/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/glm-4.6":{"id":"zai-org/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"zai-org/glm-5":{"id":"zai-org/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"zai-org/glm-4.5v":{"id":"zai-org/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flash"},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.38,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai-org/autoglm-phone-9b-multilingual":{"id":"zai-org/autoglm-phone-9b-multilingual","name":"AutoGLM Phone 9B Multilingual","description":"Multilingual visual model for operating smartphone interfaces and mobile agents","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.035,"output":0.138},"canonical_model_id":"zhipuai/autoglm-phone-9b-multilingual"},"zai-org/glm-4.5-air":{"id":"zai-org/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai-org/glm-5.3":{"id":"zai-org/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"apodex/apodex-1.1-mini":{"id":"apodex/apodex-1.1-mini","name":"Apodex 1.1 Mini","description":"Open-weight 35B MoE model for long-horizon research, forecasting, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-24","last_updated":"2026-08-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"apodex/apodex-1.1-mini"},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.2},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax L2 13B","description":"Llama 2 merge combining MythoLogic and Huginn for creative writing and roleplay","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-08-10","last_updated":"2023-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3200},"cost":{"input":0.09,"output":0.09},"canonical_model_id":"gryphe/mythomax-l2-13b"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":524288}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"paddlepaddle/paddleocr-vl":{"id":"paddlepaddle/paddleocr-vl","name":"PaddleOCR VL","description":"Compact vision-language model for multilingual document parsing, OCR, tables, formulas, and charts","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.02},"canonical_model_id":"paddlepaddle/paddleocr-vl"},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":256000,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"mindai/macaron-v1-tall":{"id":"mindai/macaron-v1-tall","name":"Macaron V1 Tall","description":"Qwen3.6-based Mixture-of-LoRA model with specialists for chat, personal agents, coding, and generative UI","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2475,"output":1.43,"cache_read":0.044},"canonical_model_id":"mindlab/macaron-v1-tall"},"mindai/macaron-v1-venti":{"id":"mindai/macaron-v1-venti","name":"Macaron V1 Venti","description":"GLM-5.2-based Mixture-of-LoRA model with specialists for chat, personal agents, coding, and generative UI","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.825,"output":2.475,"cache_read":0.165},"canonical_model_id":"mindlab/macaron-v1-venti"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.42,"output":3,"cache_read":0.085},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3-omni-30b-a3b-thinking":{"id":"qwen/qwen3-omni-30b-a3b-thinking","name":"Qwen3 Omni 30B A3B Thinking","description":"Multimodal reasoning model accepting text, images, video, and audio with text output","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.25,"output":0.97,"input_audio":2.2},"canonical_model_id":"alibaba/qwen3-omni-30b-a3b-thinking"},"qwen/qwen3-reranker-8b":{"id":"qwen/qwen3-reranker-8b","type":"reranking","name":"Qwen3 Reranker 8B","description":"Multilingual query-document reranking model supporting more than 100 languages","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":0},"cost":{"input":0.05,"output":0},"canonical_model_id":"alibaba/qwen3-reranker-8b"},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Open vision-language MoE model for image and video understanding, documents, and visual agents","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen-mt-plus":{"id":"qwen/qwen-mt-plus","name":"Qwen MT Plus","description":"Flagship Qwen translation model with terminology control and support for 92 languages","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-07-24","last_updated":"2025-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.25,"output":0.75},"canonical_model_id":"alibaba/qwen-mt-plus"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3-embedding-8b":{"id":"qwen/qwen3-embedding-8b","type":"embedding","name":"Qwen3 Embedding 8B","description":"Multilingual text embedding model for retrieval, code search, classification, and clustering","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":0},"cost":{"input":0.07,"output":0},"canonical_model_id":"alibaba/qwen3-embedding-8b"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.6-27b"},"baichuan/baichuan-m2-32b":{"id":"baichuan/baichuan-m2-32b","name":"Baichuan M2 32B","description":"Open medical model trained for clinical reasoning and patient interaction with on, off, and auto thinking modes","family":"baichuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.07,"output":0.07},"canonical_model_id":"baichuan/baichuan-m2-32b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.25},"canonical_model_id":"openai/gpt-oss-120b"},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM 2 8x22B","description":"Microsoft WizardLM instruction-tuned Mixtral MoE for multilingual dialogue and complex tasks","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-04-15","last_updated":"2024-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62},"canonical_model_id":"microsoft/wizardlm-2-8x22b"}}},"302ai":{"id":"302ai","env":["302AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.302.ai/v1","name":"302.AI","doc":"https://doc.302.ai","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"grok-4-1-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.145,"output":0.43}},"gpt-5.4":{"id":"gpt-5.4","name":"gpt-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":0,"tiers":[{"input":5,"output":22.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5}}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.286,"output":1.142}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"claude-haiku-4-5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.8,"output":5.3},"canonical_model_id":"alibaba/qwen3.7-max"},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"gemini-3.1-flash-image-preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60}},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":0.5},"canonical_model_id":"xai/grok-4.7"},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.72,"output":2.88},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"gpt-5.4-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25}},"gemini-3.5-flash-thinking":{"id":"gemini-3.5-flash-thinking","name":"gemini-3.5-flash-thinking","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"gemini-3-pro-preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"gemini-2.5-flash-image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-08","last_updated":"2025-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30}},"gpt-4o":{"id":"gpt-4o","name":"gpt-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.25},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-4.6":{"id":"glm-4.6","name":"glm-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"qwen3-235b-a22b-instruct-2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":65536},"cost":{"input":0.29,"output":1.143}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.16,"output":6.36},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"gpt-5.6-sol-pro":{"id":"gpt-5.6-sol-pro","name":"gpt-5.6-sol-pro","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.12,"output":0.69},"canonical_model_id":"alibaba/qwen3.5-plus"},"claude-sonnet-4-6-thinking":{"id":"claude-sonnet-4-6-thinking","name":"claude-sonnet-4-6-thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-18","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"glm-5":{"id":"glm-5","name":"glm-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.6}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"gpt-4.1-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"grok-4-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.6"},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"gpt-5.2-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"gpt-5.1-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10}},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.1"},"gemini-2.5-flash-preview-09-2025":{"id":"gemini-2.5-flash-preview-09-2025","name":"gemini-2.5-flash-preview-09-2025","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.29,"output":0.86}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"canonical_model_id":"anthropic/claude-fable-5-1"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"google/gemini-3.6-flash"},"claude-opus-5-thinking":{"id":"claude-opus-5-thinking","name":"claude-opus-5-thinking","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-5"},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"qwen3-coder-480b-a35b-instruct","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.86,"output":3.43}},"doubao-seed-1-6-vision-250815":{"id":"doubao-seed-1-6-vision-250815","name":"doubao-seed-1-6-vision-250815","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.114,"output":1.143}},"claude-sonnet-4-5-20250929-thinking":{"id":"claude-sonnet-4-5-20250929-thinking","name":"claude-sonnet-4-5-20250929-thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5},"canonical_model_id":"xai/grok-4.3"},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"kimi-k2-thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.575,"output":2.3}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"grok-4-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5}},"grok-4.20-beta-0309-reasoning":{"id":"grok-4.20-beta-0309-reasoning","name":"grok-4.20-beta-0309-reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"claude-opus-4-1-20250805","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"gpt-5-pro":{"id":"gpt-5-pro","name":"gpt-5-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-08","last_updated":"2025-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"claude-opus-4-5-20251101","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"gemini-3-pro-image-preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":64000},"cost":{"input":2,"output":120}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"gemini-2.0-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-11","release_date":"2025-06-16","last_updated":"2025-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":8192},"cost":{"input":0.075,"output":0.3}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3-235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.29,"output":2.86}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50},"canonical_model_id":"openai/gpt-6-astra"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"canonical_model_id":"google/gemini-3.1-pro-preview"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6},"canonical_model_id":"xai/grok-4.5"},"gpt-5.6-luna-pro":{"id":"gpt-5.6-luna-pro","name":"gpt-5.6-luna-pro","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2},"canonical_model_id":"openai/gpt-5.6-luna"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.66,"output":3.3},"canonical_model_id":"moonshotai/kimi-k2.5"},"gpt-5.1":{"id":"gpt-5.1","name":"gpt-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-5"},"qwen3.7-max-2026-06-08":{"id":"qwen3.7-max-2026-06-08","name":"qwen3.7-max-2026-06-08","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.8,"output":5.3},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.283,"output":1.705},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"kimi-k2-0905-preview":{"id":"kimi-k2-0905-preview","name":"kimi-k2-0905-preview","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.632,"output":2.53}},"deepseek-flash":{"id":"deepseek-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":10}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.188,"output":1.133},"canonical_model_id":"alibaba/qwen3.6-flash"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"canonical_model_id":"anthropic/claude-fable-5"},"doubao-seed-1-6-thinking-250715":{"id":"doubao-seed-1-6-thinking-250715","name":"doubao-seed-1-6-thinking-250715","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16000},"cost":{"input":0.121,"output":1.21}},"gpt-5-thinking":{"id":"gpt-5-thinking","name":"gpt-5-thinking","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax-M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-16","last_updated":"2025-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.132,"output":1.254}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"gpt-5.4-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5}},"glm-4.7":{"id":"glm-4.7","name":"glm-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.286,"output":1.142}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2},"canonical_model_id":"openai/gpt-5.6-luna"},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.7"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.18,"output":0.564},"canonical_model_id":"alibaba/qwen3.8-flash"},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14}},"deepseek-v3.2-thinking":{"id":"deepseek-v3.2-thinking","name":"DeepSeek-V3.2-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.29,"output":0.43}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"claude-sonnet-4-5-20250929","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15}},"gpt-4.1":{"id":"gpt-4.1","name":"gpt-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10},"canonical_model_id":"anthropic/claude-sonnet-5"},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.06,"output":0.46},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3-30B-A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.11,"output":1.08}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.2"},"gemini-2.5-flash-nothink":{"id":"gemini-2.5-flash-nothink","name":"gemini-2.5-flash-nothink","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-24","last_updated":"2025-06-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":2.5}},"doubao-seed-1-8-251215":{"id":"doubao-seed-1-8-251215","name":"doubao-seed-1-8-251215","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":224000,"output":64000},"cost":{"input":0.114,"output":0.286}},"claude-opus-4-1-20250805-thinking":{"id":"claude-opus-4-1-20250805-thinking","name":"claude-opus-4-1-20250805-thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-27","last_updated":"2025-05-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.1"},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"gemini-3-flash-preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"claude-haiku-4-5-20251001","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5}},"mistral-large-2512":{"id":"mistral-large-2512","name":"mistral-large-2512","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":262144},"cost":{"input":1.1,"output":3.3}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-10-26","last_updated":"2025-10-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.33,"output":1.32}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"gemini-2.5-flash-lite-preview-09-2025","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"gpt-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6}},"gpt-5.6-terra-pro":{"id":"gpt-5.6-terra-pro","name":"gpt-5.6-terra-pro","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12},"canonical_model_id":"openai/gpt-5.6-terra"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75},"canonical_model_id":"google/gemini-3.8-flash"},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"ministral-14b-2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.33,"output":0.33}},"glm-5-turbo":{"id":"glm-5-turbo","name":"glm-5-turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0.72,"output":3.2}},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"grok-4.1":{"id":"grok-4.1","name":"grok-4.1","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2,"output":10}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"claude-sonnet-4-6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-18","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15}},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14},"canonical_model_id":"openai/gpt-5.3-chat-latest"},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8},"canonical_model_id":"alibaba/qwen3.6-plus"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12},"canonical_model_id":"openai/gpt-5.6-terra"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"deepseek-v3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.29,"output":0.43}},"claude-opus-4-7-thinking":{"id":"claude-opus-4-7-thinking","name":"claude-opus-4-7-thinking","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-7"},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8},"canonical_model_id":"openai/o3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"claude-opus-4-7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"gpt-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6},"canonical_model_id":"xai/grok-4.6"},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"qwen3-max-2025-09-23":{"id":"qwen3-max-2025-09-23","name":"qwen3-max-2025-09-23","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":258048,"output":65536},"cost":{"input":0.86,"output":3.43}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.285,"output":1.15},"canonical_model_id":"alibaba/qwen3.7-plus"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite"}}},"openrouter":{"id":"openrouter","env":["OPENROUTER_API_KEY"],"npm":"@openrouter/ai-sdk-provider","api":"https://openrouter.ai/api/v1","name":"OpenRouter","doc":"https://openrouter.ai/models","models":{"sao10k/l3-lunaris-8b":{"id":"sao10k/l3-lunaris-8b","name":"Llama 3 8B Lunaris","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":7372},"cost":{"input":0.04,"output":0.05}},"sao10k/l3.3-euryale-70b":{"id":"sao10k/l3.3-euryale-70b","name":"Llama 3.3 Euryale 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-12-18","last_updated":"2024-12-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.65,"output":0.75}},"sao10k/l3.1-euryale-70b":{"id":"sao10k/l3.1-euryale-70b","name":"Llama 3.1 Euryale 70B v2.2","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-28","last_updated":"2024-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.85,"output":0.85}},"bytedance-seed/seed-1.6-flash":{"id":"bytedance-seed/seed-1.6-flash","name":"Seed 1.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.3,"tiers":[{"input":0.1,"output":0.8,"tier":{"type":"context","size":128000}}]}},"bytedance-seed/seed-2.0-lite":{"id":"bytedance-seed/seed-2.0-lite","name":"Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.25,"output":2,"tiers":[{"input":0.5,"output":4,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"bytedance-seed/seed-2-1-turbo":{"id":"bytedance-seed/seed-2-1-turbo","name":"Seed 2.1 Turbo","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5}},"bytedance-seed/seed-2.0-mini":{"id":"bytedance-seed/seed-2.0-mini","name":"Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.4,"tiers":[{"input":0.2,"output":0.8,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"bytedance-seed/seed-2.0-code":{"id":"bytedance-seed/seed-2.0-code","name":"Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"tiers":[{"input":1,"output":6,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"bytedance-seed/seed-1.6":{"id":"bytedance-seed/seed-1.6","name":"Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2,"tiers":[{"input":0.5,"output":4,"tier":{"type":"context","size":128000}}]}},"~moonshotai/kimi-latest":{"id":"~moonshotai/kimi-latest","name":"Kimi Latest","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.55,"output":16.5,"cache_read":0.3}},"poolside/laguna-s-2.1:free":{"id":"poolside/laguna-s-2.1:free","name":"Laguna S 2.1 (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"laguna-s","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.09,"output":0.18,"cache_read":0.009}},"poolside/laguna-xs-2.1:free":{"id":"poolside/laguna-xs-2.1:free","name":"Laguna XS 2.1 (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-xs-2.1"},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.12,"cache_read":0.03},"canonical_model_id":"poolside/laguna-xs-2.1"},"prism-ml/ternary-bonsai-2-27b":{"id":"prism-ml/ternary-bonsai-2-27b","name":"Ternary Bonsai 2 27B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.075,"output":0.5,"cache_read":0.0375}},"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-haiku-5.5":{"id":"anthropic/claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"nex-agi/nex-n2.5-mini":{"id":"nex-agi/nex-n2.5-mini","name":"Nex-N2.5-Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.025,"output":0.1,"cache_read":0.0025}},"nex-agi/nex-n2.5-pro":{"id":"nex-agi/nex-n2.5-pro","name":"Nex-N2.5-Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.075,"output":0.25,"cache_read":0.015}},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"cohere/command-r-08-2024"},"cohere/command-a-plus":{"id":"cohere/command-a-plus","name":"Command A+","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":64000},"cost":{"input":0.3,"output":1.5,"cache_read":0.15}},"cohere/command-a":{"id":"cohere/command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":2.5,"output":10}},"cohere/north-mini-code:free":{"id":"cohere/north-mini-code:free","name":"North Mini Code (free)","description":"Cohere coding model for practical software engineering and agentic edits","family":"north","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0}},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-12-2024"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-r-plus-08-2024"},"deepseek/deepseek-chat-v3.1":{"id":"deepseek/deepseek-chat-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.25,"output":0.95,"cache_read":0.13}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.0137,"output":0.64,"cache_read":0.0137},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.00686},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":1}},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.32,"output":0.89},"canonical_model_id":"deepseek/deepseek-chat"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":147456},"cost":{"input":0.27,"output":0.41}},"deepseek/deepseek-chat-v3-0324":{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":115200},"cost":{"input":0.29,"output":1.14,"cache_read":0.11}},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16000},"cost":{"input":0.7,"output":2.5},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.9483,"output":1.8966,"cache_read":0.079025},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"canonical_model_id":"deepseek/deepseek-r1-0528"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":147456},"cost":{"input":0.259,"output":0.8,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.0057,"output":1.28,"cache_read":0.0057},"canonical_model_id":"deepseek/deepseek-v4-flash"},"unbiased/pareto-26.10-preview":{"id":"unbiased/pareto-26.10-preview","name":"Pareto 26.10 Preview","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":3.2,"cache_read":0.03}},"unbiased/pareto":{"id":"unbiased/pareto","name":"Pareto","description":"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"canonical_model_id":"unbiased/pareto"},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.18,"output":0.6,"cache_read":0.06},"canonical_model_id":"tencent/hy3-preview"},"tencent/hunyuan-a13b-instruct":{"id":"tencent/hunyuan-a13b-instruct","name":"Hunyuan A13B Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.14,"output":0.57}},"tencent/hy-mt2-30b-a3b":{"id":"tencent/hy-mt2-30b-a3b","name":"Hy-MT2-30B-A3B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-1.8b":{"id":"tencent/hy-mt2-1.8b","name":"Hy-MT2-1.8B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-20","last_updated":"2026-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.044,"output":0.177}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"tencent/hy-mt2-7b":{"id":"tencent/hy-mt2-7b","name":"Hy-MT2-7B","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.074,"output":0.295}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"anthracite-org/magnum-v4-72b":{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":4096},"cost":{"input":2.5,"output":5}},"meta-llama/llama-4-scout":{"id":"meta-llama/llama-4-scout","name":"Llama 4 Scout","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":16384},"cost":{"input":0.1,"output":0.3}},"meta-llama/llama-guard-4-12b":{"id":"meta-llama/llama-guard-4-12b","name":"Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.18,"output":0.18}},"meta-llama/llama-4-maverick":{"id":"meta-llama/llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"cost":{"input":0.1875,"output":0.6525,"cache_read":0.05}},"meta-llama/llama-3.3-70b-instruct":{"id":"meta-llama/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.22,"output":0.5,"cache_read":0.11},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta-llama/llama-3.1-8b-instruct":{"id":"meta-llama/llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.08,"cache_read":0.025},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/llama-3.2-1b-instruct":{"id":"meta-llama/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":54000},"cost":{"input":0.027,"output":0.201},"canonical_model_id":"meta/llama-3.2-1b-instruct"},"meta-llama/llama-3.2-3b-instruct":{"id":"meta-llama/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.05,"output":0.33}},"meta-llama/llama-3.1-70b-instruct":{"id":"meta-llama/llama-3.1-70b-instruct","name":"Llama-3.1-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.4,"output":0.4},"canonical_model_id":"meta/llama-3.1-70b-instruct"},"~google/gemini-flash-latest":{"id":"~google/gemini-flash-latest","name":"Gemini Flash Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667}},"~google/gemini-pro-latest":{"id":"~google/gemini-pro-latest","name":"Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["audio","pdf","image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"perceptron/perceptron-mk1":{"id":"perceptron/perceptron-mk1","name":"Perceptron Mk1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.15,"output":1.5}},"perceptron/perceptron-mk1.5":{"id":"perceptron/perceptron-mk1.5","name":"Perceptron Mk1.5","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":36864,"output":8192},"cost":{"input":0.15,"output":1.5}},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-4.6v"},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5.3-prime":{"id":"z-ai/glm-5.3-prime","name":"GLM 5.3 Prime","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943717},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.5,"output":2,"cache_read":0.1},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.6,"output":1.92,"cache_read":0.12},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-4.5v":{"id":"z-ai/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"z-ai/glm-5.3-flashx":{"id":"z-ai/glm-5.3-flashx","name":"GLM 5.3 FlashX","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.09}},"z-ai/glm-4.7-flash":{"id":"z-ai/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":117964},"cost":{"input":0.0605,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.06,"output":7,"cache_read":0.059},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.966,"output":3.036,"cache_read":0.1794},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.07,"output":4.8,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-5.3"},"inference-net/schematron-v2-small":{"id":"inference-net/schematron-v2-small","name":"Schematron V2 Small","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05}},"inference-net/schematron-v2-turbo":{"id":"inference-net/schematron-v2-turbo","name":"Schematron V2 Turbo","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03}},"thinkingmachines/inkling-small:free":{"id":"thinkingmachines/inkling-small:free","name":"Inkling Small (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":262144},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling:free":{"id":"thinkingmachines/inkling:free","name":"Inkling (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"thinkingmachines/inkling"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":471859},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"meituan/longcat-2.0":{"id":"meituan/longcat-2.0","name":"LongCat 2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-20","last_updated":"2026-07-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048756,"output":262144},"cost":{"input":0.3,"output":1.2,"cache_read":0.006}},"openrouter/bodybuilder":{"id":"openrouter/bodybuilder","name":"Body Builder (beta)","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000}},"openrouter/free":{"id":"openrouter/free","name":"Free Models Router","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":200000,"output":8000},"cost":{"input":0,"output":0}},"openrouter/pareto-code":{"id":"openrouter/pareto-code","name":"Pareto Code Router","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":200000}},"openrouter/fusion":{"id":"openrouter/fusion","name":"Fusion","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"openrouter/auto":{"id":"openrouter/auto","name":"Auto Router","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2023-11-08","last_updated":"2023-11-08","modalities":{"input":["text","image","audio","pdf","video"],"output":["text","image"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8,"reasoning":3}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":114364},"cost":{"input":1,"output":1}},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-03-07","last_updated":"2025-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":115200},"cost":{"input":2,"output":8}},"perplexity/sonar-pro-search":{"id":"perplexity/sonar-pro-search","name":"Sonar Pro Search","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-30","last_updated":"2025-10-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"nousresearch/hermes-3-llama-3.1-70b":{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Hermes 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-18","last_updated":"2024-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":0.7}},"nousresearch/hermes-3-llama-3.1-405b":{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Hermes 3 405B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"nousresearch","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-16","last_updated":"2024-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":1}},"nousresearch/hermes-4-405b":{"id":"nousresearch/hermes-4-405b","name":"Hermes 4 405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"hermes","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":1,"output":3}},"~z-ai/glm-flash-latest":{"id":"~z-ai/glm-flash-latest","name":"GLM Flash Latest","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.032,"output":1.2,"cache_read":0.032}},"~z-ai/glm-latest":{"id":"~z-ai/glm-latest","name":"GLM Latest","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-19","last_updated":"2026-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.07,"output":4.8,"cache_read":0.05}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":80000},"cost":{"input":0.25,"output":0.8,"cache_read":0.06},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"~openai/gpt-terra-latest":{"id":"~openai/gpt-terra-latest","name":"GPT Terra Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}}},"~openai/gpt-luna-latest":{"id":"~openai/gpt-luna-latest","name":"GPT Luna Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}}},"~openai/gpt-sol-latest":{"id":"~openai/gpt-sol-latest","name":"GPT Sol Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}}},"~openai/gpt-astra-latest":{"id":"~openai/gpt-astra-latest","name":"GPT Astra Latest","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}}},"~openai/gpt-mini-latest":{"id":"~openai/gpt-mini-latest","name":"GPT Mini Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"cognitivecomputations/dolphin-mistral-24b-venice-edition":{"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","name":"Uncensored","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04-30","release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.9}},"thedrummer/skyfall-36b-v2":{"id":"thedrummer/skyfall-36b-v2","name":"Skyfall 36B V2","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-03-10","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.55,"output":0.8,"cache_read":0.25}},"thedrummer/unslopnemo-12b":{"id":"thedrummer/unslopnemo-12b","name":"UnslopNemo 12B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-11-08","last_updated":"2024-11-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":819200},"cost":{"input":0.4,"output":0.4}},"thedrummer/cydonia-24b-v4.1":{"id":"thedrummer/cydonia-24b-v4.1","name":"Cydonia 24B V4.1","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2025-09-27","last_updated":"2025-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.3,"output":0.5,"cache_read":0.15}},"x-ai/grok-4.20-multi-agent":{"id":"x-ai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":900000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":230400},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":1800000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"~anthropic/claude-opus-latest":{"id":"~anthropic/claude-opus-latest","name":"Claude Opus Latest","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5}},"~anthropic/claude-haiku-latest":{"id":"~anthropic/claude-haiku-latest","name":"Claude Haiku Latest","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]}},"~anthropic/claude-sonnet-latest":{"id":"~anthropic/claude-sonnet-latest","name":"Claude Sonnet Latest","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5}},"~anthropic/claude-fable-latest":{"id":"~anthropic/claude-fable-latest","name":"Claude Fable Latest","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5}},"upstage/solar-pro-3":{"id":"upstage/solar-pro-3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":117964},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.09,"output":0.36,"cache_read":0.018}},"upstage/solar-mini4":{"id":"upstage/solar-mini4","name":"Solar Mini 4","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"solar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.005}},"~deepseek/deepseek-flash-latest":{"id":"~deepseek/deepseek-flash-latest","name":"DeepSeek Flash Latest","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-14","last_updated":"2026-09-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.0264,"output":1.188,"cache_read":0.0264}},"~deepseek/deepseek-pro-latest":{"id":"~deepseek/deepseek-pro-latest","name":"DeepSeek Pro Latest","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-14","last_updated":"2026-09-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.21,"output":5,"cache_read":0.2}},"~deepseek/deepseek-v4-flash-latest":{"id":"~deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-01","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":0.0136,"output":1.44,"cache_read":0.0136}},"~x-ai/grok-latest":{"id":"~x-ai/grok-latest","name":"Grok Latest","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":450000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}}},"bytedance/ui-tars-1.5-7b":{"id":"bytedance/ui-tars-1.5-7b","name":"UI-TARS 7B ","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"cost":{"input":0.1,"output":0.2,"cache_read":0.1}},"liquid/lfm-2.5-2.6b:free":{"id":"liquid/lfm-2.5-2.6b:free","name":"LFM2.5-2.6B (free)","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.34,"cache_read":0.05},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"google/lyria-3-pro-preview":{"id":"google/lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-pro-preview"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.08,"output":0.45,"cache_read":0.04},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemma-4-31b-it:free":{"id":"google/gemma-4-31b-it:free","name":"Gemma 4 31B (free)","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash-image"},"google/gemma-4-26b-a4b-it:free":{"id":"google/gemma-4-26b-a4b-it:free","name":"Gemma 4 26B A4B (free)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemma-2-27b-it":{"id":"google/gemma-2-27b-it","name":"Gemma 2 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-07-13","last_updated":"2024-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":2048},"cost":{"input":0.65,"output":0.65}},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.0675,"output":0.225,"cache_read":0.0375},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro Preview","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3-pro-image-preview"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"google/lyria-3-clip-preview":{"id":"google/lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-clip-preview"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"google/gemma-3-12b-it"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3-pro-image"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-4b-it"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"reasoning":0.4,"cache_read":0.01,"cache_write":0.083333},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-2.5-pro-preview":{"id":"google/gemini-2.5-pro-preview","name":"Gemini 2.5 Pro Preview 06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"reasoning":10,"cache_read":0.125,"cache_write":0.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"google/gemini-nano-banana-2.1":{"id":"google/gemini-nano-banana-2.1","name":"Nano Banana 2.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":58982},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"google/gemini-nano-banana-2.1"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.1-flash-lite"},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Palmyra X5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"palmyra","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-21","last_updated":"2026-01-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"output":8192},"cost":{"input":0.6,"output":6}},"ibm-granite/granite-4.0-h-micro":{"id":"ibm-granite/granite-4.0-h-micro","name":"Granite 4.0 Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"granite","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":117900},"cost":{"input":0.017,"output":0.112}},"ibm-granite/granite-4.2-8b":{"id":"ibm-granite/granite-4.2-8b","name":"Granite 4.2 8B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-31","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.06,"output":0.25,"cache_read":0.015}},"fireworks/ember-1":{"id":"fireworks/ember-1","name":"Ember-1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-24","last_updated":"2026-09-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":943718},"cost":{"input":3,"output":15,"cache_read":0.3}},"mistralai/mistral-nemo":{"id":"mistralai/mistral-nemo","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.029,"output":0.03},"canonical_model_id":"mistral/mistral-nemo"},"mistralai/ministral-8b-2512":{"id":"mistralai/ministral-8b-2512","name":"Ministral 3 8B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.15,"cache_read":0.015}},"mistralai/mistral-small-24b-instruct-2501":{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral Small 3","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.05,"output":0.08}},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.4,"output":2,"cache_read":0.04},"canonical_model_id":"mistral/devstral-2512"},"mistralai/mistral-saba":{"id":"mistralai/mistral-saba","name":"Saba","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-02-17","last_updated":"2025-02-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":26214},"cost":{"input":0.2,"output":0.6,"cache_read":0.02}},"mistralai/mistral-medium-3-5":{"id":"mistralai/mistral-medium-3-5","name":"Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":209715},"cost":{"input":1.5,"output":7.5}},"mistralai/mistral-medium-3.1":{"id":"mistralai/mistral-medium-3.1","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/mistral-small-3.2-24b-instruct":{"id":"mistralai/mistral-small-3.2-24b-instruct","name":"Mistral Small 3.2 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.09375,"output":0.25}},"mistralai/mistral-large":{"id":"mistralai/mistral-large","name":"Mistral Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11-30","release_date":"2024-02-26","last_updated":"2024-02-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":102400},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/mistral-small-2603":{"id":"mistralai/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"mistral/mistral-small-2603"},"mistralai/mistral-medium-3":{"id":"mistralai/mistral-medium-3","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":0.4,"output":2,"cache_read":0.04}},"mistralai/voxtral-small-24b-2507":{"id":"mistralai/voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":26214},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"canonical_model_id":"mistral/voxtral-small-24b-2507"},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"mistral/mistral-large-2512"},"mistralai/mistral-large-2407":{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-03-31","release_date":"2024-11-19","last_updated":"2024-11-19","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":104857},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/ministral-14b-2512":{"id":"mistralai/ministral-14b-2512","name":"Ministral 3 14B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":209715},"cost":{"input":0.2,"output":0.2,"cache_read":0.02}},"mistralai/mistral-large-4-0":{"id":"mistralai/mistral-large-4-0","name":"Mistral Large 4","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07}},"mistralai/mistral-small-3.1-24b-instruct":{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral Small 3.1 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":102400},"cost":{"input":0.351,"output":0.555}},"mistralai/ministral-3b-2512":{"id":"mistralai/ministral-3b-2512","name":"Ministral 3 3B 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":104857},"cost":{"input":0.1,"output":0.1,"cache_read":0.01}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-01-31","release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":52428},"cost":{"input":2,"output":6,"cache_read":0.2}},"mistralai/codestral-2508":{"id":"mistralai/codestral-2508","name":"Codestral 25.08","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":204800},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"canonical_model_id":"mistral/codestral-2508"},"sakana/fugu-max":{"id":"sakana/fugu-max","name":"Fugu Max","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25}},"sakana/fugu-ultra-v2":{"id":"sakana/fugu-ultra-v2","name":"Fugu Ultra v2","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-08-28","release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"canonical_model_id":"sakana/sakana-namazu"},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.021,"output":0.063,"cache_read":0.0042}},"inclusionai/ling-3.1-flash":{"id":"inclusionai/ling-3.1-flash","name":"Ling 3.1 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-10-02","last_updated":"2026-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"inclusionai/ling-3.0-flash-sante":{"id":"inclusionai/ling-3.0-flash-sante","name":"Ling 3.0 Flash Sante","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.042,"output":0.1232,"cache_read":0.0084}},"inclusionai/ling-3.0-flash-vl":{"id":"inclusionai/ling-3.0-flash-vl","name":"Ling 3.0 Flash VL","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.021,"output":0.0616,"cache_read":0.0042}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.042,"output":0.1232,"cache_read":0.0084}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":943718},"cost":{"input":0.73,"output":10,"cache_read":0.55},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.65,"output":3.41,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.5,"output":2.5,"cache_read":0.15},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 Instruct 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":98304},"cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-0905"},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2 0711","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12-31","release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.6712,"output":3.35,"cache_read":0.18},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"rekaai/reka-flash-3":{"id":"rekaai/reka-flash-3","name":"Reka Flash 3","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"reka","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01-31","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":58982},"cost":{"input":0.1,"output":0.2}},"rekaai/reka-edge":{"id":"rekaai/reka-edge","name":"Reka Edge","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":14745},"cost":{"input":0.1,"output":0.1}},"apodex/apodex-1.1-mini:free":{"id":"apodex/apodex-1.1-mini:free","name":"Apodex 1.1 Mini (free)","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.06,"output":0.24},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-content-safety:free":{"id":"nvidia/nemotron-3.5-content-safety:free","name":"Nemotron 3.5 Content Safety (free)","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.2,"cache_read":0.04},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","name":"Nemotron 3 Nano Omni (free)","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.08,"output":0.45},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3-ultra-550b-a55b:free":{"id":"nvidia/nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra (free)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":182520},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-super-120b-a12b:free":{"id":"nvidia/nemotron-3-super-120b-a12b:free","name":"Nemotron 3 Super (free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.2,"output":0.2},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/nemotron-3.5-lightning:free":{"id":"nvidia/nemotron-3.5-lightning:free","name":"Nemotron 3.5 Lightning (free)","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"id":"xiaomi/mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"undi95/remm-slerp-l2-13b":{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-07-22","last_updated":"2023-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":6144,"output":5529},"cost":{"input":0.35,"output":0.65}},"gryphe/mythomax-l2-13b":{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-07-02","last_updated":"2023-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":3686},"cost":{"input":0.08,"output":0.11}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.27,"output":1.08,"cache_read":0.027},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-01":{"id":"minimax/minimax-01","name":"MiniMax-01","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-03-31","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000192,"output":40000},"cost":{"input":0.2,"output":1.1}},"minimax/minimax-m2-her":{"id":"minimax/minimax-m2-her","name":"MiniMax-M2 Her","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2-Her"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":176947},"cost":{"input":0.21,"output":0.84,"cache_read":0.042},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m1":{"id":"minimax/minimax-m1","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":176947},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2"},"mancer/weaver":{"id":"mancer/weaver","name":"Weaver (alpha)","description":"General-purpose chat model for instruction following, writing, and analysis","family":"alpha","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-06-30","release_date":"2023-08-02","last_updated":"2023-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":6000},"cost":{"input":0.4,"output":0.75}},"stepfun/step-5-preview":{"id":"stepfun/step-5-preview","name":"Step 5 Preview","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":64000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"stepfun/step-3.5-flash"},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":256000,"output":230400},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"dots-studio/dots-3-note-preview:free":{"id":"dots-studio/dots-3-note-preview:free","name":"Dots3-Note Preview (free)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":460800},"cost":{"input":0,"output":0}},"inception/mercury-2.5":{"id":"inception/mercury-2.5","name":"Mercury 2.5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"amazon/nova-lite-v1":{"id":"amazon/nova-lite-v1","name":"Nova Lite 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.06,"output":0.24}},"amazon/nova-2-lite-v1":{"id":"amazon/nova-2-lite-v1","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5}},"amazon/nova-pro-v1":{"id":"amazon/nova-pro-v1","name":"Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":5120},"cost":{"input":0.8,"output":3.2}},"amazon/nova-premier-v1":{"id":"amazon/nova-premier-v1","name":"Nova Premier 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":2.5,"output":12.5,"cache_read":0.625}},"amazon/nova-micro-v1":{"id":"amazon/nova-micro-v1","name":"Nova Micro 1.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10-31","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":5120},"cost":{"input":0.035,"output":0.14}},"relace/relace-search":{"id":"relace/relace-search","name":"Relace Search","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":1,"output":3}},"relace/relace-apply-3":{"id":"relace/relace-apply-3","name":"Relace Apply 3","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.85,"output":1.25}},"aion-labs/aion-2.0":{"id":"aion-labs/aion-2.0","name":"Aion-2.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.8,"output":1.6,"cache_read":0.2}},"aion-labs/aion-rp-llama-3.1-8b":{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"Aion-RP 1.0 (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12-31","release_date":"2025-02-04","last_updated":"2025-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":29491},"cost":{"input":0.8,"output":1.6}},"aion-labs/aion-3.0":{"id":"aion-labs/aion-3.0","name":"Aion-3.0","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5":{"id":"aion-labs/aion-3.5","name":"Aion 3.5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":3,"output":6,"cache_read":0.75}},"aion-labs/aion-3.5-mini":{"id":"aion-labs/aion-3.5-mini","name":"Aion 3.5 Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"aion-labs/aion-3.0-mini":{"id":"aion-labs/aion-3.0-mini","name":"Aion-3.0-Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-07","last_updated":"2026-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":1.4,"cache_read":0.18}},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55}},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.21,"output":1.9,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.475,"output":4.425,"cache_read":0.295,"cache_write":1.84375},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":235929},"cost":{"input":0.04,"output":2.3,"cache_read":0.0198},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.26,"output":2.6},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.12,"output":0.8,"cache_read":0.07},"canonical_model_id":"alibaba/qwen3-coder-next"},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen3 Coder 480B A35B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.1}},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.08,"output":0.28},"canonical_model_id":"alibaba/qwen3-32b"},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.26,"output":0.78,"cache_read":0.052,"cache_write":0.325,"tiers":[{"input":0.78,"output":2.34,"cache_read":0.156,"cache_write":0.975,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.78,"output":2.34,"cache_read":0.156,"cache_write":0.975}},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":65536},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.02,"cache_write":0.125,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.04,"cache_write":0.25,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3-coder-30b-a3b-instruct":{"id":"qwen/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.07,"output":0.28},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"qwen/qwen3.8-omni-flash":{"id":"qwen/qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.45,"output":3.5}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.08},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.95,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":1.1,"cache_read":0.07},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"qwen/qwen3-vl-30b-a3b-thinking":{"id":"qwen/qwen3-vl-30b-a3b-thinking","name":"Qwen3 VL 30B A3B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.29,"output":1}},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375,"tiers":[{"input":0.75,"output":3,"cache_write":0.9375,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.75,"output":3,"cache_write":0.9375}},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.195,"output":0.975,"cache_read":0.039,"cache_write":0.24375,"tiers":[{"input":0.325,"output":1.625,"cache_read":0.065,"cache_write":0.40625,"tier":{"type":"context","size":32000}},{"input":0.52,"output":2.6,"cache_read":0.104,"cache_write":0.65,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen-2.5-coder-32b-instruct":{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-11-11","last_updated":"2024-11-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.66,"output":1}},"qwen/qwen3.5-flash-02-23":{"id":"qwen/qwen3.5-flash-02-23","name":"Qwen3.5-Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.065,"output":0.26}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen/qwen3.8-max-prime":{"id":"qwen/qwen3.8-max-prime","name":"Qwen 3.8 Max Prime","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.8-max-prime"},"qwen/qwen3.5-plus-20260420":{"id":"qwen/qwen3.5-plus-20260420","name":"Qwen3.5 Plus 2026-04-20","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.8,"cache_write":0.375,"tiers":[{"input":0.375,"output":2.25,"cache_write":0.46875,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.375,"output":2.25,"cache_write":0.46875}}},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.08,"output":0.75,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.55,"output":3.5,"cache_read":0.225},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3-vl-8b-instruct":{"id":"qwen/qwen3-vl-8b-instruct","name":"Qwen3 VL 8B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.25,"output":0.75,"cache_read":0.12}},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-29","last_updated":"2025-07-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":235929},"cost":{"input":0.1,"output":0.3}},"qwen/qwen2.5-vl-72b-instruct":{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-02-01","last_updated":"2025-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":115200},"cost":{"input":0.8,"output":1,"cache_read":0.4}},"qwen/qwen-2.5-7b-instruct":{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":29491},"cost":{"input":0.1,"output":0.2}},"qwen/qwen3.5-plus-02-15":{"id":"qwen/qwen3.5-plus-02-15","name":"Qwen3.5 Plus 2026-02-15","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.26,"output":1.56,"tiers":[{"input":0.325,"output":1.95,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.325,"output":1.95}}},"qwen/qwen-2.5-72b-instruct":{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.36,"output":0.4}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.32,"output":3.2},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.325,"output":1.95,"cache_write":0.40625,"tiers":[{"input":1.3,"output":3.9,"cache_write":1.625,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.3,"output":3.9,"cache_write":1.625}},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3-14b":{"id":"qwen/qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4,"tiers":[{"input":0.96,"output":3.84,"cache_read":0.192,"cache_write":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.96,"output":3.84,"cache_read":0.192,"cache_write":1.2}},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen/qwen3.8-max-0902":{"id":"qwen/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph V3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.9,"output":1.9}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph V3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-07","last_updated":"2025-07-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":81920,"output":38000},"cost":{"input":0.8,"output":1.2}},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-image-2":{"id":"openai/gpt-5.4-image-2","name":"GPT-5.4 Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":8,"output":15,"cache_read":2}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-audio":{"id":"openai/gpt-audio","name":"GPT Audio","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10}},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-6-astra-pro":{"id":"openai/gpt-6-astra-pro","name":"GPT-6 Astra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"canonical_model_id":"openai/gpt-4o-2024-05-13"},"openai/gpt-4o-mini-2024-07-18":{"id":"openai/gpt-4o-mini-2024-07-18","name":"GPT-4o-mini (2024-07-18)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"o-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-10-31","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-chat-latest":{"id":"openai/gpt-chat-latest","name":"GPT Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-05-05","last_updated":"2026-05-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5}},"openai/gpt-audio-mini":{"id":"openai/gpt-audio-mini","name":"GPT Audio Mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"o-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.4}},"openai/gpt-5.6-sol-pro":{"id":"openai/gpt-5.6-sol-pro","name":"GPT-5.6 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":4096},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-3.5-turbo-instruct":{"id":"openai/gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2023-09-28","last_updated":"2023-09-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1.5,"output":2}},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.6-luna-pro":{"id":"openai/gpt-5.6-luna-pro","name":"GPT-5.6 Luna Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-5-image-mini":{"id":"openai/gpt-5-image-mini","name":"GPT-5 Image Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["pdf","image","text"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":2,"cache_read":0.25}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"canonical_model_id":"openai/o3-pro"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.018,"output":0.09,"cache_read":0.009},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"openai/o3-mini-high":{"id":"openai/o3-mini-high","name":"o3 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-10-31","release_date":"2025-02-12","last_updated":"2025-02-12","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/gpt-3.5-turbo-16k":{"id":"openai/gpt-3.5-turbo-16k","name":"GPT-3.5 Turbo 16k","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2023-08-28","last_updated":"2023-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":3,"output":4}},"openai/gpt-5.2-chat":{"id":"openai/gpt-5.2-chat","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"openai/gpt-6-sol-pro":{"id":"openai/gpt-6-sol-pro","name":"GPT-6 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}}},"openai/gpt-5-image":{"id":"openai/gpt-5-image","name":"GPT-5 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-10-14","last_updated":"2025-10-14","modalities":{"input":["image","text","pdf"],"output":["image","text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":10,"output":10,"cache_read":1.25}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/gpt-3.5-turbo-0613":{"id":"openai/gpt-3.5-turbo-0613","name":"GPT-3.5 Turbo (older v0613)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-30","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4095,"output":3685},"cost":{"input":1,"output":2}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-5.6-terra-pro":{"id":"openai/gpt-5.6-terra-pro","name":"GPT-5.6 Terra Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-6.1-sol-pro":{"id":"openai/gpt-6.1-sol-pro","name":"GPT-6.1 Sol Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}}},"openai/o4-mini-high":{"id":"openai/o4-mini-high","name":"o4 Mini High","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-06-30","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-6-luna-pro":{"id":"openai/gpt-6-luna-pro","name":"GPT-6 Luna Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":117964},"cost":{"input":0.037,"output":0.17},"canonical_model_id":"openai/gpt-oss-120b"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"canonical_model_id":"openai/o1-pro"},"microsoft/phi-4":{"id":"microsoft/phi-4","name":"Phi 4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06-30","release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":14745},"cost":{"input":0.07,"output":0.14}},"microsoft/wizardlm-2-8x22b":{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-04-16","last_updated":"2024-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65535,"output":8000},"cost":{"input":0.62,"output":0.62}}}},"perplexity":{"id":"perplexity","env":["PERPLEXITY_API_KEY"],"npm":"@ai-sdk/perplexity","name":"Perplexity","doc":"https://docs.perplexity.ai","models":{"sonar-pro":{"id":"sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15}},"sonar-deep-research":{"id":"sonar-deep-research","name":"Perplexity Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}},"sonar":{"id":"sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8}}}},"iteracompute":{"id":"iteracompute","env":["ITERACOMPUTE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.iteracompute.com/v1","name":"IteraCompute","doc":"https://iteracompute.com/docs.html","models":{"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":970000,"output":393216},"cost":{"input":0.34,"output":1.05,"cache_read":0.035},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":1.1,"output":3.3,"cache_read":0.11},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.49,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":3.5,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":999999},"cost":{"input":3,"output":14.9,"cache_read":0.29},"canonical_model_id":"moonshotai/kimi-k3"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":524288},"cost":{"input":0.29,"output":1.2,"cache_read":0.08},"canonical_model_id":"minimax/MiniMax-M3"},"ornith-ai/ornith-1.5-35b-a3b":{"id":"ornith-ai/ornith-1.5-35b-a3b","name":"Ornith 1.5 35B A3B","description":"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":262144,"output":65536},"cost":{"input":0.3,"output":3,"cache_read":0.03},"canonical_model_id":"deepreinforce/ornith-1.5-35b-a3b"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":327680,"input":262144,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":970000,"output":131072},"cost":{"input":1.95,"output":5.95,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"}}},"the-grid-ai":{"id":"the-grid-ai","env":["THEGRID_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.thegrid.ai/v1","name":"The Grid AI","doc":"https://thegrid.ai/docs","models":{"bytedance-pro-latest":{"id":"bytedance-pro-latest","name":"ByteDance Pro Latest","description":"Lab latest market for ByteDance Pro supply. You contract for the latest qualifying route, not a specific model.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"input":256000,"output":131072}},"minimax-latest":{"id":"minimax-latest","name":"MiniMax Latest","description":"Lab latest market for MiniMax supply. You contract for the latest qualifying route, not a specific model.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":512000}},"agent-prime":{"id":"agent-prime","name":"Agent Prime","description":"Reliable models for dependable agentic applications, multi-step tool use, and reasoning workflows. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":131072},"status":"beta"},"claude-opus-latest":{"id":"claude-opus-latest","name":"Claude Opus Latest","description":"Lab latest market for Claude Opus frontier supply. You contract for the latest qualifying route, not a specific model.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000}},"code-max":{"id":"code-max","name":"Code Max","description":"Frontier models for complex research, architectural decisions, debugging, and multi-file development. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-05-04","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"status":"beta"},"agent-max":{"id":"agent-max","name":"Agent Max","description":"Frontier models for autonomous research, deep multi-step tool chains, and complex long-horizon tasks. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-05-04","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"status":"beta"},"text-max":{"id":"text-max","name":"Text Max","description":"Frontier models for deep reasoning, long context, and complex workflows. Any model that meets the contract spec can serve your request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000}},"gpt-sol-latest":{"id":"gpt-sol-latest","name":"GPT Sol Latest","description":"Lab latest market for GPT frontier supply. You contract for the latest qualifying route, not a specific model.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000}},"code-prime":{"id":"code-prime","name":"Code Prime","description":"Reliable models for everyday software tasks, code completion, review, and standard debugging. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":131072},"status":"beta"},"text-prime":{"id":"text-prime","name":"Text Prime","description":"Reliable models for everyday text generation, editing, and analysis across diverse workflows. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":196608,"input":120000,"output":131072}},"gemini-pro-latest":{"id":"gemini-pro-latest","name":"Gemini Pro Latest","description":"Lab latest market for Gemini Pro frontier supply. You contract for the latest qualifying route, not a specific model.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":65536}},"deepseek-pro-latest":{"id":"deepseek-pro-latest","name":"DeepSeek Pro Latest","description":"Lab latest market for DeepSeek Pro supply. You contract for the latest qualifying route, not a specific model.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":384000}},"code-standard":{"id":"code-standard","name":"Code Standard","description":"Price-optimized models for rapid autocomplete, linting, high-frequency suggestions, and batch edits. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":65536},"status":"beta"},"text-standard":{"id":"text-standard","name":"Text Standard","description":"Price-optimized models with low-latency, high-throughput and shorter maximum outputs. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-26","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":65536}},"agent-standard":{"id":"agent-standard","name":"Agent Standard","description":"Price-optimized models for fast tool calls, simple agent loops, high-throughput automation, and orchestration. Any model that meets the contract spec can serve your request.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-04","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":120000,"output":65536},"status":"beta"},"glm-latest":{"id":"glm-latest","name":"GLM Latest","description":"Lab latest market for GLM supply. You contract for the latest qualifying route, not a specific model.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000}}}},"meta":{"id":"meta","env":["META_MODEL_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.meta.ai/v1","name":"Meta","doc":"https://dev.meta.ai/docs","models":{"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"canonical_model_id":"meta/muse-spark-1.2"},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"canonical_model_id":"meta/muse-spark-1.3"}}},"cline-pass":{"id":"cline-pass","env":["CLINE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cline.bot/api/v1","name":"ClinePass","doc":"https://docs.cline.bot/getting-started/clinepass","models":{"cline-pass/mimo-v2.6-pro":{"id":"cline-pass/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"cline-pass/qwen3.7-max":{"id":"cline-pass/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"cline-pass/mimo-v2.5":{"id":"cline-pass/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.5"},"cline-pass/glm-5.3-flash":{"id":"cline-pass/glm-5.3-flash","name":"cline-pass/glm-5.3-flash","description":"Latest natively multimodal model in the GLM-5 series","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03}},"cline-pass/qwen3.8-max":{"id":"cline-pass/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"cline-pass/kimi-k3":{"id":"cline-pass/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"cline-pass/deepseek-v4.1-flash":{"id":"cline-pass/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"cline-pass/kimi-k2.6":{"id":"cline-pass/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"cline-pass/mimo-v2.5-pro":{"id":"cline-pass/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"cline-pass/mimo-v2.6-flash":{"id":"cline-pass/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"cline-pass/minimax-m3":{"id":"cline-pass/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"cline-pass/glm-5.2":{"id":"cline-pass/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"cline-pass/deepseek-v4-pro":{"id":"cline-pass/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.0145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"cline-pass/muse-spark-1.3-contributor":{"id":"cline-pass/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"canonical_model_id":"meta/muse-spark-1.3"},"cline-pass/glm-5.3":{"id":"cline-pass/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"cline-pass/kimi-k2.7-code":{"id":"cline-pass/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"cline-pass/qwen3.7-plus":{"id":"cline-pass/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5}},"canonical_model_id":"alibaba/qwen3.7-plus"},"cline-pass/deepseek-v4-flash":{"id":"cline-pass/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"modal":{"id":"modal","env":["MODAL_PROXY_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.us-west.modal.direct/v1","name":"Modal","doc":"https://modal.com/docs/guide/endpoints","models":{"thinkingmachines/Inkling-NVFP4":{"id":"thinkingmachines/Inkling-NVFP4","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.2,"output":5,"cache_read":0.27},"canonical_model_id":"thinkingmachines/inkling"},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8-Max","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"reasoning":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.45,"output":1.5,"cache_read":0.09},"canonical_model_id":"zhipuai/glm-5.3-flash"}}},"coralbricks":{"id":"coralbricks","env":["CORAL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.coralbricks.ai/v1","name":"CoralBricks","doc":"https://www.coralbricks.ai/docs","models":{"glm-5.3-fp4":{"id":"glm-5.3-fp4","name":"GLM 5.3 FP4","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.12,"output":4.4,"cache_read":0,"cache_write":1.68},"canonical_model_id":"zhipuai/glm-5.3"},"deepseek-v4.1-flash-fast":{"id":"deepseek-v4.1-flash-fast","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.01,"output":1.2,"cache_read":0,"cache_write":0.09},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"glm-5.3-fast":{"id":"glm-5.3-fast","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.12,"output":4.4,"cache_read":0,"cache_write":1.68},"canonical_model_id":"zhipuai/glm-5.3"},"deepseek-v4.1-flash-fast-fp4":{"id":"deepseek-v4.1-flash-fast-fp4","name":"DeepSeek V4.1 Flash FP4","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.01,"output":1.2,"cache_read":0,"cache_write":0.09},"canonical_model_id":"deepseek/deepseek-v4.1-flash"}}},"routing-run":{"id":"routing-run","env":["ROUTING_RUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.routing.run/v1","name":"routing.run","doc":"https://docs.routing.run/api-reference/models","models":{"nemotron-3-ultra":{"id":"nemotron-3-ultra","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32000},"cost":{"input":0.1,"output":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"canonical_model_id":"moonshotai/kimi-k2.6"},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.16,"output":0.48},"canonical_model_id":"alibaba/qwen3.5-9b"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":0.7,"output":4.2},"canonical_model_id":"openai/gpt-5.6-luna"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-8"},"glm-5.2-nitro":{"id":"glm-5.2-nitro","name":"GLM 5.2 Nitro","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.8,"output":2.4},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k2.6-nitro":{"id":"kimi-k2.6-nitro","name":"Kimi K2.6 Nitro","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"canonical_model_id":"moonshotai/kimi-k2.6"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.348,"output":0.696},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"kimi-k2.7-code-nitro":{"id":"kimi-k2.7-code-nitro","name":"Kimi K2.7 Code Nitro","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":1.5,"output":9},"canonical_model_id":"openai/gpt-5.6-terra"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.275,"output":1.1},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15},"canonical_model_id":"openai/gpt-5.6-sol"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.112,"output":0.224},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"echo":{"id":"echo","env":["ECHO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://echo.tracerml.ai/v1","name":"Echo","doc":"https://echo.tracerml.ai/docs/api","models":{"echo":{"id":"echo","name":"Echo","description":"Adaptive model for coding, reasoning, and tool-driven agent workflows through one OpenAI-compatible endpoint","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"status":"beta","cost":{"input":10,"output":50}}}},"neuralwatt":{"id":"neuralwatt","env":["NEURALWATT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.neuralwatt.com/v1","name":"Neuralwatt","doc":"https://portal.neuralwatt.com/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.87,"output":1.74,"cache_read":0.036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"glm-5.2-short-fast":{"id":"glm-5.2-short-fast","name":"GLM 5.2 Short Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"status":"deprecated","cost":{"input":1.45,"output":4.5,"cache_read":0.145},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k3-flex":{"id":"kimi-k3-flex","name":"Kimi K3 Flex","description":"Kimi K3 on the flex tier: discounted, best-effort latency, requests may be held under load","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":1.95,"output":9.75,"cache_read":0.195},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4-flash-flex":{"id":"deepseek-v4-flash-flex","name":"DeepSeek V4 Flash Flex","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.091,"output":0.182,"cache_read":0.0182},"canonical_model_id":"deepseek/deepseek-v4-flash"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.2-short-flex":{"id":"glm-5.2-short-flex","name":"GLM 5.2 Short Flex","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"status":"deprecated","cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"canonical_model_id":"zhipuai/glm-5.2"},"qwen3.6-35b":{"id":"qwen3.6-35b","name":"Qwen3.6 35B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM 5.2 Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"status":"deprecated","cost":{"input":1.45,"output":4.5,"cache_read":0.145},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"kimi-k3-fast":{"id":"kimi-k3-fast","name":"Kimi K3 Fast","description":"Kimi K3 with thinking disabled for low-latency tool calling, vision, and JSON work","family":"kimi-k3","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3.6-35b-flex":{"id":"qwen3.6-35b-flex","name":"Qwen3.6 35B Flex","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131056,"output":131056},"cost":{"input":0.1885,"output":0.7475,"cache_read":0.01885},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen-3.8-27b":{"id":"qwen-3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":131072},"cost":{"input":0.45,"output":3.2,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-27b"},"glm-5.2-short":{"id":"glm-5.2-short","name":"GLM 5.2 Short","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"status":"deprecated","cost":{"input":1.45,"output":4.5,"cache_read":0.145},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.3-flash-flex":{"id":"glm-5.3-flash-flex","name":"GLM-5.3 Flash Flex","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":0.0975,"output":0.325,"cache_read":0.0195},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.6-35b-fast":{"id":"qwen3.6-35b-fast","name":"Qwen3.6 35B Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen3.6","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131056,"output":131056},"cost":{"input":0.29,"output":1.15,"cache_read":0.029},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"glm-5.2-flex":{"id":"glm-5.2-flex","name":"GLM 5.2 Flex","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"status":"deprecated","cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"canonical_model_id":"zhipuai/glm-5.2"},"deepseek-v4-flash-speed":{"id":"deepseek-v4-flash-speed","name":"DeepSeek V4 Flash (Speed)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"mimo-v2.6-pro-flex":{"id":"mimo-v2.6-pro-flex","name":"MiMo-V2.6-Pro Flex","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.5655,"output":1.131,"cache_read":0.0234},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"glm-5.2":{"id":"glm-5.2","name":"GLM 5.2","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"status":"deprecated","cost":{"input":1.45,"output":4.5,"cache_read":0.145},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.2-short-fast-flex":{"id":"glm-5.2-short-fast-flex","name":"GLM 5.2 Short Fast Flex","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-06-17","last_updated":"2026-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":199984,"output":32000},"status":"deprecated","cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k2.7-code-fast":{"id":"kimi-k2.7-code-fast","name":"Kimi K2.7 Code Fast","description":"Kimi K2.7 Code with reasoning capped to a short budget for lower latency; reasoning cannot be disabled on this model","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gemma-4-31b":{"id":"gemma-4-31b","name":"Gemma 4 31B","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":16384},"cost":{"input":0.144,"output":0.42,"cache_read":0.0144},"canonical_model_id":"google/gemma-4-31b-it"},"glm-5.3-flex":{"id":"glm-5.3-flex","name":"GLM 5.3 Flex","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":0.9425,"output":2.925,"cache_read":0.09425},"canonical_model_id":"zhipuai/glm-5.3"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"status":"deprecated","cost":{"input":1,"output":3,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen-3.8-27b-flex":{"id":"qwen-3.8-27b-flex","name":"Qwen3.8 27B Flex","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":131072},"cost":{"input":0.2925,"output":2.08,"cache_read":0.1625},"canonical_model_id":"alibaba/qwen3.8-27b"},"kimi-k2.7-code-flex":{"id":"kimi-k2.7-code-flex","name":"Kimi K2.7 Code Flex","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.6175,"output":2.6,"cache_read":0.06175},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"glm-5.3":{"id":"glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":1048560},"cost":{"input":1.45,"output":4.5,"cache_read":0.145},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262128,"output":262128},"cost":{"input":0.95,"output":4,"cache_read":0.095},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"deepseek-v4.1-flash-flex":{"id":"deepseek-v4.1-flash-flex","name":"DeepSeek V4.1 Flash Flex","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.0975,"output":0.39,"cache_read":0.00975},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048560,"output":393216},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"gitlab":{"id":"gitlab","env":["GITLAB_TOKEN"],"npm":"gitlab-ai-provider","name":"GitLab Duo","doc":"https://docs.gitlab.com/user/duo_agent_platform/","models":{"duo-chat-gpt-5-4-nano":{"id":"duo-chat-gpt-5-4-nano","name":"Agentic Chat (GPT-5.4 Nano)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-opus-5-5":{"id":"duo-chat-opus-5-5","name":"Agentic Chat (Claude Opus 5.5)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-opus-5-5"},"duo-chat-gpt-6-1-sol":{"id":"duo-chat-gpt-6-1-sol","name":"Agentic Chat (GPT-6.1 Sol)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-6.1-sol"},"duo-chat-sonnet-5-5":{"id":"duo-chat-sonnet-5-5","name":"Agentic Chat (Claude Sonnet 5.5)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"duo-chat-gpt-6-astra":{"id":"duo-chat-gpt-6-astra","name":"Agentic Chat (GPT-6 Astra)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-6-astra"},"duo-chat-opus-4-5":{"id":"duo-chat-opus-4-5","name":"Agentic Chat (Claude Opus 4.5)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-mini":{"id":"duo-chat-gpt-5-mini","name":"Agentic Chat (GPT-5 Mini)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-6-luna":{"id":"duo-chat-gpt-6-luna","name":"Agentic Chat (GPT-6 Luna)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-6-luna"},"duo-chat-sonnet-4-5":{"id":"duo-chat-sonnet-4-5","name":"Agentic Chat (Claude Sonnet 4.5)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-6-sol":{"id":"duo-chat-gpt-5-6-sol","name":"Agentic Chat (GPT-5.6 Sol)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-5.6-sol"},"duo-chat-sonnet-4-6":{"id":"duo-chat-sonnet-4-6","name":"Agentic Chat (Claude Sonnet 4.6)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-4-mini":{"id":"duo-chat-gpt-5-4-mini","name":"Agentic Chat (GPT-5.4 Mini)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-haiku-4-5":{"id":"duo-chat-haiku-4-5","name":"Agentic Chat (Claude Haiku 4.5)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2026-01-08","last_updated":"2026-01-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-fable-5-1":{"id":"duo-chat-fable-5-1","name":"Agentic Chat (Claude Fable 5.1)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-fable-5-1"},"duo-chat-gpt-5-5":{"id":"duo-chat-gpt-5-5","name":"Agentic Chat (GPT-5.5)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-fable-5":{"id":"duo-chat-fable-5","name":"Agentic Chat (Claude Fable 5)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-fable-5"},"duo-chat-gpt-5-3-codex":{"id":"duo-chat-gpt-5-3-codex","name":"Agentic Chat (GPT-5.3 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-1":{"id":"duo-chat-gpt-5-1","name":"Agentic Chat (GPT-5.1)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-6-sol":{"id":"duo-chat-gpt-6-sol","name":"Agentic Chat (GPT-6 Sol)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-6-sol"},"duo-chat-opus-4-7":{"id":"duo-chat-opus-4-7","name":"Agentic Chat (Claude Opus 4.7)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-2":{"id":"duo-chat-gpt-5-2","name":"Agentic Chat (GPT-5.2)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-opus-5":{"id":"duo-chat-opus-5","name":"Agentic Chat (Claude Opus 5)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-opus-5"},"duo-chat-opus-4-6":{"id":"duo-chat-opus-4-6","name":"Agentic Chat (Claude Opus 4.6)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-6-luna":{"id":"duo-chat-gpt-5-6-luna","name":"Agentic Chat (GPT-5.6 Luna)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-5.6-luna"},"duo-chat-gpt-5-codex":{"id":"duo-chat-gpt-5-codex","name":"Agentic Chat (GPT-5 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-sonnet-5":{"id":"duo-chat-sonnet-5","name":"Agentic Chat (Claude Sonnet 5)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-sonnet-5"},"duo-chat-opus-4-8":{"id":"duo-chat-opus-4-8","name":"Agentic Chat (Claude Opus 4.8)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"duo-chat-gpt-5-2-codex":{"id":"duo-chat-gpt-5-2-codex","name":"Agentic Chat (GPT-5.2 Codex)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-4":{"id":"duo-chat-gpt-5-4","name":"Agentic Chat (GPT-5.4)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0}},"duo-chat-gpt-5-6-terra":{"id":"duo-chat-gpt-5-6-terra","name":"Agentic Chat (GPT-5.6 Terra)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-5.6-terra"}}},"infer":{"id":"infer","env":["INFER_API_KEY"],"npm":"@ai-sdk/openai","api":"https://infer.flow7.org/v1","name":"Infer by Flow7","doc":"https://infer.flow7.org/opencode","models":{"infer/gpt-6-astra:official":{"id":"infer/gpt-6-astra:official","name":"GPT-6 Astra (Official API)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":271999,"output":128000},"provider":{"shape":"responses"},"cost":{"input":12.5,"output":62.5,"cache_read":1.25,"cache_write":15.625},"canonical_model_id":"openai/gpt-6-astra"},"infer/gpt-5.6-sol:official":{"id":"infer/gpt-5.6-sol:official","name":"GPT-5.6 Sol (Official API)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":271999,"output":128000},"provider":{"shape":"responses"},"cost":{"input":2.5,"output":12.5,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-sol"}}},"azure":{"id":"azure","env":["AZURE_RESOURCE_NAME","AZURE_API_KEY"],"npm":"@ai-sdk/azure","name":"Azure","doc":"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"deepseek-v3.2-speciale":{"id":"deepseek-v3.2-speciale","name":"DeepSeek-V3.2-Speciale","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-27","last_updated":"2025-06-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":8192},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"phi-4-reasoning":{"id":"phi-4-reasoning","name":"Phi-4-reasoning","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"status":"beta","canonical_model_id":"xai/grok-4.7"},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.02,"output":0}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"ministral-3b":{"id":"ministral-3b","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04}},"gpt-chat-latest":{"id":"gpt-chat-latest","name":"GPT Chat Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"status":"beta","cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5-instant"},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2"},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek-V4.1-Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"phi-4-multimodal":{"id":"phi-4-multimodal","name":"Phi-4-multimodal","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"phi","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32,"input_audio":4}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"gpt-image-2.5-flare":{"id":"gpt-image-2.5-flare","name":"GPT Image 2.5 Flare","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-flare"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2}},"cohere-embed-v3-multilingual":{"id":"cohere-embed-v3-multilingual","name":"Embed v3 Multilingual","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"codex-mini":{"id":"codex-mini","name":"Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-04","release_date":"2025-05-16","last_updated":"2025-05-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.5,"output":6,"cache_read":0.375}},"phi-4-reasoning-plus":{"id":"phi-4-reasoning-plus","name":"Phi-4-reasoning-plus","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"claude-mythos-5":{"id":"claude-mythos-5","name":"Claude Mythos 5","description":"Restricted Claude model for advanced cybersecurity and biology research workflows","family":"claude-mythos","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-mythos-5"},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"gpt-3.5-turbo-instruct":{"id":"gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-09-21","last_updated":"2023-09-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096},"status":"deprecated","cost":{"input":1.5,"output":2}},"gpt-3.5-turbo-0125":{"id":"gpt-3.5-turbo-0125","name":"GPT-3.5 Turbo 0125","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":4096},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":3072},"cost":{"input":0.13,"output":0}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"cohere-embed-v-4-0":{"id":"cohere-embed-v-4-0","name":"Embed v4","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"codestral-2501":{"id":"codestral-2501","name":"Codestral 25.01","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.6,"output":3}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":2.5,"output":20,"cache_read":0.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"cohere-command-a":{"id":"cohere-command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10}},"cohere-embed-v3-english":{"id":"cohere-embed-v3-english","name":"Embed v3 English","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"model-router":{"id":"model-router","name":"Model Router","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-05-19","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"provider":{"shape":"completions"},"cost":{"input":0.14,"output":0}},"gpt-image-2.5-sunburst":{"id":"gpt-image-2.5-sunburst","name":"GPT Image 2.5 Sunburst","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-sunburst"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-image-1":{"id":"gpt-image-1","name":"GPT-Image-1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":28,"cache_read":0.35},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.75,"output":14,"cache_read":0.125}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-8"},"phi-4":{"id":"phi-4","name":"Phi-4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"mistral-small-2503":{"id":"mistral-small-2503","name":"Mistral Small 3.1","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3}},"phi-4-mini-reasoning":{"id":"phi-4-mini-reasoning","name":"Phi-4-mini-reasoning","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-07-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gpt-4-turbo-vision":{"id":"gpt-4-turbo-vision","name":"GPT-4 Turbo Vision","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"grok-4-20-non-reasoning":{"id":"grok-4-20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":8192},"status":"beta","cost":{"input":2,"output":6}},"gpt-3.5-turbo-1106":{"id":"gpt-3.5-turbo-1106","name":"GPT-3.5 Turbo 1106","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":4096},"status":"deprecated","cost":{"input":1,"output":2}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"status":"deprecated","cost":{"input":1.35,"output":5.4}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek-V4-Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":1.74,"output":3.48},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"llama-4-scout-17b-16e-instruct":{"id":"llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78}},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"GPT-Image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1.5"},"grok-4-20-reasoning":{"id":"grok-4-20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":8192},"status":"beta","cost":{"input":2,"output":6}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"status":"beta","cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":4,"output":20,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"phi-4-mini":{"id":"phi-4-mini","name":"Phi-4-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek-V4-Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.19,"output":0.51},"canonical_model_id":"deepseek/deepseek-v4-flash"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"freemodel":{"id":"freemodel","env":["FREEMODEL_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://cc.freemodel.dev/v1","name":"FreeModel","doc":"https://freemodel.dev","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.4"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75},"canonical_model_id":"openai/gpt-5.3-codex"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"openai/gpt-5.4-mini"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://api.freemodel.dev/v1"},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"canonical_model_id":"openai/gpt-5.5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"}}},"azure-cognitive-services":{"id":"azure-cognitive-services","env":["AZURE_COGNITIVE_SERVICES_RESOURCE_NAME","AZURE_COGNITIVE_SERVICES_API_KEY"],"npm":"@ai-sdk/azure","name":"Azure Cognitive Services","doc":"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-chat-latest":{"id":"gpt-chat-latest","name":"GPT Chat Latest","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"status":"beta","cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5-instant"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-08-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.6"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"claude-mythos-5":{"id":"claude-mythos-5","name":"Claude Mythos 5","description":"Restricted Claude model for advanced cybersecurity and biology research workflows","family":"claude-mythos","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-mythos-5"},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/models","shape":"completions"},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"status":"beta","provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25,"tiers":[{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2025-12-31","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-8"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-07-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-5.6-terra"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://${AZURE_COGNITIVE_SERVICES_RESOURCE_NAME}.services.ai.azure.com/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"phi-4-mini":{"id":"phi-4-mini","name":"Phi-4-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"GPT-Image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1.5"},"llama-4-scout-17b-16e-instruct":{"id":"llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B 16E Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.78}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"status":"deprecated","cost":{"input":1.35,"output":5.4}},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"gpt-3.5-turbo-1106":{"id":"gpt-3.5-turbo-1106","name":"GPT-3.5 Turbo 1106","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":4096},"status":"deprecated","cost":{"input":1,"output":2}},"gpt-4-turbo-vision":{"id":"gpt-4-turbo-vision","name":"GPT-4 Turbo Vision","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"phi-4-mini-reasoning":{"id":"phi-4-mini-reasoning","name":"Phi-4-mini-reasoning","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.075,"output":0.3}},"mistral-small-2503":{"id":"mistral-small-2503","name":"Mistral Small 3.1","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":0.1,"output":0.3}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"phi-4":{"id":"phi-4","name":"Phi-4","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"phi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.125,"output":0.5}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":28,"cache_read":0.35},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.75,"output":14,"cache_read":0.125}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"gpt-image-1":{"id":"gpt-image-1","name":"GPT-Image-1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1"},"gpt-image-2.5-sunburst":{"id":"gpt-image-2.5-sunburst","name":"GPT Image 2.5 Sunburst","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-sunburst"},"model-router":{"id":"model-router","name":"Model Router","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-05-19","last_updated":"2025-11-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":16384},"provider":{"shape":"completions"},"cost":{"input":0.14,"output":0}},"cohere-embed-v3-english":{"id":"cohere-embed-v3-english","name":"Embed v3 English","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"cohere-command-a":{"id":"cohere-command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.5,"output":10}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.71,"output":0.71}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":2.5,"output":20,"cache_read":0.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"codestral-2501":{"id":"codestral-2501","name":"Codestral 25.01","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":0.9}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"cohere-embed-v-4-0":{"id":"cohere-embed-v-4-0","name":"Embed v4","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":1536},"cost":{"input":0.12,"output":0}},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":3072},"cost":{"input":0.13,"output":0}},"gpt-3.5-turbo-0125":{"id":"gpt-3.5-turbo-0125","name":"GPT-3.5 Turbo 0125","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":4096},"status":"deprecated","cost":{"input":0.5,"output":1.5}},"gpt-3.5-turbo-instruct":{"id":"gpt-3.5-turbo-instruct","name":"GPT-3.5 Turbo Instruct","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2021-08","release_date":"2023-09-21","last_updated":"2023-09-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096},"status":"deprecated","cost":{"input":1.5,"output":2}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"phi-4-reasoning-plus":{"id":"phi-4-reasoning-plus","name":"Phi-4-reasoning-plus","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"codex-mini":{"id":"codex-mini","name":"Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-04","release_date":"2025-05-16","last_updated":"2025-05-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.5,"output":6,"cache_read":0.375}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"cohere-embed-v3-multilingual":{"id":"cohere-embed-v3-multilingual","name":"Embed v3 Multilingual","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-11-07","last_updated":"2023-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.1,"output":0}},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2}},"gpt-image-2.5-flare":{"id":"gpt-image-2.5-flare","name":"GPT Image 2.5 Flare","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-flare"},"phi-4-multimodal":{"id":"phi-4-multimodal","name":"Phi-4-multimodal","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"phi","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.08,"output":0.32,"input_audio":4}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.01}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"llama-4-maverick-17b-128e-instruct-fp8":{"id":"llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"cost":{"input":0.25,"output":1}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"ministral-3b":{"id":"ministral-3b","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.04}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text","image","audio"],"output":["text","image","audio"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.02,"output":0}},"phi-4-reasoning":{"id":"phi-4-reasoning","name":"Phi-4-reasoning","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"phi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2023-10","release_date":"2024-12-11","last_updated":"2024-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.125,"output":0.5}},"deepseek-v3.2-speciale":{"id":"deepseek-v3.2-speciale","name":"DeepSeek-V3.2-Speciale","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.58,"output":1.68}}}},"pendra":{"id":"pendra","env":["PENDRA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.pendra.ai/api/v1","name":"Pendra","doc":"https://pendra.ai/docs/integrations/opencode","models":{"llama3.3:70b":{"id":"llama3.3:70b","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"qwen3-coder:30b":{"id":"qwen3-coder:30b","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"gpt-oss:120b":{"id":"gpt-oss:120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-oss-120b"},"qwen3.6:27b":{"id":"qwen3.6:27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-27b"},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"moark":{"id":"moark","env":["MOARK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://moark.com/v1","name":"Moark","doc":"https://moark.com/docs/openapi/v1#tag/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90","models":{"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.98,"output":4},"canonical_model_id":"moonshotai/kimi-k2.6"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.3},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"GLM-4.7":{"id":"GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.42,"output":2.2}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.2}},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.5,"output":0.5},"canonical_model_id":"deepseek/deepseek-v4-flash"},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.8,"output":3.6},"canonical_model_id":"deepseek/deepseek-v4-pro"},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.7"},"Qwen3.6-Flash":{"id":"Qwen3.6-Flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.18,"output":1.03},"canonical_model_id":"alibaba/qwen3.6-flash"},"GLM-5.3":{"id":"GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4.18},"canonical_model_id":"zhipuai/glm-5.3"}}},"atomic-chat":{"id":"atomic-chat","env":["ATOMIC_CHAT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:1337/v1","name":"Atomic Chat","doc":"https://atomic.chat","models":{"gemma-4-E4B-it-MLX-4bit":{"id":"gemma-4-E4B-it-MLX-4bit","name":"Gemma 4 E4B Instruct (MLX 4-bit)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"Meta-Llama-3_1-8B-Instruct-GGUF":{"id":"Meta-Llama-3_1-8B-Instruct-GGUF","name":"Meta Llama 3.1 8B Instruct (GGUF)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0,"output":0}},"Qwen3_5-9B-Q4_K_M":{"id":"Qwen3_5-9B-Q4_K_M","name":"Qwen 3.5 9B (Q4_K_M)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gemma-4-E4B-it-IQ4_XS":{"id":"gemma-4-E4B-it-IQ4_XS","name":"Gemma 4 E4B Instruct (IQ4_XS)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"Qwen3_5-9B-MLX-4bit":{"id":"Qwen3_5-9B-MLX-4bit","name":"Qwen 3.5 9B (MLX 4-bit)","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-05","last_updated":"2026-04-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}}}},"qihang-ai":{"id":"qihang-ai","env":["QIHANG_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.qhaigc.net/v1","name":"QiHang","doc":"https://www.qhaigc.net/docs","models":{"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.14,"output":1.14}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.57,"output":3.43}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5-Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.04,"output":0.29}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":0.71,"output":3.57}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.71,"tiers":[{"input":0.09,"output":0.71,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.09,"output":0.71}}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.43,"output":2.14}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.07,"output":0.43,"tiers":[{"input":0.07,"output":0.43,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.07,"output":0.43}}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.14,"output":0.71}}}},"ai-router":{"id":"ai-router","env":["AI_ROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ai-router.dev/v1","name":"AI-ROUTER","doc":"https://ai-router.dev/openai-compatible-api-gateway/","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-terra"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"openai/gpt-5.6-sol"}}},"llmtr":{"id":"llmtr","env":["LLMTR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llmtr.com/v1","name":"LLMTR","doc":"https://llmtr.com/docs","models":{"muse-glimmer-30b-tr":{"id":"muse-glimmer-30b-tr","name":"Muse Glimmer 30B (TR)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5},"canonical_model_id":"meta/muse-glimmer-30b"},"magibu-11b-v8":{"id":"magibu-11b-v8","name":"Magibu 11B v8","description":"Turkish-language chat model for instruction following and assistant flows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-06-05","last_updated":"2026-08-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.1,"output":0.5}},"gemma-4":{"id":"gemma-4","name":"Gemma 4","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":2,"output":5,"cache_read":0.5},"canonical_model_id":"google/gemma-4-31b-it"},"trendyol-asure-12b":{"id":"trendyol-asure-12b","name":"Trendyol Asure 12B","description":"Turkish-language multimodal instruct model built on Gemma 3 12B for e-commerce text, chat, and image-text tasks","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-19","last_updated":"2026-02-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.1,"output":0.5,"cache_read":0.025},"canonical_model_id":"trendyol/asure-12b"},"medgemma-4b":{"id":"medgemma-4b","name":"MedGemma 4B","description":"Multimodal medical-domain Gemma variant for text and image analysis","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"status":"deprecated","cost":{"input":3,"output":5}},"qwen3-6-35b":{"id":"qwen3-6-35b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":5,"output":10},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-xs-2.1"},"publicai/apertus-70b-instruct":{"id":"publicai/apertus-70b-instruct","name":"Apertus 70B Instruct","description":"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0.82,"output":2.92},"canonical_model_id":"swiss-ai/apertus-70b"},"publicai/apertus-8b-instruct":{"id":"publicai/apertus-8b-instruct","name":"Apertus 8B Instruct","description":"Fully open 8B multilingual LLM supporting 1800+ languages with 65K context. Trained on compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8192},"cost":{"input":0.1,"output":0.2},"canonical_model_id":"swiss-ai/apertus-8b"},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.58,"output":1.44},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.87,"output":4.68},"canonical_model_id":"thinkingmachines/inkling"},"perplexity/sonar-deep-research":{"id":"perplexity/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for autonomous research and citation-backed long-form reports","family":"sonar","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"canonical_model_id":"perplexity/sonar-deep-research"},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.2},"canonical_model_id":"meta/muse-spark-1.2"},"upstage/solar-pro4":{"id":"upstage/solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.03,"output":0.12},"canonical_model_id":"upstage/solar-pro4"},"upstage/solar-pro3":{"id":"upstage/solar-pro3","name":"Solar Pro 3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"upstage/solar-pro3"},"upstage/solar-pro2":{"id":"upstage/solar-pro2","name":"Solar Pro 2","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"upstage/solar-pro2"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.1},"canonical_model_id":"google/gemini-2.5-flash-lite"},"mimo/mimo-v2.5":{"id":"mimo/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.14,"output":0.28},"canonical_model_id":"xiaomi/mimo-v2.5"},"mimo/mimo-v2.5-pro":{"id":"mimo/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30},"canonical_model_id":"sakana/fugu-ultra"},"mistral/voxtral-small-latest":{"id":"mistral/voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/voxtral-small-latest"},"qwen/qwen-flash":{"id":"qwen/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4},"canonical_model_id":"alibaba/qwen-flash"},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"cost":{"input":0.2,"output":1.6},"canonical_model_id":"alibaba/qwen3-vl-plus"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6},"canonical_model_id":"alibaba/qwen3-max"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1,"output":5},"canonical_model_id":"alibaba/qwen3-coder-plus"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6},"canonical_model_id":"alibaba/qwen3.7-plus"}}},"alibaba":{"id":"alibaba","env":["DASHSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://dashscope-intl.aliyuncs.com/compatible-mode/v1","name":"Alibaba","doc":"https://www.alibabacloud.com/help/en/model-studio/models","models":{"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4}},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"qwen2-5-32b-instruct":{"id":"qwen2-5-32b-instruct","name":"Qwen2.5 32B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.7,"output":2.8}},"qwq-plus":{"id":"qwq-plus","name":"QwQ Plus","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":2.4}},"qwen2-5-vl-72b-instruct":{"id":"qwen2-5-vl-72b-instruct","name":"Qwen2.5-VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.8,"output":8.4}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"reasoning":4.8}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.2,"output":0.4,"cache_read":0.04},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":6}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"qwen-plus-character-ja":{"id":"qwen-plus-character-ja","name":"Qwen Plus Character (Japanese)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":512},"cost":{"input":0.5,"output":1.4}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4}},"qwen3-livetranslate-flash-realtime":{"id":"qwen3-livetranslate-flash-realtime","name":"Qwen3-LiveTranslate Flash Realtime","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":10,"output":10,"input_audio":10,"output_audio":38}},"qwen2-5-72b-instruct":{"id":"qwen2-5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":1.4,"output":5.6}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.2,"reasoning":4}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.003,"cache_write":0.0375,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6}},"qwen-omni-turbo-realtime":{"id":"qwen-omni-turbo-realtime","name":"Qwen-Omni Turbo Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-05-08","last_updated":"2025-05-08","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.27,"output":1.07,"input_audio":4.44,"output_audio":8.89}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":1.5,"output":7.5,"tiers":[{"input":2.7,"output":13.5,"tier":{"type":"context","size":32000}},{"input":4.5,"output":22.5,"tier":{"type":"context","size":128000}}]}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384},"cost":{"input":0.05,"output":0.2,"reasoning":0.5}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":2.25,"tiers":[{"input":0.75,"output":3.75,"tier":{"type":"context","size":32000}},{"input":1.2,"output":6,"tier":{"type":"context","size":128000}}]}},"qwen3.8-omni-flash":{"id":"qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qvq-max":{"id":"qvq-max","name":"QVQ Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qvq","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":1.2,"output":4.8}},"qwen2-5-7b-instruct":{"id":"qwen2-5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.175,"output":0.7}},"qwen3-omni-flash":{"id":"qwen3-omni-flash","name":"Qwen3-Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.43,"output":1.66,"input_audio":3.81,"output_audio":15.11}},"qwen-vl-max":{"id":"qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.8,"output":3.2}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwen3-vl-30b-a3b":{"id":"qwen3-vl-30b-a3b","name":"Qwen3-VL 30B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.8,"reasoning":2.4}},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2}},"qwen-vl-plus":{"id":"qwen-vl-plus","name":"Qwen-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.21,"output":0.63}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5}},"qwen2-5-omni-7b":{"id":"qwen2-5-omni-7b","name":"Qwen2.5-Omni 7B","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0.1,"output":0.4,"input_audio":6.76}},"qwen-mt-plus":{"id":"qwen-mt-plus","name":"Qwen-MT Plus","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":2.46,"output":7.37}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3-VL 235B-A22B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.7,"output":2.8,"reasoning":8.4}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":5}},"qwen2-5-14b-instruct":{"id":"qwen2-5-14b-instruct","name":"Qwen2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen2-5-vl-7b-instruct":{"id":"qwen2-5-vl-7b-instruct","name":"Qwen2.5-VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.05}},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.3,"output":7.8,"cache_read":0.13,"cache_write":1.625}},"qwen-mt-turbo":{"id":"qwen-mt-turbo","name":"Qwen-MT Turbo","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.16,"output":0.49}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen3-8b":{"id":"qwen3-8b","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.7,"reasoning":2.1}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.28,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"qwen-omni-turbo":{"id":"qwen-omni-turbo","name":"Qwen-Omni Turbo","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.07,"output":0.27,"input_audio":4.44,"output_audio":8.89}},"qwen3-omni-flash-realtime":{"id":"qwen3-omni-flash-realtime","name":"Qwen3-Omni Flash Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.52,"output":1.99,"input_audio":4.57,"output_audio":18.13}},"qwen3-asr-flash":{"id":"qwen3-asr-flash","name":"Qwen3-ASR Flash","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-04","release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":0.035,"output":0.035}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen3-14b":{"id":"qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.35,"output":1.4,"reasoning":4.2}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-04","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5}}},"qwen-vl-ocr":{"id":"qwen-vl-ocr","name":"Qwen-VL OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-10-28","last_updated":"2025-04-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":34096,"output":4096},"cost":{"input":0.07,"output":0.16}}}},"auriko":{"id":"auriko","env":["AURIKO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.auriko.ai/v1","name":"Auriko","doc":"https://docs.auriko.ai","models":{"qwen-3.6-plus":{"id":"qwen-3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"alibaba/qwen3.6-plus"},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8},"canonical_model_id":"moonshotai/kimi-k2.5"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"zenmux":{"id":"zenmux","env":["ZENMUX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://zenmux.ai/api/v1","name":"ZenMux","doc":"https://docs.zenmux.ai","models":{"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-3.5-haiku":{"id":"anthropic/claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2024-11-04","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5-free":{"id":"anthropic/claude-sonnet-5-free","name":"Claude Sonnet 5 (Free)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-3.7-sonnet":{"id":"anthropic/claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":4},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek-V3.2 (Non-thinking Mode)","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.28,"output":0.42,"cache_read":0.03}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163000,"output":64000},"cost":{"input":0.22,"output":0.33}},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.28,"output":0.43}},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"tencent/hy3-preview":{"id":"tencent/hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.172,"output":0.572,"cache_read":0.058,"cache_write":0},"canonical_model_id":"tencent/hy3-preview"},"z-ai/glm-4.6v":{"id":"z-ai/glm-4.6v","name":"GLM 4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.1456,"output":0.4367,"cache_read":0.0291,"tiers":[{"input":0.2911,"output":0.8734,"cache_read":0.0582,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6v"},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM 4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582,"tiers":[{"input":0.5823,"output":2.3291,"cache_read":0.1165,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.726,"output":3.1946,"cache_read":0.1743,"tiers":[{"input":1.0165,"output":3.7754,"cache_read":0.2614,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582,"tiers":[{"input":0.5823,"output":2.3291,"cache_read":0.1165,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM 5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.58,"output":2.6,"cache_read":0.14,"tiers":[{"input":0.87,"output":3.18,"cache_read":0.22,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-4.6v-flash":{"id":"z-ai/glm-4.6v-flash","name":"GLM 4.6V FlashX","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.0218,"output":0.2184,"cache_read":0.0044,"tiers":[{"input":0.0437,"output":0.4367,"cache_read":0.0044,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"z-ai/glm-5.3-flashx":{"id":"z-ai/glm-5.3-flashx","name":"GLM 5.3 FlashX","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.375,"output":1.25,"cache_read":0.075},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.2911,"output":1.1645,"cache_read":0.0582,"tiers":[{"input":0.5823,"output":2.3291,"cache_read":0.1165,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-4.7-flash-free":{"id":"z-ai/glm-4.7-flash-free","name":"GLM 4.7 Flash (Free)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.98,"output":3.08,"cache_read":0.182},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.8781,"output":3.5126,"cache_read":0.1903,"tiers":[{"input":1.1709,"output":4.098,"cache_read":0.2927,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM 4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.0728,"output":0.4367,"cache_read":0.0146},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.73,"output":3.19,"cache_read":0.174,"tiers":[{"input":1.02,"output":3.77,"cache_read":0.261,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-4.6v-flash-free":{"id":"z-ai/glm-4.6v-flash-free","name":"GLM 4.6V Flash (Free)","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"tiers":[{"input":0,"output":0,"cache_read":0,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"z-ai/glm-image":{"id":"z-ai/glm-image","name":"GLM-Image","description":"GLM-Image is an image generation model adopts a hybrid autoregressive + diffusion decoder architecture. In general image generation quality, GLM‑Image aligns with mainstream latent diffusion approaches, but it shows significant advantages in text-rendering and knowledge‑intensive generation scenarios. It performs especially well in tasks requiring precise semantic understanding and complex information expression, while maintaining strong capabilities in high‑fidelity and fine‑grained detail generation. In addition to text‑to‑image generation, GLM‑Image also supports a rich set of image‑to‑image tasks including image editing, style transfer, identity‑preserving generation, and multi‑subject consistency.","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":10240,"output":0},"canonical_model_id":"zhipuai/glm-image"},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM 4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.1165,"output":0.2911,"cache_read":0.0233,"tiers":[{"input":0.1747,"output":1.1645,"cache_read":0.0349,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"kuaishou/kat-coder-pro-v2":{"id":"kuaishou/kat-coder-pro-v2","name":"KAT-Coder-Pro-V2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":80000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"baidu/ernie-5.0-thinking-preview":{"id":"baidu/ernie-5.0-thinking-preview","name":"ERNIE 5.0","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.84,"output":3.37}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-voice-tts-1.0":{"id":"x-ai/grok-voice-tts-1.0","name":"Grok Voice TTS 1.0","description":"Convert text into spoken audio with a single API call. The API supports a rich set of expressive voices, inline speech tags for fine-grained delivery control, and output formats from high-fidelity MP3 to telephony-optimized μ-law.","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":15000,"output":15000},"canonical_model_id":"xai/grok-voice-tts-1.0"},"x-ai/grok-imagine-image-2.0":{"id":"x-ai/grok-imagine-image-2.0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":66000,"output":0},"canonical_model_id":"xai/grok-imagine-image-2.0"},"x-ai/grok-voice-stt-1.0":{"id":"x-ai/grok-voice-stt-1.0","name":"Grok Voice STT 1.0","description":"Grok Voice STT 1.0 is xAI's speech-to-text model. It supports transcription with word-level timestamps, optional speaker diarization, and multichannel audio.","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-04","last_updated":"2026-08-04","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":15000,"output":15000},"canonical_model_id":"xai/grok-voice-stt-1.0"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"x-ai/grok-4.2-fast":{"id":"x-ai/grok-4.2-fast","name":"Grok 4.2 Fast","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":4,"output":12,"cache_read":0.2,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"x-ai/grok-4.2-fast-non-reasoning":{"id":"x-ai/grok-4.2-fast-non-reasoning","name":"Grok 4.2 Fast Non Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":4,"output":12,"cache_read":0.2,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Doubao-Seed-2.0-mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.03,"output":0.28,"cache_read":0.01,"cache_write":0.0024}},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Doubao-Seed-2.0-lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.09,"output":0.51,"cache_read":0.02,"cache_write":0.0024}},"volcengine/doubao-seed-code":{"id":"volcengine/doubao-seed-code","name":"Doubao-Seed-Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-11","last_updated":"2025-11-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0.17,"output":1.12,"cache_read":0.03}},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Doubao-Seed-2.0-pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-14","release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.45,"output":2.24,"cache_read":0.09,"cache_write":0.0024}},"volcengine/doubao-seed-1.8":{"id":"volcengine/doubao-seed-1.8","name":"Doubao-Seed-1.8","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11,"output":0.28,"cache_read":0.02,"cache_write":0.0024}},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.9,"output":4.48}},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-02-19","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","pdf","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["pdf","image","text","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":4.5}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.3,"output":2.5,"cache_read":0.07,"cache_write":1}},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1}},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["pdf","image","text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.03,"cache_write":1}},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":65530},"cost":{"input":0.25,"output":1.5}},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"canonical_model_id":"google/gemini-3.1-flash-lite"},"sapiens-ai/agnes-1.5-lite":{"id":"sapiens-ai/agnes-1.5-lite","name":"Agnes 1.5 Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-26","last_updated":"2026-03-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.12,"output":0.6}},"sapiens-ai/agnes-1.5-pro":{"id":"sapiens-ai/agnes-1.5-pro","name":"Agnes 1.5 Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-21","last_updated":"2026-03-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.16,"output":0.8}},"inclusionai/ring-2.6-1t":{"id":"inclusionai/ring-2.6-1t","name":"inclusionAI: Ring-2.6-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-12-31","release_date":"2026-05-07","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.06}},"inclusionai/ring-1t":{"id":"inclusionai/ring-1t","name":"Ring-1T","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-12","last_updated":"2025-10-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.56,"output":2.24,"cache_read":0.11}},"inclusionai/ling-1t":{"id":"inclusionai/ling-1t","name":"Ling-1T","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-09","last_updated":"2025-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","cost":{"input":0.56,"output":2.24,"cache_read":0.11}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code HighSpeed","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2025-01-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262140,"output":262140},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2025-01-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"cost":{"input":0.58,"output":3.02,"cache_read":0.1}},"moonshotai/kimi-k3-free":{"id":"moonshotai/kimi-k3-free","name":"Kimi K3 (Free)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/kimi-k2.7-code-free":{"id":"moonshotai/kimi-k2.7-code-free","name":"Kimi K2.7 Code (Free)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/kimi-k2-thinking-turbo":{"id":"moonshotai/kimi-k2-thinking-turbo","name":"Kimi K2 Thinking Turbo","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":64000},"status":"deprecated","cost":{"input":1.15,"output":8,"cache_read":0.15}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"canonical_model_id":"xiaomi/mimo-v2-flash"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2-omni":{"id":"xiaomi/mimo-v2-omni","name":"MiMo V2 Omni","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":265000,"output":265000},"cost":{"input":0.4,"output":2,"cache_read":0.08},"canonical_model_id":"xiaomi/mimo-v2-omni"},"xiaomi/mimo-v2-pro":{"id":"xiaomi/mimo-v2-pro","name":"MiMo V2 Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":256000},"cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2-pro"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3,"cache_read":0.2,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax M2.5 highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.6,"output":4.8,"cache_read":0.06,"cache_write":0.75}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131070},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3055,"output":1.2219}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.6,"output":2.4},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131070},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.611,"output":2.4439}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://zenmux.ai/api/anthropic/v1"},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.38}},"stepfun/step-3":{"id":"stepfun/step-3","name":"Step-3","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":64000},"status":"deprecated","cost":{"input":0.21,"output":0.57}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.1,"output":0.3}},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.2,"output":1.15},"canonical_model_id":"stepfun/step-3.7-flash"},"stepfun/step-3.7-flash-free":{"id":"stepfun/step-3.7-flash-free","name":"Step 3.7 Flash (Free)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0},"canonical_model_id":"stepfun/step-3.7-flash"},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1020000,"output":1020000},"cost":{"input":0.1,"output":0.4}},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.8,"output":4.8}},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3-Max-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":1.2,"output":6}},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3-Coder-Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6-Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5}},"canonical_model_id":"alibaba/qwen3.7-plus"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":3.75,"output":18.75}},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":45,"output":225}},"openai/gpt-5.3-chat":{"id":"openai/gpt-5.3-chat","name":"GPT-5.3 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16380},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.2,"output":1.25}},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-01-01","release_date":"2026-01-15","last_updated":"2026-01-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.17}},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2-Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":21,"output":168}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14}},"openai/gpt-5.5-instant":{"id":"openai/gpt-5.5-instant","name":"GPT-5.5 Instant","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-05-05","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5-instant"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-20","last_updated":"2026-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.75,"output":4.5}},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25,"tiers":[{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-01-01","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.75,"output":14,"cache_read":0.17}},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-5.1-chat":{"id":"openai/gpt-5.1-chat","name":"GPT-5.1 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1-Codex-Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":64000},"provider":{"npm":"@ai-sdk/openai","api":"https://zenmux.ai/api/v1"},"cost":{"input":1.25,"output":10,"cache_read":0.12}},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"unorouter":{"id":"unorouter","env":["UNOROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.unorouter.com/v1","name":"UnoRouter","doc":"https://unorouter.com/models","models":{"gpt-5.5:free":{"id":"gpt-5.5:free","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.5"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1.8,"output":10.8},"canonical_model_id":"openai/gpt-5.4"},"glm-4.5-flash:free":{"id":"glm-4.5-flash:free","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.5-flash"},"gemma-4-31b-it:free":{"id":"gemma-4-31b-it:free","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.2675,"output":5.3368},"canonical_model_id":"moonshotai/kimi-k2.6"},"nemotron-3-ultra-550b-a55b:free":{"id":"nemotron-3-ultra-550b-a55b:free","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"gpt-5.4:free":{"id":"gpt-5.4:free","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.4"},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.819,"output":3.276},"canonical_model_id":"minimax/MiniMax-M2.7"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1857,"output":1.1142},"canonical_model_id":"google/gemini-3.5-flash"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.05,"output":8.4},"canonical_model_id":"openai/gpt-5.2"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.425,"output":2.125},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1875,"output":1.125},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.44,"output":7.2},"canonical_model_id":"anthropic/claude-sonnet-5"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.6001,"output":5.0288},"canonical_model_id":"zhipuai/glm-5.2"},"step-3.7-flash:free":{"id":"step-3.7-flash:free","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0},"canonical_model_id":"stepfun/step-3.7-flash"},"deepseek-v4-flash:free":{"id":"deepseek-v4-flash:free","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.2,"output":6},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"deepseek-v4-pro:free":{"id":"deepseek-v4-pro:free","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"glm-5.2:free":{"id":"glm-5.2:free","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.2"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.8999,"output":1.7999},"canonical_model_id":"deepseek/deepseek-v4-pro"},"qwen3.5-397b-a17b:free":{"id":"qwen3.5-397b-a17b:free","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"minimax-m2.7:free":{"id":"minimax-m2.7:free","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"minimax/MiniMax-M2.7"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.0625,"output":0.125},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"salad-cloud":{"id":"salad-cloud","env":["SALAD_CLOUD_API_KEY"],"npm":"@saladtechnologies-oss/ai-sdk-provider","name":"SaladCloud AI Gateway","doc":"https://docs.salad.com/ai-gateway/explanation/overview","models":{"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Qwen MoE for agentic tasks, complex reasoning, code generation, and instruction following","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":262144},"cost":{"input":0.09,"output":0.6},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"}}},"vispark":{"id":"vispark","env":["VISPARK_LAB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lab.vispark.in/v1","name":"Vispark","doc":"https://lab.vispark.in/#vision","models":{"vispark/vision-large":{"id":"vispark/vision-large","name":"Vision Large","description":"Most capable Vision model for complex reasoning, detailed media analysis, and structured output over a 1M-token context window.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-05-15","last_updated":"2026-09","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":7.37,"output":22.11}},"vispark/vision-small":{"id":"vispark/vision-small","name":"Vision Small","description":"Fast, low-cost multimodal model for understanding text, images, audio, video, and PDFs, with tool calling and a 1M-token context window.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-05-15","last_updated":"2026-09","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.05,"output":3.16}},"vispark/vision-medium":{"id":"vispark/vision-medium","name":"Vision Medium","description":"Balanced multimodal model pairing a 1M-token context window with deeper reasoning for analysis, content creation, and tool use across text, image, audio, video, and PDF inputs.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-05-15","last_updated":"2026-09","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":4.21,"output":12.63}}}},"siliconflow-cn":{"id":"siliconflow-cn","env":["SILICONFLOW_CN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.siliconflow.cn/v1","name":"SiliconFlow (China)","doc":"https://cloud.siliconflow.com/models","models":{"ByteDance-Seed/Seed-OSS-36B-Instruct":{"id":"ByteDance-Seed/Seed-OSS-36B-Instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.21,"output":0.57}},"tencent/Hunyuan-A13B-Instruct":{"id":"tencent/Hunyuan-A13B-Instruct","name":"tencent/Hunyuan-A13B-Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"Qwen/Qwen3.5-4B":{"id":"Qwen/Qwen3.5-4B","name":"Qwen/Qwen3.5-4B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen/Qwen3.5-27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.26,"output":2.09}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen/Qwen3.6-35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen/Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.13,"output":0.6}},"Qwen/Qwen3-14B":{"id":"Qwen/Qwen3-14B","name":"Qwen/Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen/Qwen3-8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.06,"output":0.06}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen/Qwen3-32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen/Qwen3.5-35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.23,"output":1.86}},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen/Qwen3.5-122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.32}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen/Qwen3.5-9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.22,"output":1.74}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen/Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.74}},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen/Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.25,"output":1}},"Qwen/Qwen3-VL-32B-Instruct":{"id":"Qwen/Qwen3-VL-32B-Instruct","name":"Qwen/Qwen3-VL-32B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen2.5-7B-Instruct":{"id":"Qwen/Qwen2.5-7B-Instruct","name":"Qwen/Qwen2.5-7B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.05,"output":0.05}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen/Qwen3-Coder-30B-A3B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-01","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.07,"output":0.28}},"Qwen/Qwen2.5-72B-Instruct":{"id":"Qwen/Qwen2.5-72B-Instruct","name":"Qwen/Qwen2.5-72B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":33000,"output":4000},"cost":{"input":0.59,"output":0.59}},"Qwen/Qwen3-VL-30B-A3B-Thinking":{"id":"Qwen/Qwen3-VL-30B-A3B-Thinking","name":"Qwen/Qwen3-VL-30B-A3B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen/Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.3}},"Qwen/Qwen3-VL-32B-Thinking":{"id":"Qwen/Qwen3-VL-32B-Thinking","name":"Qwen/Qwen3-VL-32B-Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-21","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-VL-8B-Instruct":{"id":"Qwen/Qwen3-VL-8B-Instruct","name":"Qwen/Qwen3-VL-8B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.18,"output":0.68}},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen/Qwen3-VL-30B-A3B-Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-05","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.29,"output":1}},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-OCR":{"id":"deepseek-ai/DeepSeek-OCR","name":"deepseek-ai/DeepSeek-OCR","description":"OCR model for extracting structured text from documents and screenshots","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"deepseek-ai/DeepSeek-V4-Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":393000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"deepseek-ai/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42}},"deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"deepseek-ai/DeepSeek-V3.1-Terminus","name":"deepseek-ai/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"deepseek-ai/DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"stepfun-ai/Step-3.5-Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","family":"step","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.1,"output":0.3}},"inclusionAI/Ling-flash-2.0":{"id":"inclusionAI/Ling-flash-2.0","name":"inclusionAI/Ling-flash-2.0","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.57}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1049000,"output":262000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"zai-org/GLM-4.5-Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.14,"output":0.86}},"Pro/deepseek-ai/DeepSeek-R1":{"id":"Pro/deepseek-ai/DeepSeek-R1","name":"Pro/deepseek-ai/DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.5,"output":2.18}},"Pro/deepseek-ai/DeepSeek-V3.2":{"id":"Pro/deepseek-ai/DeepSeek-V3.2","name":"Pro/deepseek-ai/DeepSeek-V3.2","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.42}},"Pro/deepseek-ai/DeepSeek-V3":{"id":"Pro/deepseek-ai/DeepSeek-V3","name":"Pro/deepseek-ai/DeepSeek-V3","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.25,"output":1}},"Pro/deepseek-ai/DeepSeek-V3.1-Terminus":{"id":"Pro/deepseek-ai/DeepSeek-V3.1-Terminus","name":"Pro/deepseek-ai/DeepSeek-V3.1-Terminus","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"Pro/MiniMaxAI/MiniMax-M2.5":{"id":"Pro/MiniMaxAI/MiniMax-M2.5","name":"Pro/MiniMaxAI/MiniMax-M2.5","description":"Frontier MiniMax model for engineering, office tasks, and agentic reasoning","family":"minimax","attachment":false,"reasoning":false,"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":131000},"cost":{"input":0.3,"output":1.22}},"Pro/moonshotai/Kimi-K2.6":{"id":"Pro/moonshotai/Kimi-K2.6","name":"Pro/moonshotai/Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"Pro/moonshotai/Kimi-K2.5":{"id":"Pro/moonshotai/Kimi-K2.5","name":"Pro/moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.45,"output":2.25,"cache_read":0.07}},"Pro/zai-org/GLM-5.1":{"id":"Pro/zai-org/GLM-5.1","name":"Pro/zai-org/GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"Pro/zai-org/GLM-5":{"id":"Pro/zai-org/GLM-5","name":"Pro/zai-org/GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":205000},"cost":{"input":1,"output":3.2}},"PaddlePaddle/PaddleOCR-VL-1.5":{"id":"PaddlePaddle/PaddleOCR-VL-1.5","name":"PaddlePaddle/PaddleOCR-VL-1.5","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-29","last_updated":"2026-01-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0,"output":0}}}},"regolo-ai":{"id":"regolo-ai","env":["REGOLO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.regolo.ai/v1","name":"Regolo AI","doc":"https://docs.regolo.ai/","models":{"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":120000,"output":120000},"cost":{"input":0.58,"output":2.42},"canonical_model_id":"alibaba/qwen3.8-27b"},"brick-v1-beta":{"id":"brick-v1-beta","name":"Brick v1 Beta","description":"Semantic router by Regolo.ai that directs each request to the most suitable model, optimizing costs and performance","family":"model-router","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":100000,"output":15000},"status":"beta","cost":{"input":0,"output":0}},"qwen3.5-122b":{"id":"qwen3.5-122b","name":"Qwen3.5-122B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.9,"output":3.6}},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3-Coder-Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.3,"output":1.2}},"apertus-70b":{"id":"apertus-70b","name":"Apertus 70B","description":"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":30000,"output":30000},"cost":{"input":0.46,"output":2.42},"canonical_model_id":"swiss-ai/apertus-70b"},"glm5.2":{"id":"glm5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":96000,"output":96000},"cost":{"input":2.31,"output":6},"canonical_model_id":"zhipuai/glm-5.2"},"qwen3-reranker-4b":{"id":"qwen3-reranker-4b","name":"Qwen3-Reranker-4B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.12,"output":0.12}},"deepseek-ocr-2":{"id":"deepseek-ocr-2","name":"DeepSeek OCR 2","description":"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":4000,"output":4000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-ocr-2"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":2.7}},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":100000},"cost":{"input":0.46,"output":2.42},"canonical_model_id":"google/gemma-4-31b-it"},"brick-complexity-pro":{"id":"brick-complexity-pro","name":"Brick Complexity Pro","description":"Complexity classifier that powers the Brick semantic router by extracting query difficulty","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":100000,"output":15000},"cost":{"input":0.12,"output":0.46}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT-OSS-20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.4,"output":1.8}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5-9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"qwen3-embedding-8b":{"id":"qwen3-embedding-8b","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.1,"output":0.1}},"mistral-small-4-119b":{"id":"mistral-small-4-119b","name":"Mistral Small 4 119B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-15","last_updated":"2026-03-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.75,"output":3}},"qwen-image":{"id":"qwen-image","name":"Qwen-Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":2}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT-OSS-120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1,"output":4.2}},"faster-whisper-large-v3":{"id":"faster-whisper-large-v3","name":"Faster Whisper Large v3","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"openai/whisper-large-v3"}}},"xiaomi-token-plan-ams":{"id":"xiaomi-token-plan-ams","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-ams.xiaomimimo.com/v1","name":"Xiaomi Token Plan (Europe)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2-pro"},"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5"}}},"inceptron":{"id":"inceptron","env":["INCEPTRON_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inceptron.io/v1","name":"Inceptron","doc":"https://docs.inceptron.io","models":{"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.13,"output":0.28,"cache_read":0.03,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.53,"output":3.39,"cache_read":0.17,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.66,"output":3.4,"cache_read":0.18,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.71,"output":2.35,"cache_read":0.12,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"}}},"upstage":{"id":"upstage","env":["UPSTAGE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.upstage.ai/v1/solar","name":"Upstage","doc":"https://developers.upstage.ai/docs/apis/chat","models":{"solar-pro4":{"id":"solar-pro4","name":"Solar Pro 4","description":"Upstage's flagship model, specialized for agentic use","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"solar-pro3":{"id":"solar-pro3","name":"solar-pro3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.25,"output":0.25}},"solar-mini":{"id":"solar-mini","name":"solar-mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"solar-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-06-12","last_updated":"2025-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.15,"output":0.15}},"solar-pro2":{"id":"solar-pro2","name":"solar-pro2","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"solar-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.25,"output":0.25}}}},"vultr":{"id":"vultr","env":["VULTR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.vultrinference.com/v1","name":"Vultr","doc":"https://api.vultrinference.com/","models":{"mimo-v2.6-pro-rl":{"id":"mimo-v2.6-pro-rl","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":0.8},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":1},"canonical_model_id":"alibaba/qwen3.8-27b"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.35},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.1,"output":0.25},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.25,"output":1},"canonical_model_id":"meta/muse-glimmer-30b"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"laguna-s-2.1":{"id":"laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.09,"output":0.18},"canonical_model_id":"poolside/laguna-s-2.1"},"glm-5.x-menthol":{"id":"glm-5.x-menthol","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.4,"output":1.75},"canonical_model_id":"zhipuai/glm-5"},"nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.25},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"mimo-v2.6-flash-rl":{"id":"mimo-v2.6-flash-rl","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.1,"output":0.25},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.2,"output":0.9},"canonical_model_id":"minimax/MiniMax-M3"},"qwen3.8-flash-next":{"id":"qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.1,"output":0.2},"canonical_model_id":"alibaba/qwen3.8-flash-next"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.75,"output":3},"canonical_model_id":"zhipuai/glm-5.2"},"nemotron-3.5-content-safety":{"id":"nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.75,"output":3},"canonical_model_id":"zhipuai/glm-5.3"}}},"huggingface":{"id":"huggingface","env":["HF_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://router.huggingface.co/v1","name":"Hugging Face","doc":"https://huggingface.co/docs/inference-providers","models":{"tencent/Hy3":{"id":"tencent/Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58},"canonical_model_id":"tencent/hy3"},"tencent/Hy4-preview":{"id":"tencent/Hy4-preview","name":"Hy4 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501},"canonical_model_id":"tencent/hy4-preview"},"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama-3.1-8B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.06,"output":0.06},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.59,"output":0.79},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"XiaomiMiMo/MiMo-V2-Flash":{"id":"XiaomiMiMo/MiMo-V2-Flash","name":"MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.3}},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":3},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"MiMo model for long-context reasoning, perception, and agentic tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.4,"output":2},"canonical_model_id":"xiaomi/mimo-v2.5"},"thinkingmachines/Inkling-Small":{"id":"thinkingmachines/Inkling-Small","name":"Inkling Small","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.5,"output":1.2},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05},"canonical_model_id":"thinkingmachines/inkling"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"google/gemma-3-12b-it"},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-4b-it"},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":1.5},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next-80B-A3B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-11","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.25,"output":1}},"Qwen/Qwen2.5-Coder-32B-Instruct":{"id":"Qwen/Qwen2.5-Coder-32B-Instruct","name":"Qwen2.5-Coder-32B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.06,"output":0.2},"canonical_model_id":"alibaba/qwen2.5-coder-32b-instruct"},"Qwen/Qwen3-Coder-Next":{"id":"Qwen/Qwen3-Coder-Next","name":"Qwen3-Coder-Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.2,"output":0.7},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"Qwen/Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen/Qwen3-VL-235B-A22B-Thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"Qwen/Qwen3.5-27B":{"id":"Qwen/Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-27b"},"Qwen/Qwen3-Next-80B-A3B-Thinking":{"id":"Qwen/Qwen3-Next-80B-A3B-Thinking","name":"Qwen3-Next-80B-A3B-Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-11","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":2}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.95},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.3,"output":3}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.855,"output":2.565},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"Qwen/Qwen3-235B-A22B":{"id":"Qwen/Qwen3-235B-A22B","name":"Qwen3 235B-A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.2,"output":0.8},"canonical_model_id":"alibaba/qwen3-235b-a22b"},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.29,"output":0.59},"canonical_model_id":"alibaba/qwen3-32b"},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.07,"output":0.26},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen 3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.01,"output":0}},"Qwen/Qwen3.5-35B-A3B":{"id":"Qwen/Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"Qwen/Qwen3.5-122B-A10B":{"id":"Qwen/Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25},"canonical_model_id":"alibaba/qwen3.5-9b"},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3.6}},"Qwen/Qwen3-Embedding-4B":{"id":"Qwen/Qwen3-Embedding-4B","name":"Qwen 3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":2048},"cost":{"input":0.01,"output":0}},"Qwen/Qwen3.8-2.4T-A95B":{"id":"Qwen/Qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":6.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"Qwen/Qwen3-30B-A3B":{"id":"Qwen/Qwen3-30B-A3B","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen3-Coder-480B-A35B-Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":2,"output":2}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.47,"output":3.19},"canonical_model_id":"alibaba/qwen3.6-27b"},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.27,"output":1},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":32768},"cost":{"input":0.7,"output":2.5},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.28,"output":0.4}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":3,"output":5}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":8192},"cost":{"input":0.4,"output":1.3},"canonical_model_id":"deepseek/deepseek-v3"},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.27,"output":1.12},"canonical_model_id":"deepseek/deepseek-v3-0324"},"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{"id":"deepseek-ai/DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"stepfun-ai/Step-3.7-Flash":{"id":"stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15},"canonical_model_id":"stepfun/step-3.7-flash"},"stepfun-ai/Step-3.5-Flash":{"id":"stepfun-ai/Step-3.5-Flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"stepfun/step-3.5-flash"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M1-80k":{"id":"MiniMaxAI/MiniMax-M1-80k","name":"MiniMax M1 80K","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":80000},"cost":{"input":0.55,"output":2.2},"canonical_model_id":"minimax/minimax-m1-80k"},"MiniMaxAI/MiniMax-M2.1":{"id":"MiniMaxAI/MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-10","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"MiniMaxAI/MiniMax-M2":{"id":"MiniMaxAI/MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2-Instruct":{"id":"moonshotai/Kimi-K2-Instruct","name":"Kimi-K2-Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-14","last_updated":"2025-07-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":1,"output":3}},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi-K2-Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.15}},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi-K2-Instruct-0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-04","last_updated":"2025-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":1,"output":3}},"zai-org/GLM-4.6V-Flash":{"id":"zai-org/GLM-4.6V-Flash","name":"GLM-4.6V-Flash","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-03","last_updated":"2026-04-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.13,"output":0.85},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-4.5V":{"id":"zai-org/GLM-4.5V","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8},"canonical_model_id":"zhipuai/glm-4.5v"},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2},"canonical_model_id":"zhipuai/glm-4.6"},"zai-org/AutoGLM-Phone-9B-Multilingual":{"id":"zai-org/AutoGLM-Phone-9B-Multilingual","name":"AutoGLM Phone 9B Multilingual","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-10","last_updated":"2025-12-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.035,"output":0.138},"canonical_model_id":"zhipuai/autoglm-phone-9b-multilingual"},"zai-org/GLM-4.7-Flash":{"id":"zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-08-08","last_updated":"2025-08-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.3"},"zai-org/GLM-4.5":{"id":"zai-org/GLM-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.5"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":0.69},"canonical_model_id":"openai/gpt-oss-120b"}}},"volcengine":{"id":"volcengine","env":["ARK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ark.cn-beijing.volces.com/api/v3","name":"Volcengine Ark","doc":"https://www.volcengine.com/docs/82379/1330310","models":{"glm-5-3-flash-260828":{"id":"glm-5-3-flash-260828","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.11875,"output":0.41563,"cache_read":0.03414},"canonical_model_id":"zhipuai/glm-5.3-flash"},"doubao-seed-1-6-251015":{"id":"doubao-seed-1-6-251015","name":"Seed 1.6","description":"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-1-6"},"doubao-seed-2-0-pro-260215":{"id":"doubao-seed-2-0-pro-260215","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095,"tiers":[{"input":0.71248,"output":3.56241,"cache_read":0.1425,"tier":{"type":"context","size":32000}},{"input":1.42496,"output":7.12482,"cache_read":0.28499,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-pro"},"doubao-seed-2-0-lite-260428":{"id":"doubao-seed-2-0-lite-260428","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.08906,"output":0.53436,"cache_read":0.01781,"tiers":[{"input":0.13359,"output":0.80154,"cache_read":0.02672,"tier":{"type":"context","size":32000}},{"input":0.26718,"output":1.60308,"cache_read":0.05344,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"doubao-seed-2-1-pro-260628":{"id":"doubao-seed-2-1-pro-260628","name":"Seed 2.1 Pro","description":"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812},"canonical_model_id":"bytedance-seed/seed-2.1-pro"},"doubao-seed-1-6-vision-250815":{"id":"doubao-seed-1-6-vision-250815","name":"Seed 1.6 Vision","description":"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-1-6-vision"},"doubao-seed-2-0-mini-260428":{"id":"doubao-seed-2-0-mini-260428","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.02969,"output":0.29687,"cache_read":0.00594,"tiers":[{"input":0.05937,"output":0.59374,"cache_read":0.01187,"tier":{"type":"context","size":32000}},{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"doubao-seed-2-0-code-preview-260215":{"id":"doubao-seed-2-0-code-preview-260215","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.47499,"output":2.37494,"cache_read":0.095,"tiers":[{"input":0.71248,"output":3.56241,"cache_read":0.1425,"tier":{"type":"context","size":32000}},{"input":1.42496,"output":7.12482,"cache_read":0.28499,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"doubao-seed-2-1-turbo-260628":{"id":"doubao-seed-2-1-turbo-260628","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.4453,"output":2.22651,"cache_read":0.08906},"canonical_model_id":"bytedance-seed/seed-2.1-turbo"},"glm-5-2-260617":{"id":"glm-5-2-260617","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.18747,"output":4.15615,"cache_read":0.29687},"canonical_model_id":"zhipuai/glm-5.2"},"doubao-seed-1-8-251228":{"id":"doubao-seed-1-8-251228","name":"Seed 1.8","description":"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-28","last_updated":"2025-12-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.11875,"output":1.18747,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":2.37494,"cache_read":0.02375,"tier":{"type":"context","size":32000}},{"input":0.35624,"output":3.56241,"cache_read":0.02375,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-1-8"},"doubao-seed-evolving":{"id":"doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.8906,"output":4.45301,"cache_read":0.17812},"canonical_model_id":"bytedance-seed/seed-evolving"},"doubao-seed-1-6-flash-250828":{"id":"doubao-seed-1-6-flash-250828","name":"Seed 1.6 Flash","description":"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.02227,"output":0.22265,"cache_read":0.00445,"tiers":[{"input":0.04453,"output":0.4453,"cache_read":0.00445,"tier":{"type":"context","size":32000}},{"input":0.08906,"output":0.8906,"cache_read":0.00445,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"bytedance-seed/seed-1-6-flash"},"doubao-seed-character-260628":{"id":"doubao-seed-character-260628","name":"Seed Character","description":"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.11875,"output":0.29687,"cache_read":0.02375,"tiers":[{"input":0.17812,"output":0.8906,"cache_read":0.02375,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"bytedance-seed/seed-character"},"deepseek-v4-pro-ga-260813":{"id":"deepseek-v4-pro-ga-260813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.3359,"output":4.00771,"cache_read":0.04453},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-v4-flash-ga-260731":{"id":"deepseek-v4-flash-ga-260731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.4453,"output":1.3359,"cache_read":0.01484},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"}}},"impossibl":{"id":"impossibl","env":["IMPOSSIBL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.impossibl.com/v1","name":"Impossibl","doc":"https://impossibl.com/docs/models","models":{"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"groq/gpt-oss-20b":{"id":"groq/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-20b"},"groq/gpt-oss-120b":{"id":"groq/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-oss-120b"},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-4.5-air"},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"canonical_model_id":"thinkingmachines/inkling"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"canonical_model_id":"google/gemini-3.1-flash-lite"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3},"canonical_model_id":"xai/grok-4.5"},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"fireworks/gpt-oss-20b":{"id":"fireworks/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3,"cache_read":0.035},"canonical_model_id":"openai/gpt-oss-20b"},"fireworks/glm-5.2":{"id":"fireworks/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"fireworks/gpt-oss-120b":{"id":"fireworks/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"openai/gpt-oss-120b"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.003},"canonical_model_id":"xiaomi/mimo-v2.5"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-max-preview":{"id":"qwen/qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.5,"output":7.5},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"tiers":[{"input":1,"output":4,"cache_read":0.2,"tier":{"type":"context","size":262144}}],"context_over_200k":{"input":1,"output":4,"cache_read":0.2}},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":262144}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}},"canonical_model_id":"alibaba/qwen3.7-plus"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":3}},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":3,"tiers":[{"input":60,"output":270,"cache_read":3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270,"cache_read":3}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5-codex"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"}}},"xpersona":{"id":"xpersona","env":["XPERSONA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://www.xpersona.co/v1","name":"Xpersona","doc":"https://www.xpersona.co/docs","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0.75,"output":6,"reasoning":6,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3.7,"reasoning":3.7,"cache_read":0.06},"canonical_model_id":"anthropic/claude-haiku-4-5"},"xpersona-frieren-coder":{"id":"xpersona-frieren-coder","name":"Xpersona Frieren 1","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-30","release_date":"2026-05-01","last_updated":"2026-05-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":384000},"cost":{"input":1.5,"output":6,"reasoning":6,"cache_read":0.15}},"gpt-5.6":{"id":"gpt-5.6","name":"GPT-5.6","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15},"canonical_model_id":"openai/gpt-5.6-sol"},"xpersona-gpt-5.5":{"id":"xpersona-gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-30","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18,"reasoning":18,"cache_read":0.3},"canonical_model_id":"openai/gpt-5.5"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.55,"output":12.2,"reasoning":12.2,"cache_read":0.155},"canonical_model_id":"google/gemini-3.5-flash"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":18.5,"reasoning":18.5,"cache_read":0.3},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":0.375,"output":4,"reasoning":4,"cache_read":0.0375},"canonical_model_id":"openai/gpt-5.4-mini"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.5,"output":9.25,"reasoning":9.25,"cache_read":0.15},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":5.55,"reasoning":5.55,"cache_read":0.09},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":2,"reasoning":2,"cache_read":0.15},"canonical_model_id":"openai/gpt-5.6-terra"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":372000,"output":128000},"cost":{"input":1.5,"output":12,"reasoning":12,"cache_read":0.15},"canonical_model_id":"openai/gpt-5.6-sol"}}},"qiniu-ai":{"id":"qiniu-ai","env":["QINIU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.qnaigc.com/v1","name":"Qiniu","doc":"https://developer.qiniu.com/aitokenapi","models":{"glm-4.5":{"id":"glm-4.5","name":"GLM 4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304}},"gemini-3.0-flash-preview":{"id":"gemini-3.0-flash-preview","name":"Gemini 3.0 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000}},"doubao-seed-2.0-mini":{"id":"doubao-seed-2.0-mini","name":"Doubao Seed 2.0 Mini","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"mimo-v2-flash":{"id":"mimo-v2-flash","name":"Mimo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"canonical_model_id":"xiaomi/mimo-v2-flash"},"doubao-seed-2.0-lite":{"id":"doubao-seed-2.0-lite","name":"Doubao Seed 2.0 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"doubao-seed-1.6-thinking":{"id":"doubao-seed-1.6-thinking","name":"Doubao-Seed 1.6 Thinking","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Gemini 2.5 Flash Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-22","last_updated":"2025-10-22","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":32768,"output":8192}},"gemini-3.0-pro-image-preview":{"id":"gemini-3.0-pro-image-preview","name":"Gemini 3.0 Pro Image Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":8192}},"claude-3.5-haiku":{"id":"claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235b A22B Instruct 2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":64000}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-12","last_updated":"2025-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768}},"qwen-max-2025-01-25":{"id":"qwen-max-2025-01-25","name":"Qwen2.5-Max-2025-01-25","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"deepseek-v3-0324":{"id":"deepseek-v3-0324","name":"DeepSeek-V3-0324","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40000,"output":4096}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536}},"claude-4.5-sonnet":{"id":"claude-4.5-sonnet","name":"Claude 4.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek-V3","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-14","last_updated":"2025-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":4096}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen-Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":4096}},"gemini-2.0-flash":{"id":"gemini-2.0-flash","name":"Gemini 2.0 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":8192}},"gemini-2.0-flash-lite":{"id":"gemini-2.0-flash-lite","name":"Gemini 2.0 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":8192}},"claude-4.0-sonnet":{"id":"claude-4.0-sonnet","name":"Claude 4.0 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"qwen2.5-vl-7b-instruct":{"id":"qwen2.5-vl-7b-instruct","name":"Qwen 2.5 VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":4096}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen 3 235B A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"doubao-seed-2.0-pro":{"id":"doubao-seed-2.0-pro","name":"Doubao Seed 2.0 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000}},"doubao-seed-1.6-flash":{"id":"doubao-seed-1.6-flash","name":"Doubao-Seed 1.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"qwen3-max-preview":{"id":"qwen3-max-preview","name":"Qwen3 Max Preview","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-06","last_updated":"2025-09-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-12","last_updated":"2025-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768}},"qwen3-vl-30b-a3b-thinking":{"id":"qwen3-vl-30b-a3b-thinking","name":"Qwen3-Vl 30b A3b Thinking","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-09","last_updated":"2026-02-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"doubao-1.5-pro-32k":{"id":"doubao-1.5-pro-32k","name":"Doubao 1.5 Pro 32k","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":12000}},"claude-3.5-sonnet":{"id":"claude-3.5-sonnet","name":"Claude 3.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-09","last_updated":"2025-09-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8200}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":64000}},"qwen-vl-max-2025-01-25":{"id":"qwen-vl-max-2025-01-25","name":"Qwen VL-MAX-2025-01-25","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"doubao-1.5-thinking-pro":{"id":"doubao-1.5-thinking-pro","name":"Doubao 1.5 Thinking Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"claude-4.5-haiku":{"id":"claude-4.5-haiku","name":"Claude 4.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-16","last_updated":"2025-10-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000}},"kling-v2-6":{"id":"kling-v2-6","name":"Kling-V2 6","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01-13","last_updated":"2026-01-13","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":99999999,"output":99999999}},"claude-4.1-opus":{"id":"claude-4.1-opus","name":"Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000}},"claude-3.7-sonnet":{"id":"claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"MiniMax-M1":{"id":"MiniMax-M1","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":80000}},"doubao-seed-1.6":{"id":"doubao-seed-1.6","name":"Doubao-Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000}},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40000,"output":4096}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-22","last_updated":"2026-02-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000}},"doubao-seed-2.0-code":{"id":"doubao-seed-2.0-code","name":"Doubao Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000}},"claude-4.0-opus":{"id":"claude-4.0-opus","name":"Claude 4.0 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000}},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"Qwen3 30b A3b Instruct 2507","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"Qwen 2.5 VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192}},"doubao-1.5-vision-pro":{"id":"doubao-1.5-vision-pro","name":"Doubao 1.5 Vision Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000}},"claude-4.5-opus":{"id":"claude-4.5-opus","name":"Claude 4.5 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"deepseek-v3.1":{"id":"deepseek-v3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek-R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"qwen3-30b-a3b-thinking-2507":{"id":"qwen3-30b-a3b-thinking-2507","name":"Qwen3 30b A3b Thinking 2507","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":126000,"output":32000}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":64000}},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek-R1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":4096}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-06","last_updated":"2025-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096}},"gemini-3.0-pro-preview":{"id":"gemini-3.0-pro-preview","name":"Gemini 3.0 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000}},"deepseek/deepseek-v3.2-exp-thinking":{"id":"deepseek/deepseek-v3.2-exp-thinking","name":"DeepSeek/DeepSeek-V3.2-Exp-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-math-v2":{"id":"deepseek/deepseek-math-v2","name":"Deepseek/Deepseek-Math-V2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-04","last_updated":"2025-12-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":160000,"output":160000}},"deepseek/deepseek-v3.1-terminus":{"id":"deepseek/deepseek-v3.1-terminus","name":"DeepSeek/DeepSeek-V3.1-Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.2-251201":{"id":"deepseek/deepseek-v3.2-251201","name":"Deepseek/DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.1-terminus-thinking":{"id":"deepseek/deepseek-v3.1-terminus-thinking","name":"DeepSeek/DeepSeek-V3.1-Terminus-Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"deepseek/deepseek-v3.2-exp":{"id":"deepseek/deepseek-v3.2-exp","name":"DeepSeek/DeepSeek-V3.2-Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000}},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"Z-AI/GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-11","last_updated":"2025-10-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"Z-Ai/GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"Z-Ai/GLM 4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":200000}},"z-ai/autoglm-phone-9b":{"id":"z-ai/autoglm-phone-9b","name":"Z-Ai/Autoglm Phone 9b","description":"GLM vision model for visual reasoning, documents, and multimodal agents","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":12800,"output":4096}},"meituan/longcat-flash-chat":{"id":"meituan/longcat-flash-chat","name":"Meituan/Longcat-Flash-Chat","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-11-05","last_updated":"2025-11-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072}},"meituan/longcat-flash-lite":{"id":"meituan/longcat-flash-lite","name":"Meituan/Longcat-Flash-Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-06","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":320000}},"x-ai/grok-4-fast-reasoning":{"id":"x-ai/grok-4-fast-reasoning","name":"X-Ai/Grok-4-Fast-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4.1-fast-reasoning":{"id":"x-ai/grok-4.1-fast-reasoning","name":"X-Ai/Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":20000000,"output":2000000}},"x-ai/grok-4-fast-non-reasoning":{"id":"x-ai/grok-4-fast-non-reasoning","name":"X-Ai/Grok-4-Fast-Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-code-fast-1":{"id":"x-ai/grok-code-fast-1","name":"x-AI/Grok-Code-Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":10000}},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"x-AI/Grok-4.1-Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4.1-fast-non-reasoning":{"id":"x-ai/grok-4.1-fast-non-reasoning","name":"X-Ai/Grok 4.1 Fast Non Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-19","last_updated":"2025-12-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"x-ai/grok-4-fast":{"id":"x-ai/grok-4-fast","name":"x-AI/Grok-4-Fast","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-20","last_updated":"2025-09-20","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000}},"stepfun-ai/gelab-zero-4b-preview":{"id":"stepfun-ai/gelab-zero-4b-preview","name":"Stepfun-Ai/Gelab Zero 4b Preview","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096}},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-07","last_updated":"2025-11-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":100000}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Moonshotai/Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":100000}},"xiaomi/mimo-v2-flash":{"id":"xiaomi/mimo-v2-flash","name":"Xiaomi/Mimo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.01},"canonical_model_id":"xiaomi/mimo-v2-flash"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"Minimax/Minimax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"Minimax/Minimax-M2.5 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"Minimax/Minimax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":128000}},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"Minimax/Minimax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"stepfun/step-3.5-flash":{"id":"stepfun/step-3.5-flash","name":"Stepfun/Step-3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":64000,"output":4096}},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"OpenAI/GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000}},"openai/gpt-5":{"id":"openai/gpt-5","name":"OpenAI/GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000}}}},"modelscope":{"id":"modelscope","env":["MODELSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-inference.modelscope.cn/v1","name":"ModelScope","doc":"https://modelscope.cn/docs/model-service/API-Inference/intro","models":{"ZhipuAI/GLM-4.6":{"id":"ZhipuAI/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":98304},"cost":{"input":0,"output":0}},"ZhipuAI/GLM-4.5":{"id":"ZhipuAI/GLM-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0}},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3-235B-A22B-Thinking-2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"Qwen/Qwen3-30B-A3B-Thinking-2507":{"id":"Qwen/Qwen3-30B-A3B-Thinking-2507","name":"Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"Qwen/Qwen3-Coder-30B-A3B-Instruct":{"id":"Qwen/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}}}},"google":{"id":"google","env":["GOOGLE_API_KEY","GOOGLE_GENERATIVE_AI_API_KEY","GEMINI_API_KEY"],"npm":"@ai-sdk/google","name":"Google","doc":"https://ai.google.dev/gemini-api/docs/models","models":{"gemini-flash-latest":{"id":"gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75}},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768}},"gemini-omni-flash-preview":{"id":"gemini-omni-flash-preview","name":"Gemini Omni Flash Preview","description":"Video generation and editing model for fast, conversational text- and image-to-video workflows","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":1.5,"output":17.5},"canonical_model_id":"google/gemini-omni-flash-preview"},"gemini-3.1-flash-image-preview":{"id":"gemini-3.1-flash-image-preview","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":60}},"veo-3.1-lite-generate-preview":{"id":"veo-3.1-lite-generate-preview","name":"Veo 3.1 lite","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192},"canonical_model_id":"google/veo-3.1-lite-generate-preview"},"lyria-3-pro-preview":{"id":"lyria-3-pro-preview","name":"Lyria 3 Pro Preview","description":"Music generation model for full-length songs from text or images with vocals and structure","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-pro-preview"},"gemini-3.1-flash-tts-preview":{"id":"gemini-3.1-flash-tts-preview","name":"Gemini 3.1 Flash TTS Preview","description":"Low-latency speech generation with steerable prompts and expressive audio tags","family":"gemini-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20},"canonical_model_id":"google/gemini-3.1-flash-tts-preview"},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30,"cache_read":0.075},"canonical_model_id":"google/gemini-2.5-flash-image"},"gemini-flash-lite-latest":{"id":"gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03}},"gemini-embedding-2":{"id":"gemini-embedding-2","name":"Gemini Embedding 2","description":"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1},"cost":{"input":0.2,"output":0,"input_audio":6.5},"canonical_model_id":"google/gemini-embedding-2"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768}},"gemini-3-pro-image-preview":{"id":"gemini-3-pro-image-preview","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":2,"output":120},"canonical_model_id":"google/gemini-3-pro-image-preview"},"gemini-2.5-pro-preview-tts":{"id":"gemini-2.5-pro-preview-tts","name":"Gemini 2.5 Pro Preview TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":1,"output":20}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60},"canonical_model_id":"google/gemini-3.1-flash-image"},"lyria-3-clip-preview":{"id":"lyria-3-clip-preview","name":"Lyria 3 Clip Preview","description":"Music generation model for short 30-second clips, loops, and previews from text or image prompts","family":"lyria","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-25","last_updated":"2026-03-25","modalities":{"input":["text","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/lyria-3-clip-preview"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-2.5-computer-use-preview-10-2025":{"id":"gemini-2.5-computer-use-preview-10-2025","name":"Gemini 2.5 Computer Use Preview 10-2025","description":"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10,"tiers":[{"input":2.5,"output":15,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15}},"canonical_model_id":"google/gemini-2.5-computer-use-preview-10-2025"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120},"canonical_model_id":"google/gemini-3-pro-image"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"gemini-2.5-flash-preview-tts":{"id":"gemini-2.5-flash-preview-tts","name":"Gemini 2.5 Flash Preview TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":0.5,"output":10}},"gemini-3.1-flash-lite-image":{"id":"gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":30},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"deep-research-preview-04-2026":{"id":"deep-research-preview-04-2026","name":"Deep Research Preview (Apr-21-2026)","description":"Agentic model for autonomous multi-step research, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/deep-research-preview-04-2026"},"deep-research-max-preview-04-2026":{"id":"deep-research-max-preview-04-2026","name":"Deep Research Max Preview (Apr-21-2026)","description":"Maximum-comprehensiveness agentic researcher for multi-step investigation, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/deep-research-max-preview-04-2026"},"veo-3.1-fast-generate-preview":{"id":"veo-3.1-fast-generate-preview","name":"Veo 3.1 fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-15","last_updated":"2026-01-01","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192},"canonical_model_id":"google/veo-3.1-fast-generate-preview"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.7-flash"},"veo-3.1-generate-preview":{"id":"veo-3.1-generate-preview","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-15","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":480,"output":8192},"status":"beta","canonical_model_id":"google/veo-3.1-generate-preview"},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.8-flash"},"gemini-3.5-live-translate-preview":{"id":"gemini-3.5-live-translate-preview","name":"Gemini 3.5 Live Translate Preview","description":"Low-latency audio-to-audio model for real-time speech translation across 70+ languages","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["audio"],"output":["audio","text"]},"open_weights":false,"limit":{"context":16384,"output":32768},"cost":{"input":3.5,"output":21,"input_audio":3.5,"output_audio":21},"canonical_model_id":"google/gemini-3.5-live-translate-preview"},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3}},"gemini-embedding-001":{"id":"gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0}},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Legacy model retained for compatibility with older integrations","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}},"gemini-3.1-flash-live-preview":{"id":"gemini-3.1-flash-live-preview","name":"Gemini 3.1 Flash Live Preview","description":"High-quality, low-latency Live API model for real-time dialogue and voice-first AI applications","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-26","last_updated":"2026-03-26","modalities":{"input":["text","image","video","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.75,"output":4.5,"input_audio":3,"output_audio":12},"canonical_model_id":"google/gemini-3.1-flash-live-preview"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5}}}},"vancine":{"id":"vancine","env":["VANCINE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://vancine.com/v1","name":"Vancine","doc":"https://vancine.com/docs","models":{"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.24,"output":0.96,"cache_read":0.048},"canonical_model_id":"minimax/MiniMax-M3"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.4,"cache_read":0.024},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.6,"output":4.8,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.4,"output":12,"cache_read":0.24},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.24,"output":0.96,"cache_read":0.0048},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.12,"output":0.38,"cache_read":0.013},"canonical_model_id":"alibaba/qwen3.8-flash"},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.67,"output":2,"cache_read":0.034},"canonical_model_id":"tencent/hy4-preview"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.12,"output":3.52,"cache_read":0.208},"canonical_model_id":"zhipuai/glm-5.3"}}},"zhipuai-coding-plan":{"id":"zhipuai-coding-plan","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://open.bigmodel.cn/api/coding/paas/v4","name":"Zhipu AI Coding Plan","doc":"https://docs.bigmodel.cn/cn/coding-plan/overview","models":{"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.3-highspeed":{"id":"glm-5.3-highspeed","name":"GLM-5.3 Highspeed","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}}}},"lucidquery":{"id":"lucidquery","env":["LUCIDQUERY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lucidquery.com/v1","name":"LucidQuery","doc":"https://lucidquery.com/docs","models":{"lucidquery-agi-01-frontier":{"id":"lucidquery-agi-01-frontier","name":"AGI-01 Frontier","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-06-05","release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":120000},"cost":{"input":4.5,"output":22}},"lucidquery-nexus-coder":{"id":"lucidquery-nexus-coder","name":"LucidQuery Nexus Coder","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"lucid","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-08-01","release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":250000,"output":60000},"cost":{"input":2,"output":5}},"lucidnova-rf1-100b":{"id":"lucidnova-rf1-100b","name":"LucidNova RF1 100B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-09-16","release_date":"2024-12-28","last_updated":"2025-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":120000,"output":8000},"cost":{"input":2,"output":5}},"lucidquery-agi-01-swift":{"id":"lucidquery-agi-01-swift","name":"AGI-01 Swift","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"agi","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2026-06-05","release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":120000},"cost":{"input":2.5,"output":15}}}},"gmicloud":{"id":"gmicloud","env":["GMICLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.gmi-serving.com/v1","name":"GMI Cloud","doc":"https://docs.gmicloud.ai/inference-engine/api-reference/llm-api-reference","models":{"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":409600,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"Qwen/Qwen3.8-Max":{"id":"Qwen/Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"Qwen/Qwen3.8-Flash":{"id":"Qwen/Qwen3.8-Flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048575,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":384000},"cost":{"input":0.112,"output":0.224,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.392,"output":2.784,"cache_read":0.116},"canonical_model_id":"deepseek/deepseek-v4-pro"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.855,"output":3.6,"cache_read":0.144},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"zai-org/GLM-5.2-FP8":{"id":"zai-org/GLM-5.2-FP8","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.979,"output":3.08,"cache_read":0.182},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5-FP8":{"id":"zai-org/GLM-5-FP8","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":1.92,"cache_read":0.12},"canonical_model_id":"zhipuai/glm-5"},"zai-org/GLM-5.1-FP8":{"id":"zai-org/GLM-5.1-FP8","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182},"canonical_model_id":"zhipuai/glm-5.1"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"}}},"oci":{"id":"oci","env":["OCI_GENAI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1","name":"OCI Generative AI","doc":"https://docs.oracle.com/en-us/iaas/Content/generative-ai/pretrained-models.htm","models":{"xai.grok-4.3":{"id":"xai.grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"xai.grok-4.20-non-reasoning":{"id":"xai.grok-4.20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"meta.llama-3.3-70b-instruct":{"id":"meta.llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta.llama-4-scout-17b-16e-instruct":{"id":"meta.llama-4-scout-17b-16e-instruct","name":"Llama 4 Scout 17B Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":192000,"output":16384},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"xai.grok-4.6":{"id":"xai.grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"meta.llama-4-maverick-17b-128e-instruct-fp8":{"id":"meta.llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":16384},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"openai.gpt-oss-120b":{"id":"openai.gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"openai.gpt-oss-20b":{"id":"openai.gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"xai.grok-4.20-reasoning":{"id":"xai.grok-4.20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"}}},"cloudflare-ai-gateway":{"id":"cloudflare-ai-gateway","env":["CLOUDFLARE_API_TOKEN","CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_GATEWAY_ID"],"npm":"ai-gateway-provider","name":"Cloudflare AI Gateway","doc":"https://developers.cloudflare.com/ai-gateway/","models":{"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"unbiased/pareto":{"id":"unbiased/pareto","name":"Pareto","description":"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25},"canonical_model_id":"unbiased/pareto"},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.7-max"},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"alibaba/qwen3-max":{"id":"alibaba/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":1.2,"output":6},"canonical_model_id":"alibaba/qwen3-max"},"alibaba/qwen3.5-397b-a17b":{"id":"alibaba/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064},"canonical_model_id":"alibaba/qwen3.7-plus"},"xai/grok-4.7":{"id":"xai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":5,"cache_read":0.625},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":5,"output":30},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"clarifai":{"id":"clarifai","env":["CLARIFAI_PAT"],"npm":"@ai-sdk/openai-compatible","api":"https://api.clarifai.com/v2/ext/openai/v1","name":"Clarifai","doc":"https://docs.clarifai.com/compute/inference/","models":{"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput":{"id":"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput","name":"MiniMax-M2.5 High Throughput","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"clarifai/main/models/mm-poly-8b":{"id":"clarifai/main/models/mm-poly-8b","name":"MM Poly 8B","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"mm-poly","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06","last_updated":"2026-02-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.658,"output":1.11}},"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR":{"id":"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR","name":"DeepSeek OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"deepseek","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-20","last_updated":"2026-02-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.2,"output":0.7}},"mistralai/completion/models/Ministral-3-3B-Reasoning-2512":{"id":"mistralai/completion/models/Ministral-3-3B-Reasoning-2512","name":"Ministral 3 3B Reasoning 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12","last_updated":"2026-02-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.039,"output":0.54825}},"mistralai/completion/models/Ministral-3-14B-Reasoning-2512":{"id":"mistralai/completion/models/Ministral-3-14B-Reasoning-2512","name":"Ministral 3 14B Reasoning 2512","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-01","last_updated":"2025-12-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":1.7}},"moonshotai/chat-completion/models/Kimi-K2_6":{"id":"moonshotai/chat-completion/models/Kimi-K2_6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.6"},"arcee_ai/AFM/models/trinity-mini":{"id":"arcee_ai/AFM/models/trinity-mini","name":"Trinity Mini","description":"Reasoning-tuned 26B MoE model with 3B active parameters for agents, tools, and multi-step workloads","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-01","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.045,"output":0.15},"canonical_model_id":"arcee-ai/trinity-mini"},"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct":{"id":"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.11458,"output":0.74812}},"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507":{"id":"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.5}},"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507":{"id":"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507","name":"Qwen3 30B A3B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-31","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.36,"output":1.3}},"openai/chat-completion/models/gpt-oss-120b-high-throughput":{"id":"openai/chat-completion/models/gpt-oss-120b-high-throughput","name":"GPT OSS 120B High Throughput","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.09,"output":0.36}},"openai/chat-completion/models/gpt-oss-20b":{"id":"openai/chat-completion/models/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-12-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.045,"output":0.18}}}},"aiand":{"id":"aiand","env":["AIAND_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.aiand.com/v1","name":"ai&","doc":"https://docs.aiand.com/","models":{"motif-technologies/motif-3":{"id":"motif-technologies/motif-3","name":"Motif 3","description":"Motif 3 is a large-scale, decoder-only Mixture-of-Experts (MoE) language model with 314 billion total parameters and 13.2 billion parameters activated per token.","family":"motif","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2,"cache_read":0.2},"canonical_model_id":"motif-technologies/motif-3"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"google/gemma-4-31b-it"},"deepseek-ai/deepseek-v4.1-flash":{"id":"deepseek-ai/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":0.6,"cache_read":0.02},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/deepseek-v4-pro":{"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1,"output":2.5,"cache_read":0.25},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/deepseek-v4-flash":{"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.25,"cache_read":0.08},"canonical_model_id":"deepseek/deepseek-v4-flash"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":12.5,"cache_read":0.5},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5,"cache_read":0.2},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/glm-5.3-flash":{"id":"zai-org/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048550,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/glm-5.3":{"id":"zai-org/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1,"output":4,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.3"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":3,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.32,"output":3.2,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.6-27b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.08},"canonical_model_id":"openai/gpt-oss-120b"}}},"frogbot":{"id":"frogbot","env":["FROGBOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://app.frogbot.ai/api/v1","name":"FrogBot","doc":"https://docs.frogbot.ai","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast (Non-Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"minimax-m2-5":{"id":"minimax-m2-5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-01-15","last_updated":"2025-02-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03}},"gpt-5-4-nano":{"id":"gpt-5-4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.2}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-07-17","last_updated":"2025-07-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.075}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":192000,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi-K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2023-10","release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.2,"output":1.5,"cache_read":0.02}},"qwen-3-6-plus":{"id":"qwen-3-6-plus","name":"Qwen 3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2}},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"gemini-3-1-pro-preview":{"id":"gemini-3-1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek v4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":1.74,"output":3.48,"cache_read":0.14}},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"gpt-5-3-codex":{"id":"gpt-5-3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"1970-01-01","last_updated":"1970-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"zai-glm-5-1":{"id":"zai-glm-5-1","name":"Z.AI GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-01-20","last_updated":"2025-02-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":198000,"output":8192},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}}}},"stackit":{"id":"stackit","env":["STACKIT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1","name":"STACKIT","doc":"https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models","models":{"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-05-17","last_updated":"2025-05-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":37000,"output":4096},"cost":{"input":0.53,"output":0.76}},"intfloat/e5-mistral-7b-instruct":{"id":"intfloat/e5-mistral-7b-instruct","name":"E5 Mistral 7B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.02,"output":0.02}},"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{"id":"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8","name":"Qwen3-VL 235B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":218000,"output":16384},"cost":{"input":1.76,"output":2.05}},"Qwen/Qwen3-VL-Embedding-8B":{"id":"Qwen/Qwen3-VL-Embedding-8B","name":"Qwen3-VL Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.09,"output":0.09}},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.53,"output":0.76},"canonical_model_id":"alibaba/qwen3.6-27b"},"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{"id":"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic","name":"Llama 3.3 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.53,"output":0.76}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.18,"output":0.29},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":8192},"cost":{"input":0.53,"output":0.76},"canonical_model_id":"openai/gpt-oss-120b"}}},"anyapi":{"id":"anyapi","env":["ANYAPI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.anyapi.ai/v1","name":"AnyAPI","doc":"https://docs.anyapi.ai","models":{"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"canonical_model_id":"anthropic/claude-opus-4-7"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"canonical_model_id":"cohere/command-r-plus-08-2024"},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-chat"},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-reasoner"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-v4-flash"},"perplexity/sonar-pro":{"id":"perplexity/sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"canonical_model_id":"perplexity/sonar-pro"},"perplexity/sonar-reasoning-pro":{"id":"perplexity/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"canonical_model_id":"perplexity/sonar-reasoning-pro"},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-3-pro-preview"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-2.5-flash-lite"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"canonical_model_id":"xai/grok-4.3"},"mistralai/devstral-2512":{"id":"mistralai/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","canonical_model_id":"mistral/devstral-2512"},"mistralai/mistral-large-2512":{"id":"mistralai/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"canonical_model_id":"mistral/mistral-large-2512"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"canonical_model_id":"openai/o3-mini"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5"}}},"crusoe":{"id":"crusoe","env":["CRUSOE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inference.crusoecloud.com/v1","name":"Crusoe","doc":"https://docs.crusoecloud.com/managed-inference/overview","models":{"zai/GLM-5.1":{"id":"zai/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4.4,"cache_read":0.25},"canonical_model_id":"zhipuai/glm-5.1"},"zai/GLM-5.2":{"id":"zai/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.25,"output":0.75,"cache_read":0.13},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4,"cache_read":0.14},"canonical_model_id":"google/gemma-4-31b-it"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.8,"cache_read":0.11},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.5,"cache_read":0.25},"canonical_model_id":"deepseek/deepseek-v3-0324"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7,"output":3.5,"cache_read":0.35},"canonical_model_id":"moonshotai/kimi-k2.6"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B":{"id":"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.03},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B":{"id":"nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.3,"output":1.83,"cache_read":0.3,"input_audio":0.5},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B":{"id":"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.4,"cache_read":0.15},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.2,"cache_read":0.05},"canonical_model_id":"openai/gpt-oss-120b"}}},"volcengine-coding-plan":{"id":"volcengine-coding-plan","env":["ARK_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ark.cn-beijing.volces.com/api/coding/v3","name":"Volcengine Ark Coding Plan","doc":"https://www.volcengine.com/docs/82379/1928261","models":{"doubao-seed-2.0-lite":{"id":"doubao-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k3"},"doubao-seed-2.1-turbo":{"id":"doubao-seed-2.1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"bytedance-seed/seed-2.1-turbo"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"minimax/MiniMax-M3"},"doubao-seed-evolving":{"id":"doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"bytedance-seed/seed-evolving"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"jiekou":{"id":"jiekou","env":["JIEKOU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.jiekou.ai/openai","name":"Jiekou.AI","doc":"https://docs.jiekou.ai/docs/support/quickstart?utm_source=github_models.dev","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"grok-4-1-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"grok-4-1-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"gpt-5.2-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"gpt-5.1-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"gemini-3-pro-preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":10.8}},"gpt-5-codex":{"id":"gpt-5-codex","name":"gpt-5-codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8}},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"gpt-5.2-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":18.9,"output":151.2}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":1.1,"output":4.4}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"grok-4-fast-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"gpt-5-nano":{"id":"gpt-5-nano","name":"gpt-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.045,"output":0.36}},"gemini-2.5-flash-lite-preview-06-17":{"id":"gemini-2.5-flash-lite-preview-06-17","name":"gemini-2.5-flash-lite-preview-06-17","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","video","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36}},"claude-opus-4-20250514":{"id":"claude-opus-4-20250514","name":"claude-opus-4-20250514","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"grok-4-fast-non-reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.18,"output":0.45}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"claude-opus-4-1-20250805","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":13.5,"output":67.5}},"gpt-5-pro":{"id":"gpt-5-pro","name":"gpt-5-pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":272000},"cost":{"input":13.5,"output":108}},"gpt-5-chat-latest":{"id":"gpt-5-chat-latest","name":"gpt-5-chat-latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"claude-opus-4-5-20251101","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65536},"cost":{"input":4.5,"output":22.5}},"gpt-5.1":{"id":"gpt-5.1","name":"gpt-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.125,"output":9}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.27,"output":2.25}},"gemini-2.5-flash-preview-05-20":{"id":"gemini-2.5-flash-preview-05-20","name":"gemini-2.5-flash-preview-05-20","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":200000},"cost":{"input":0.135,"output":3.15}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"gpt-5.1-codex-max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.125,"output":9}},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.575,"output":12.6}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"grok-code-fast-1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.18,"output":1.35}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"claude-sonnet-4-5-20250929","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5}},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"claude-opus-4-6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"gemini-3-flash-preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"claude-haiku-4-5-20251001","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":20000,"output":64000},"cost":{"input":0.9,"output":4.5}},"gemini-2.5-flash-lite-preview-09-2025":{"id":"gemini-2.5-flash-lite-preview-09-2025","name":"gemini-2.5-flash-lite-preview-09-2025","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.09,"output":0.36}},"gemini-2.5-pro-preview-06-05":{"id":"gemini-2.5-pro-preview-06-05","name":"gemini-2.5-pro-preview-06-05","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":200000},"cost":{"input":1.125,"output":9}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"gemini-2.5-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09,"output":0.36}},"claude-sonnet-4-20250514":{"id":"claude-sonnet-4-20250514","name":"claude-sonnet-4-20250514","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.7,"output":13.5}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"gpt-5.1-codex-mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.225,"output":1.8}},"o3":{"id":"o3","name":"o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":10,"output":40}},"grok-4-0709":{"id":"grok-4-0709","name":"grok-4-0709","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":2.7,"output":13.5}},"deepseek/deepseek-v3-0324":{"id":"deepseek/deepseek-v3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.28,"output":1.14}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32767}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.27,"output":1}},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.5}},"xiaomimimo/mimo-v2-flash":{"id":"xiaomimimo/mimo-v2-flash","name":"XiaomiMiMo/MiMo-V2-Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0}},"baidu/ernie-4.5-vl-424b-a47b":{"id":"baidu/ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":16000},"cost":{"input":0.42,"output":1.25}},"baidu/ernie-4.5-300b-a47b-paddle":{"id":"baidu/ernie-4.5-300b-a47b-paddle","name":"ERNIE 4.5 300B A47B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"ernie","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":123000,"output":12000},"cost":{"input":0.28,"output":1.1}},"minimaxai/minimax-m1-80k":{"id":"minimaxai/minimax-m1-80k","name":"MiniMax M1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":40000},"cost":{"input":0.55,"output":2.2}},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":262143}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3}},"moonshotai/kimi-k2-instruct":{"id":"moonshotai/kimi-k2-instruct","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2-0905":{"id":"moonshotai/kimi-k2-0905","name":"Kimi K2 0905","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5}},"zai-org/glm-4.5":{"id":"zai-org/glm-4.5","name":"GLM-4.5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2}},"zai-org/glm-4.5v":{"id":"zai-org/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":0.6,"output":1.8}},"zai-org/glm-4.7-flash":{"id":"zai-org/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4}},"zai-org/glm-4.7":{"id":"zai-org/glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2}},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"Minimax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":131071}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.15,"output":0.8}},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"qwen/qwen3-coder-next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5}},"qwen/qwen3-235b-a22b-fp8":{"id":"qwen/qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.2,"output":0.8}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.2}},"qwen/qwen3-235b-a22b-thinking-2507":{"id":"qwen/qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22b Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":3}},"qwen/qwen3-30b-a3b-fp8":{"id":"qwen/qwen3-30b-a3b-fp8","name":"Qwen3 30B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.09,"output":0.45}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.15,"output":1.5}},"qwen/qwen3-32b-fp8":{"id":"qwen/qwen3-32b-fp8","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":20000},"cost":{"input":0.1,"output":0.45}}}},"ollama-cloud":{"id":"ollama-cloud","env":["OLLAMA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ollama.com/v1","name":"Ollama Cloud","doc":"https://docs.ollama.com/cloud","models":{"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"nemotron-3-ultra":{"id":"nemotron-3-ultra","name":"nemotron-3-ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":3,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"kimi-k3":{"id":"kimi-k3","name":"kimi-k3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"mistral-large-4":{"id":"mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"canonical_model_id":"mistral/mistral-large-4"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"minimax-m2.5":{"id":"minimax-m2.5","name":"minimax-m2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072}},"kimi-k2.6":{"id":"kimi-k2.6","name":"kimi-k2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"qwen3.5:397b":{"id":"qwen3.5:397b","name":"qwen3.5:397b","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_details"},"release_date":"2026-02-15","last_updated":"2026-02-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6}},"gpt-oss:20b":{"id":"gpt-oss:20b","name":"gpt-oss:20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.3,"cache_read":0.035}},"gpt-oss:120b":{"id":"gpt-oss:120b","name":"gpt-oss:120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.014}},"nemotron-3-nano:30b":{"id":"nemotron-3-nano:30b","name":"nemotron-3-nano:30b","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.06,"output":0.24},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"kimi-k2.5":{"id":"kimi-k2.5","name":"kimi-k2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"mistral-large-3:675b":{"id":"mistral-large-3:675b","name":"mistral-large-3:675b","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-12-02","last_updated":"2026-01-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5}},"minimax-m2.7":{"id":"minimax-m2.7","name":"minimax-m2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"deepseek-v4-pro:0813":{"id":"deepseek-v4-pro:0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"minimax-m3":{"id":"minimax-m3","name":"minimax-m3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"deepseek-v4-flash:0731":{"id":"deepseek-v4-flash:0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.22,"output":0.66,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"gemma4:31b":{"id":"gemma4:31b","name":"gemma4:31b","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.4,"cache_read":0.05}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":976000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"glm-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-03-27","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"deepseek-v4-pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"kimi-k2.7-code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"nemotron-3-super":{"id":"nemotron-3-super","name":"nemotron-3-super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.015,"output":0.6,"cache_read":0.015},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"deepseek-v4-flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.22,"output":0.66,"cache_read":0.007}}}},"agentrouter":{"id":"agentrouter","env":["AGENTROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://agentrouter.org/v1","name":"AgentRouter","doc":"https://agentrouter.org/docs/opencode.html","models":{"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://agentrouter.org/v1"},"canonical_model_id":"anthropic/claude-opus-5"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://agentrouter.org/v1"},"canonical_model_id":"anthropic/claude-opus-4-8"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"canonical_model_id":"zhipuai/glm-5.3"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"canonical_model_id":"openai/gpt-5.6-sol"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"tencent-tokenhub":{"id":"tencent-tokenhub","env":["TENCENT_TOKENHUB_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://tokenhub.tencentmaas.com/v1","name":"Tencent TokenHub","doc":"https://cloud.tencent.com/document/product/1823/130050","models":{"hy3-preview":{"id":"hy3-preview","name":"Hy3 preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"tencent/hy3-preview"},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"tencent/hy3"},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"}}},"watsonx":{"id":"watsonx","env":["WATSONX_AI_APIKEY","WATSONX_AI_PROJECT_ID"],"npm":"watsonx-ai-provider","name":"watsonx.ai","doc":"https://www.ibm.com/docs/en/watsonx/saas?topic=solutions-supported-foundation-models","models":{"meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{"id":"meta-llama/llama-4-maverick-17b-128e-instruct-fp8","name":"Llama 4 Maverick 17B 128E Instruct FP8","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.371,"output":1.484},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"meta-llama/llama-3-3-70b-instruct":{"id":"meta-llama/llama-3-3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.7526,"output":0.7526},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"ibm/granite-4-h-small":{"id":"ibm/granite-4-h-small","name":"Granite-4.0-H-Small","description":"Open-weight hybrid model for enterprise chat, coding, retrieval-augmented generation, and tool-calling workloads","family":"granite","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0636,"output":0.265},"canonical_model_id":"ibm/granite-4-h-small"},"mistralai/mistral-small-3-1-24b-instruct-2503":{"id":"mistralai/mistral-small-3-1-24b-instruct-2503","name":"Mistral Small 3.1 24B","description":"Efficient multimodal model for instruction following, coding, reasoning, and function calling","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.106,"output":0.318},"canonical_model_id":"mistral/mistral-small-3-1-24b-instruct-2503"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.159,"output":0.636},"canonical_model_id":"openai/gpt-oss-120b"}}},"ambient":{"id":"ambient","env":["AMBIENT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ambient.xyz/v1","name":"Ambient","doc":"https://ambient.xyz","models":{"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.08,"output":0.18,"cache_read":0.016,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.028,"cache_write":0},"canonical_model_id":"deepseek/deepseek-v4-flash"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"ambient/large":{"id":"ambient/large","name":"Ambient Large","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":0.6,"output":2,"cache_read":0.15,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.2,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.69,"output":3.49,"cache_read":0.14,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.2-FP8":{"id":"zai-org/GLM-5.2-FP8","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.2,"output":4.2,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.1-FP8":{"id":"zai-org/GLM-5.1-FP8","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.08,"cache_write":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.19,"output":1.14,"cache_read":0.03,"cache_write":0},"canonical_model_id":"stepfun/step-3.7-flash"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.32,"output":3.2,"cache_read":0.16,"cache_write":0},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":1,"cache_read":0.15,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3-30b-a3b-instruct-2507":{"id":"qwen/qwen3-30b-a3b-instruct-2507","name":"Qwen3 30B A3B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-09","last_updated":"2026-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.3,"cache_read":0.09,"cache_write":0}},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.32,"output":3.2,"cache_read":0.16,"cache_write":0},"canonical_model_id":"alibaba/qwen3.6-27b"}}},"model-oracle-ai":{"id":"model-oracle-ai","env":["MODEL_ORACLE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.modeloracle.com/api/v1","name":"Model Oracle AI","doc":"https://modeloracle.com/setup/","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"canonical_model_id":"openai/gpt-5.4"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5.4-nano"},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"canonical_model_id":"openai/o4-mini"},"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-opus-4-8"},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"canonical_model_id":"anthropic/claude-haiku-4-5"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"canonical_model_id":"openai/gpt-5.5"},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"canonical_model_id":"openai/gpt-4.1"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"canonical_model_id":"anthropic/claude-sonnet-5"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"canonical_model_id":"zhipuai/glm-5.2"},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"canonical_model_id":"openai/gpt-4.1-mini"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"canonical_model_id":"deepseek/deepseek-v4-pro"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"canonical_model_id":"openai/gpt-5"},"auto":{"id":"auto","name":"Auto","description":"Model Oracle AI decision engine that selects and routes among configured coding-agent models","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-29","last_updated":"2026-07-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}}}},"xai":{"id":"xai","env":["XAI_API_KEY"],"npm":"@ai-sdk/xai","name":"xAI","doc":"https://docs.x.ai/docs/models","models":{"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"grok-imagine-video-1.5-lite":{"id":"grok-imagine-video-1.5-lite","name":"Grok Imagine Video 1.5 Lite","description":"Cost-efficient video model for text-to-video and image-to-video generation","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text","image","pdf"],"output":["video"]},"open_weights":false,"limit":{"context":1024,"output":0},"canonical_model_id":"xai/grok-imagine-video-1.5-lite"},"grok-imagine-image":{"id":"grok-imagine-image","name":"Grok Imagine Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"open_weights":false,"limit":{"context":16000,"output":0}},"grok-imagine-video":{"id":"grok-imagine-video","name":"Grok Imagine Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text","image","video","pdf"],"output":["video"]},"open_weights":false,"limit":{"context":1024,"output":0}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-4.20-0309-reasoning":{"id":"grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-imagine-video-1.5":{"id":"grok-imagine-video-1.5","name":"Grok Imagine Video 1.5","description":"Video model for image-to-video generation, editing, and extension workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-30","last_updated":"2026-05-30","modalities":{"input":["text","image","audio","pdf"],"output":["video"]},"open_weights":false,"limit":{"context":1024,"output":0},"canonical_model_id":"xai/grok-imagine-video-1.5"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"grok-4.20-0309-non-reasoning":{"id":"grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-imagine-image-quality":{"id":"grok-imagine-image-quality","name":"Grok Imagine Image Quality","description":"Higher-fidelity Grok Imagine image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-03","last_updated":"2026-04-03","modalities":{"input":["text","image","pdf"],"output":["image","pdf"]},"open_weights":false,"limit":{"context":16000,"output":0},"canonical_model_id":"xai/grok-imagine-image-quality"},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}}},"grok-4.20-multi-agent-0309":{"id":"grok-4.20-multi-agent-0309","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"}}},"nebius":{"id":"nebius","env":["NEBIUS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokenfactory.nebius.com/v1","name":"Nebius Token Factory","doc":"https://docs.tokenfactory.nebius.com/","models":{"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma-3-27b-it","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-10","release_date":"2026-01-20","last_updated":"2026-02-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":110000,"input":100000,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B reasoning model for coding, research, and long-horizon agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":3,"cache_read":0.45},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3-30B-A3B-Instruct-2507":{"id":"Qwen/Qwen3-30B-A3B-Instruct-2507","name":"Qwen3-30B-A3B-Instruct-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-01-28","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":8192},"cost":{"input":0.1,"output":0.3,"cache_read":0.01,"cache_write":0.125}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-10-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-10","release_date":"2026-01-10","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"input":40960,"output":0},"cost":{"input":0.01,"output":0}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5-397B-A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-15","last_updated":"2026-05-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":250000,"output":8192},"cost":{"input":0.6,"output":3.6,"cache_read":0.06,"cache_write":0.75}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":1024000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":979000,"output":979000},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"output":1048000},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.15},"canonical_model_id":"deepseek/deepseek-v4-pro"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M3"},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":8000},"cost":{"input":3,"output":15,"cache_read":3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8000},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":1024000},"cost":{"input":0.15,"output":0.5,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":1024000},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"canonical_model_id":"zhipuai/glm-5.3"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron-3-Super-120B-A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":262144,"output":32768},"cost":{"input":0.3,"output":0.9},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/Nemotron-3_5-Lightning":{"id":"nvidia/Nemotron-3_5-Lightning","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.06,"output":0.24,"cache_read":0.06},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/Nemotron-3-Ultra-550b-a55b":{"id":"nvidia/Nemotron-3-Ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":3,"cache_read":1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-01-10","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":124000,"output":8192},"cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.015,"cache_write":0.18}},"NousResearch/Hermes-4-405B":{"id":"NousResearch/Hermes-4-405B","name":"Hermes-4-405B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-11","release_date":"2026-01-30","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":120000,"output":8192},"cost":{"input":1,"output":3,"reasoning":3,"cache_read":0.1,"cache_write":1.25}}}},"minimax-cn":{"id":"minimax-cn","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.cn/anthropic/v1","name":"MiniMax (minimax.cn)","doc":"https://platform.minimaxi.com/docs/guides/quickstart","models":{"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}}}},"scaleway":{"id":"scaleway","env":["SCALEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scaleway.ai/v1","name":"Scaleway","doc":"https://www.scaleway.com/en/docs/generative-apis/","models":{"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"status":"beta","cost":{"input":0.684,"output":3.762,"reasoning":3.762,"cache_read":0.137},"canonical_model_id":"alibaba/qwen3.8-27b"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"status":"beta","cost":{"input":0.468,"output":0.936,"reasoning":0.936,"cache_read":0.0936},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-01","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":260000,"output":16384},"cost":{"input":0.75,"output":2.25,"reasoning":8.4},"canonical_model_id":"alibaba/qwen3-235b-a22b"},"whisper-large-v3":{"id":"whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2023-09","release_date":"2023-09-01","last_updated":"2026-03-17","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":8192},"cost":{"input":0.003,"output":0}},"bge-multilingual-gemma2":{"id":"bge-multilingual-gemma2","name":"BGE Multilingual Gemma2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-26","last_updated":"2025-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.1,"output":0}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.8},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-01","last_updated":"2026-05-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"status":"beta","cost":{"input":0.25,"output":0.5},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":16384},"cost":{"input":0.9,"output":0.9}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-01","last_updated":"2026-05-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"status":"beta","cost":{"input":0.25,"output":1.5},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"Pixtral 12B 2409","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-25","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2},"canonical_model_id":"mistral/pixtral-12b"},"qwen3-embedding-8b":{"id":"qwen3-embedding-8b","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.1,"output":0}},"mistral-medium-3.5-128b":{"id":"mistral-medium-3.5-128b","name":"Mistral Medium 3.5 128B","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"mistral/mistral-medium-2604"},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":1.8,"output":5.5},"canonical_model_id":"zhipuai/glm-5.2"},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral Small 3.2 24B Instruct (2506)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.35},"canonical_model_id":"mistral/mistral-small-2506"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT-OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2026-03-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.6}}}},"vercel":{"id":"vercel","env":["AI_GATEWAY_API_KEY"],"npm":"@ai-sdk/gateway","name":"Vercel AI Gateway","doc":"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway","models":{"voyage/rerank-3-lite":{"id":"voyage/rerank-3-lite","name":"Voyage Rerank 3 Lite","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-30","last_updated":"2026-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-law-2":{"id":"voyage/voyage-law-2","name":"voyage-law-2","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-15","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/rerank-2.5-lite":{"id":"voyage/rerank-2.5-lite","name":"Voyage Rerank 2.5 Lite","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-3.5":{"id":"voyage/voyage-3.5","name":"voyage-3.5","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/rerank-3":{"id":"voyage/rerank-3","name":"Voyage Rerank 3","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-30","last_updated":"2026-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-finance-2":{"id":"voyage/voyage-finance-2","name":"voyage-finance-2","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-06-03","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-4-large":{"id":"voyage/voyage-4-large","name":"voyage-4-large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"voyage/voyage-3.5-lite":{"id":"voyage/voyage-3.5-lite","name":"voyage-3.5-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-4":{"id":"voyage/voyage-4","name":"voyage-4","description":"General-purpose chat model for instruction following, writing, and analysis","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"voyage/voyage-3-large":{"id":"voyage/voyage-3-large","name":"voyage-3-large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-07","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-code-2":{"id":"voyage/voyage-code-2","name":"voyage-code-2","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/voyage-code-3":{"id":"voyage/voyage-code-3","name":"voyage-code-3","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-12-04","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"voyage/rerank-2.5":{"id":"voyage/rerank-2.5","name":"Voyage Rerank 2.5","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"voyage/voyage-4-lite":{"id":"voyage/voyage-4-lite","name":"voyage-4-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"voyage","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"interfaze/interfaze-beta":{"id":"interfaze/interfaze-beta","name":"Interfaze Beta","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"release_date":"2025-10-07","last_updated":"2026-04-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":1.5,"output":3.5}},"stealth/glyph-cluster":{"id":"stealth/glyph-cluster","name":"Glyph Cluster","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0}},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM 4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5"},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM 5V Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM 4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":96000},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-5.2-fast":{"id":"zai/glm-5.2-fast","name":"GLM 5.2 Fast","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":131100},"cost":{"input":1,"output":3.2},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":66000,"output":16000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"zai/glm-5.3-flashx":{"id":"zai/glm-5.3-flashx","name":"GLM 5.3 FlashX","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131000},"cost":{"input":0.07,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM 4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":120000},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM 5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM 5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202800,"output":64000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM 4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM 5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202800,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM 4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":96000},"cost":{"input":0.2,"output":1.1,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.3"},"zai/glm-5.3-fast":{"id":"zai/glm-5.3-fast","name":"GLM 5.3 Fast","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.21},"canonical_model_id":"zhipuai/glm-5.3"},"spacexai/grok-4.20-multi-agent":{"id":"spacexai/grok-4.20-multi-agent","name":"Grok 4.20 Multi-Agent","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-tts":{"id":"spacexai/grok-tts","name":"Grok TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.20-reasoning":{"id":"spacexai/grok-4.20-reasoning","name":"Grok 4.20 Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-4.7":{"id":"spacexai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"spacexai/grok-imagine-video-1.5-lite":{"id":"spacexai/grok-imagine-video-1.5-lite","name":"Grok Imagine Video 1.5 Lite","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"xai/grok-imagine-video-1.5-lite"},"spacexai/grok-voice-think-fast-1.0":{"id":"spacexai/grok-voice-think-fast-1.0","name":"Grok Voice Think Fast 1.0","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.20-non-reasoning":{"id":"spacexai/grok-4.20-non-reasoning","name":"Grok 4.20 Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-stt":{"id":"spacexai/grok-stt","name":"Grok STT","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-imagine-image":{"id":"spacexai/grok-imagine-image","name":"Grok Imagine Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-imagine-video":{"id":"spacexai/grok-imagine-video","name":"Grok Imagine","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-01-28","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-4.1-fast-reasoning":{"id":"spacexai/grok-4.1-fast-reasoning","name":"Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"xai/grok-4.1-fast-reasoning"},"spacexai/grok-4.3":{"id":"spacexai/grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"spacexai/grok-imagine-video-1.5":{"id":"spacexai/grok-imagine-video-1.5","name":"Grok Imagine Video 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-30","last_updated":"2026-05-30","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"xai/grok-imagine-video-1.5"},"spacexai/grok-4.5":{"id":"spacexai/grok-4.5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"spacexai/grok-voice-think-fast-2.0":{"id":"spacexai/grok-voice-think-fast-2.0","name":"Grok Voice Think Fast 2.0","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"spacexai/grok-imagine-image-2.0":{"id":"spacexai/grok-imagine-image-2.0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"xai/grok-imagine-image-2.0"},"spacexai/grok-4.20-multi-agent-beta":{"id":"spacexai/grok-4.20-multi-agent-beta","name":"Grok 4.20 Multi Agent Beta","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-4.20-non-reasoning-beta":{"id":"spacexai/grok-4.20-non-reasoning-beta","name":"Grok 4.20 Beta Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.4,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-build-0.1":{"id":"spacexai/grok-build-0.1","name":"Grok Build 0.1","description":"Grok coding model for agentic engineering, edits, and codebase workflows","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"spacexai/grok-4.1-fast-non-reasoning":{"id":"spacexai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"spacexai/grok-4.20-reasoning-beta":{"id":"spacexai/grok-4.20-reasoning-beta","name":"Grok 4.20 Beta Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"spacexai/grok-4.6":{"id":"spacexai/grok-4.6","name":"Grok 4.6","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"prodia/flux-fast-schnell":{"id":"prodia/flux-fast-schnell","name":"Flux Schnell","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-02","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"recraft/recraft-v2":{"id":"recraft/recraft-v2","name":"Recraft V2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"recraft/recraft-v4-pro":{"id":"recraft/recraft-v4-pro","name":"Recraft V4 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-utility":{"id":"recraft/recraft-v4.1-utility","name":"Recraft V4.1 Utility","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-pro":{"id":"recraft/recraft-v4.1-pro","name":"Recraft V4.1 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v3":{"id":"recraft/recraft-v3","name":"Recraft V3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-30","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"recraft/recraft-v4.1":{"id":"recraft/recraft-v4.1","name":"Recraft V4.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-flash":{"id":"recraft/recraft-v4.1-flash","name":"Recraft V4.1 Flash","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4.1-utility-pro":{"id":"recraft/recraft-v4.1-utility-pro","name":"Recraft V4.1 Utility Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-14","last_updated":"2026-05-14","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"recraft/recraft-v4":{"id":"recraft/recraft-v4","name":"Recraft V4","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"recraft","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"poolside/laguna-s-2.1-free":{"id":"poolside/laguna-s-2.1-free","name":"Laguna S 2.1 Free","description":"Free provider route for experiments, demos, and cost-sensitive chat workloads","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-s-2.1"},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.09,"output":0.18,"cache_read":0.009},"canonical_model_id":"poolside/laguna-s-2.1"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-haiku-5.5":{"id":"anthropic/claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100001}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-3-haiku":{"id":"anthropic/claude-3-haiku","name":"Claude Haiku 3","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3},"canonical_model_id":"anthropic/claude-3-haiku-20240307"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-opus-5.5-fast":{"id":"anthropic/claude-opus-5.5-fast","name":"Claude Opus 5.5 (Fast)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":8,"output":40,"cache_read":0.4,"cache_write":10},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4.8-fast":{"id":"anthropic/claude-opus-4.8-fast","name":"Claude Opus 4.8 (Fast)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-opus-5-fast":{"id":"anthropic/claude-opus-5-fast","name":"Claude Opus 5 (Fast)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-opus-4":{"id":"anthropic/claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-20250514"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"cohere/rerank-v4-fast":{"id":"cohere/rerank-v4-fast","name":"Cohere Rerank 4 Fast","description":"Reranking model for improving retrieval quality in search and recommendation systems","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"cohere/rerank-v4-pro":{"id":"cohere/rerank-v4-pro","name":"Cohere Rerank 4 Pro","description":"Reranking model for improving retrieval quality in search and recommendation systems","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000}},"cohere/command-a":{"id":"cohere/command-a","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10}},"cohere/embed-v4.0":{"id":"cohere/embed-v4.0","name":"Embed v4.0","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"cohere-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":1536}},"cohere/embed-v5.0-pro":{"id":"cohere/embed-v5.0-pro","name":"Embed 5 Pro","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-30","last_updated":"2026-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0}},"cohere/embed-v5.0-fast":{"id":"cohere/embed-v5.0-fast","name":"Embed 5 Fast","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-30","last_updated":"2026-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":0}},"cohere/rerank-v3.5":{"id":"cohere/rerank-v3.5","name":"Cohere Rerank 3.5","description":"Reranking model for improving retrieval quality in search and recommendation systems","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":4096}},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.076,"output":0.153,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.3,"output":1.2,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.2156,"output":0.6468,"cache_read":0.0068},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.066},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v3.2-thinking":{"id":"deepseek/deepseek-v3.2-thinking","name":"DeepSeek V3.2 Thinking","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8000},"cost":{"input":0.62,"output":1.85}},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek-V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":128000},"cost":{"input":0.25,"output":0.95,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8000},"cost":{"input":0.62,"output":1.85},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.13,"output":0.26,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"canonical_model_id":"deepseek/deepseek-r1"},"quiverai/arrow-1.1":{"id":"quiverai/arrow-1.1","name":"Arrow 1.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":131072,"output":131072}},"quiverai/arrow-2":{"id":"quiverai/arrow-2","name":"Arrow 2","description":"Fast SVG generation model for creation, vectorization, editing, and animation","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2026-09-16","last_updated":"2026-09-16","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"quiverai/arrow-2"},"quiverai/arrow-2-telos":{"id":"quiverai/arrow-2-telos","name":"Arrow 2 Telos","description":"High-fidelity SVG generation model for complex vector work and long-context refinement","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2026-09-16","last_updated":"2026-09-16","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":6,"output":30,"cache_read":0.6,"cache_write":7.5},"canonical_model_id":"quiverai/arrow-2-telos"},"bfl/flux-kontext-max":{"id":"bfl/flux-kontext-max","name":"FLUX.1 Kontext Max","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-pro-1.1-ultra":{"id":"bfl/flux-pro-1.1-ultra","name":"FLUX1.1 [pro] Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-11-01","last_updated":"2024-11","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-3-image":{"id":"bfl/flux-3-image","name":"FLUX 3 Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-05","last_updated":"2026-10-05","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-3-video":{"id":"bfl/flux-3-video","name":"Flux 3","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-04","last_updated":"2026-08-04","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-2-flex":{"id":"bfl/flux-2-flex","name":"FLUX.2 [flex]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-2-klein-4b":{"id":"bfl/flux-2-klein-4b","name":"FLUX.2 [klein] 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-pro-1.0-fill":{"id":"bfl/flux-pro-1.0-fill","name":"FLUX.1 Fill [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-01","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-2-klein-9b":{"id":"bfl/flux-2-klein-9b","name":"FLUX.2 [klein] 9B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bfl/flux-2-pro":{"id":"bfl/flux-2-pro","name":"FLUX.2 [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":67300,"output":67300}},"bfl/flux-2-max":{"id":"bfl/flux-2-max","name":"FLUX.2 [max]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":67300,"output":67300}},"bfl/flux-pro-1.1":{"id":"bfl/flux-pro-1.1","name":"FLUX1.1 [pro]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-02","last_updated":"2024-10","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"bfl/flux-kontext-pro":{"id":"bfl/flux-kontext-pro","name":"FLUX.1 Kontext Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-29","last_updated":"2025-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":512,"output":0}},"tencent/hy-mt2-lite":{"id":"tencent/hy-mt2-lite","name":"Tencent Hy-MT2-Lite","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.044,"output":0.177}},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"canonical_model_id":"tencent/hy3"},"tencent/hy-mt2-plus":{"id":"tencent/hy-mt2-plus","name":"Tencent Hy-MT2-Plus","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295}},"tencent/hy-mt2-pro":{"id":"tencent/hy-mt2-pro","name":"Tencent Hy-MT2-Pro","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":4000},"cost":{"input":0.074,"output":0.295}},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Tencent Hy4 Preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"heygen/heygen-video-1":{"id":"heygen/heygen-video-1","name":"HeyGen Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-10-09","last_updated":"2026-10-09","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"inference-net/schematron-v2-small":{"id":"inference-net/schematron-v2-small","name":"Schematron V2 Small","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.23,"cache_read":0.05}},"inference-net/schematron-v2-turbo":{"id":"inference-net/schematron-v2-turbo","name":"Schematron V2 Turbo","description":"Efficient model for low-latency assistance, extraction, and routine automation","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.15,"cache_read":0.03}},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1000000},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"meituan/longcat-2.5-preview":{"id":"meituan/longcat-2.5-preview","name":"LongCat 2.5 Preview","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"longcat","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-09-26","last_updated":"2026-09-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006}},"perplexity/pplx-embed-v1-4b":{"id":"perplexity/pplx-embed-v1-4b","name":"Embed v1 4b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"perplexity/pplx-embed-v1-0.6b":{"id":"perplexity/pplx-embed-v1-0.6b","name":"Embed v1 0.6b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"v0","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":0}},"perplexity/sonar":{"id":"perplexity/sonar","name":"Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-02","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":8000},"cost":{"input":0.25,"output":2.5,"cache_write":0.0625}},"meta/muse-spark-1.3":{"id":"meta/muse-spark-1.3","name":"Muse Spark 1.3","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"muse","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/llama-3.1-8b":{"id":"meta/llama-3.1-8b","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.22,"output":0.22}},"meta/llama-3.1-70b":{"id":"meta/llama-3.1-70b","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.72,"output":0.72}},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"meta/muse-image-1.0":{"id":"meta/muse-image-1.0","name":"Muse Image 1.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"muse","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"meta/muse-spark-1.2-contributor":{"id":"meta/muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/muse-spark-1.3-contributor":{"id":"meta/muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Open Llama multimodal model for image understanding and text reasoning","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"meta/llama-3.3-70b":{"id":"meta/llama-3.3-70b","name":"Llama-3.3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-4-maverick":{"id":"meta/llama-4-maverick","name":"Llama-4-Maverick-17B-128E-Instruct-FP8","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-4-scout":{"id":"meta/llama-4-scout","name":"Llama-4-Scout-17B-16E-Instruct-FP8","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"arcee-ai/trinity-large-thinking":{"id":"arcee-ai/trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":80000},"cost":{"input":0.25,"output":0.8},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"alibaba/qwen3.5-flash":{"id":"alibaba/qwen3.5-flash","name":"Qwen 3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"alibaba/qwen3.5-flash"},"alibaba/qwen-3-32b":{"id":"alibaba/qwen-3-32b","name":"Qwen 3.32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.15,"output":0.6}},"alibaba/wan-v2.6-t2v":{"id":"alibaba/wan-v2.6-t2v","name":"Wan v2.6 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.7-max":{"id":"alibaba/qwen3.7-max","name":"Qwen 3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"alibaba/qwen3.8-27b":{"id":"alibaba/qwen3.8-27b","name":"Qwen3.8 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.8-27b"},"alibaba/qwen3.8-2.4t-a95b":{"id":"alibaba/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"alibaba/qwen3-next-80b-a3b-thinking":{"id":"alibaba/qwen3-next-80b-a3b-thinking","name":"Qwen3 Next 80B A3B Thinking","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"alibaba/qwen3.8-max":{"id":"alibaba/qwen3.8-max","name":"Qwen 3.8 Max","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"alibaba/qwen3-coder-next":{"id":"alibaba/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.2},"canonical_model_id":"alibaba/qwen3-coder-next"},"alibaba/qwen3-vl-instruct":{"id":"alibaba/qwen3-vl-instruct","name":"Qwen3 VL Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.88,"cache_read":0.11}},"alibaba/qwen3-coder":{"id":"alibaba/qwen3-coder","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-22","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.22,"output":1.8,"cache_read":0.022,"tiers":[{"input":2.7,"output":13.5,"cache_read":0.54,"tier":{"type":"context","size":32001}},{"input":4.5,"output":22.5,"cache_read":0.9,"tier":{"type":"context","size":128001}}]}},"alibaba/qwen3.5-plus":{"id":"alibaba/qwen3.5-plus","name":"Qwen 3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":256001}}],"context_over_200k":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625}},"canonical_model_id":"alibaba/qwen3.5-plus"},"alibaba/wan-v2.6-i2v-flash":{"id":"alibaba/wan-v2.6-i2v-flash","name":"Wan v2.6 Image-to-Video Flash","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/wan-v2.6-r2v-flash":{"id":"alibaba/wan-v2.6-r2v-flash","name":"Wan v2.6 Reference-to-Video Flash","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen-3-14b":{"id":"alibaba/qwen-3-14b","name":"Qwen3-14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.24}},"alibaba/qwen3.7-flash":{"id":"alibaba/qwen3.7-flash","name":"Qwen 3.7 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038,"tiers":[{"input":0.1,"output":0.4,"cache_read":0.02,"cache_write":0.125,"tier":{"type":"context","size":32000}},{"input":0.2,"output":0.8,"cache_read":0.04,"cache_write":0.25,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"alibaba/qwen3-embedding-0.6b":{"id":"alibaba/qwen3-embedding-0.6b","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-14","last_updated":"2025-11-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768}},"alibaba/qwen-3-30b":{"id":"alibaba/qwen-3-30b","name":"Qwen3-30B-A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":40960,"output":16384},"cost":{"input":0.12,"output":0.5}},"alibaba/qwen3.8-omni-flash":{"id":"alibaba/qwen3.8-omni-flash","name":"Qwen 3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"alibaba/qwen3-coder-30b-a3b":{"id":"alibaba/qwen3-coder-30b-a3b","name":"Qwen 3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"alibaba/qwen3-embedding-4b":{"id":"alibaba/qwen3-embedding-4b","name":"Qwen3 Embedding 4B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768}},"alibaba/wan-v2.6-i2v":{"id":"alibaba/wan-v2.6-i2v","name":"Wan v2.6 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3-next-80b-a3b-instruct":{"id":"alibaba/qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262114,"output":262114},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"alibaba/wan-v2.5-t2v-preview":{"id":"alibaba/wan-v2.5-t2v-preview","name":"Wan v2.5 Text-to-Video Preview","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-24","last_updated":"2025-09-24","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3-max-thinking":{"id":"alibaba/qwen3-max-thinking","name":"Qwen 3 Max Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-23","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24,"tiers":[{"input":2.4,"output":12,"cache_read":0.48,"tier":{"type":"context","size":32001}},{"input":3,"output":15,"cache_read":0.6,"tier":{"type":"context","size":128001}}]}},"alibaba/qwen3.8-max-prime":{"id":"alibaba/qwen3.8-max-prime","name":"Qwen 3.8 Max Prime","description":"High-throughput edition of Qwen3.8 Max for coding, professional work, multimodal understanding, and long-running agent workflows","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":4,"output":12,"cache_read":0.5,"cache_write":5},"canonical_model_id":"alibaba/qwen3.8-max-prime"},"alibaba/qwen3.8-flash":{"id":"alibaba/qwen3.8-flash","name":"Qwen 3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"alibaba/qwen3-embedding-8b":{"id":"alibaba/qwen3-embedding-8b","type":"embedding","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"canonical_model_id":"alibaba/qwen3-embedding-8b"},"alibaba/wan-v3.0-video":{"id":"alibaba/wan-v3.0-video","name":"Wan v3.0 Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-23","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/wan-v2.7-r2v":{"id":"alibaba/wan-v2.7-r2v","name":"Wan v2.7 Reference-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/wan-v3.0-video-prime":{"id":"alibaba/wan-v3.0-video-prime","name":"Wan v3.0 Video Prime","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.6-27b":{"id":"alibaba/qwen3.6-27b","name":"Qwen 3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.6-27b"},"alibaba/qwen-3-235b":{"id":"alibaba/qwen-3-235b","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.88}},"alibaba/qwen3.6-plus":{"id":"alibaba/qwen3.6-plus","name":"Qwen 3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens","min":1,"max":131072}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"alibaba/qwen3.6-plus"},"alibaba/qwen3.7-plus":{"id":"alibaba/qwen3.7-plus","name":"Qwen 3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24,"cache_write":1.5}},"canonical_model_id":"alibaba/qwen3.7-plus"},"alibaba/wan-v2.6-r2v":{"id":"alibaba/wan-v2.6-r2v","name":"Wan v2.6 Reference-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"alibaba/qwen3.8-max-0902":{"id":"alibaba/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"alibaba/wan-v2.7-t2v":{"id":"alibaba/wan-v2.7-t2v","name":"Wan v2.7 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"mixedbread/toast-1":{"id":"mixedbread/toast-1","name":"Toast 1","description":"Specialized search model for knowledge-intensive questions, multi-step retrieval, and evidence synthesis","attachment":false,"reasoning":false,"tool_call":true,"release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":4000},"cost":{"input":0.3,"output":0.72,"cache_read":0.036},"canonical_model_id":"mixedbread/toast-1"},"klingai/kling-v2.6-t2v":{"id":"klingai/kling-v2.6-t2v","name":"Kling v2.6 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.6-i2v":{"id":"klingai/kling-v2.6-i2v","name":"Kling v2.6 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.5-turbo-t2v":{"id":"klingai/kling-v2.5-turbo-t2v","name":"Kling v2.5 Turbo Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-i2v":{"id":"klingai/kling-v3.0-i2v","name":"Kling v3.0 Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-motion-control":{"id":"klingai/kling-v3.0-motion-control","name":"Kling v3.0 Motion Control","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-04","last_updated":"2026-03-04","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v3.0-t2v":{"id":"klingai/kling-v3.0-t2v","name":"Kling v3.0 Text-to-Video","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.6-motion-control":{"id":"klingai/kling-v2.6-motion-control","name":"Kling v2.6 Motion Control","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-21","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"klingai/kling-v2.5-turbo-i2v":{"id":"klingai/kling-v2.5-turbo-i2v","name":"Kling v2.5 Turbo Image-to-Video","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"ling","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-5.0-lite":{"id":"bytedance/seedream-5.0-lite","name":"Seedream 5.0 Lite","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-4.5":{"id":"bytedance/seedream-4.5","name":"Seedream 4.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-11-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seed-1.8":{"id":"bytedance/seed-1.8","name":"Seed 1.8","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-01","last_updated":"2025-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"cost":{"input":0.25,"output":2,"cache_read":0.05,"tiers":[{"input":0.5,"output":4,"cache_read":0.05,"tier":{"type":"context","size":128001}}]}},"bytedance/seed-2.1-turbo":{"id":"bytedance/seed-2.1-turbo","name":"Seed 2.1 Turbo","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.5,"cache_read":0.1}},"bytedance/seedream-4.0":{"id":"bytedance/seedream-4.0","name":"Seedream 4.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-09-09","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.0-pro":{"id":"bytedance/seedance-v1.0-pro","name":"Seedance v1.0 Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-06-11","last_updated":"2025-06-11","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.0":{"id":"bytedance/seedance-2.0","name":"Seedance 2.0","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.0-fast":{"id":"bytedance/seedance-2.0-fast","name":"Seedance 2.0 Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.5-pro":{"id":"bytedance/seedance-v1.5-pro","name":"Seedance v1.5 Pro","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.0-mini":{"id":"bytedance/seedance-2.0-mini","name":"Seedance 2.0 Mini","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-06-22","last_updated":"2026-06-22","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-2.5":{"id":"bytedance/seedance-2.5","name":"Seedance 2.5","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedance-v1.0-pro-fast":{"id":"bytedance/seedance-v1.0-pro-fast","name":"Seedance v1.0 Pro Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-24","last_updated":"2025-10-31","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seedream-5.0-pro":{"id":"bytedance/seedream-5.0-pro","name":"Seedream 5.0 Pro","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-11","last_updated":"2026-07-11","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"bytedance/seed-1.6":{"id":"bytedance/seed-1.6","name":"Seed 1.6","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-01","last_updated":"2025-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.25,"output":2,"cache_read":0.05,"tiers":[{"input":0.5,"output":4,"cache_read":0.05,"tier":{"type":"context","size":128001}}]}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-omni-flash-preview":{"id":"google/gemini-omni-flash-preview","name":"Gemini Omni Flash Preview","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]},{"type":"budget_tokens"}],"tool_call":false,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":57920},"cost":{"input":1.5,"output":9},"canonical_model_id":"google/gemini-omni-flash-preview"},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Gemini 3.1 Flash Image Preview (Nano Banana 2)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"google/gemini-3.5-transcribe-live":{"id":"google/gemini-3.5-transcribe-live","name":"Gemini 3.5 Transcribe Live","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"google/gemini-3.5-transcribe-live"},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana (Gemini 2.5 Flash Image)","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash-image"},"google/gemini-3.8-flash-lite-tts":{"id":"google/gemini-3.8-flash-lite-tts","name":"Gemini 3.8 Flash-Lite TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.5,"output":6}},"google/text-multilingual-embedding-002":{"id":"google/text-multilingual-embedding-002","name":"Text Multilingual Embedding 002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-01","last_updated":"2024-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"google/gemini-embedding-2":{"id":"google/gemini-embedding-2","name":"Gemini Embedding 2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"google/gemini-embedding-2"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.6-flash"},"google/veo-3.1-lite-generate-001":{"id":"google/veo-3.1-lite-generate-001","name":"Veo 3.1 Lite Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3.1-flash-image"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200001}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/veo-3.1-fast-generate-001":{"id":"google/veo-3.1-fast-generate-001","name":"Veo 3.1 Fast Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3-flash":{"id":"google/gemini-3-flash","name":"Gemini 3 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3-pro-image"},"google/veo-3.0-fast-generate-001":{"id":"google/veo-3.0-fast-generate-001","name":"Veo 3.0 Fast Generate","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-07-31","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3.8-live":{"id":"google/gemini-3.8-live","name":"Gemini 3.8 Live","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-15","last_updated":"2026-09-15","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.75,"output":4.5}},"google/veo-3.1-generate-001":{"id":"google/veo-3.1-generate-001","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-15","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Gemini 3.1 Flash Lite Image (Nano Banana 2 Lite)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"google/text-embedding-005":{"id":"google/text-embedding-005","name":"Text Embedding 005","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-01","last_updated":"2024-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"google/gemini-3.5-transcribe":{"id":"google/gemini-3.5-transcribe","name":"Gemini 3.5 Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2,"output":12}},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-embedding-001":{"id":"google/gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"canonical_model_id":"google/gemini-embedding-001"},"google/gemini-3.8-flash-tts":{"id":"google/gemini-3.8-flash-tts","name":"Gemini 3.8 Flash TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.5,"output":9}},"google/gemini-3.8-live-extended-thinking":{"id":"google/gemini-3.8-live-extended-thinking","name":"Gemini 3.8 Live Extended Thinking","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-15","last_updated":"2026-09-15","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.75,"output":4.5}},"google/veo-3.0-generate-001":{"id":"google/veo-3.0-generate-001","name":"Veo 3.0","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-20","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"google/gemini-nano-banana-2.1":{"id":"google/gemini-nano-banana-2.1","name":"Gemini Nano Banana 2.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-nano-banana-2.1"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.1-flash-lite"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"callstack/apex":{"id":"callstack/apex","name":"Apex","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"release_date":"2026-10-08","last_updated":"2026-10-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.2}},"fireworks/ember-1":{"id":"fireworks/ember-1","name":"Ember-1","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3}},"sakana/fugu-max":{"id":"sakana/fugu-max","name":"Fugu Max","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25}},"sakana/fugu-ultra-v2":{"id":"sakana/fugu-ultra-v2","name":"Fugu Ultra v2","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"sakana/namazu":{"id":"sakana/namazu","name":"Sakana Namazu","description":"Multi-agent model for routing expert agents across complex analytical tasks","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.15}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"inclusionai/ling-3.1-flash-free":{"id":"inclusionai/ling-3.1-flash-free","name":"Ling 3.1 Flash (Free)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"inclusionai/ling-3.0-flash":{"id":"inclusionai/ling-3.0-flash","name":"Ling 3.0 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.021,"output":0.063,"cache_read":0.0042}},"inclusionai/ling-3.1-flash":{"id":"inclusionai/ling-3.1-flash","name":"Ling 3.1 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"inclusionai/ling-3.0-flash-sante":{"id":"inclusionai/ling-3.0-flash-sante","name":"Ling 3.0 Flash Sante","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"inclusionai/ling-3.0-flash-vl":{"id":"inclusionai/ling-3.0-flash-vl","name":"Ling 3.0 Flash VL","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015}},"inclusionai/ling-3.0-flash-fin":{"id":"inclusionai/ling-3.0-flash-fin","name":"Ling 3.0 Flash Fin","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"release_date":"2026-08-27","last_updated":"2026-09-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.075,"output":0.22,"cache_read":0.015},"canonical_model_id":"inclusionai/ling-3.0-flash-fin"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k3-fast":{"id":"moonshotai/kimi-k3-fast","name":"Kimi K3 Fast","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code High Speed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.57,"output":2.3}},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"topaz/proteus":{"id":"topaz/proteus","name":"Proteus","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"topaz/wonder-3.5":{"id":"topaz/wonder-3.5","name":"Wonder 3.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0}},"topaz/starlight-precise-2.6":{"id":"topaz/starlight-precise-2.6","name":"Starlight Precise 2.6","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-lightning":{"id":"nvidia/nemotron-3.5-lightning","name":"Nemotron 3.5 Lightning 30B","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"Nvidia Nemotron Nano 9B V2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.23},"canonical_model_id":"nvidia/nemotron-nano-9b-v2"},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"NVIDIA Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":false,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.15,"output":0.65},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"Nvidia Nemotron Nano 12B V2 VL","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.6},"canonical_model_id":"nvidia/nemotron-nano-12b-v2-vl"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo V2.6 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo M2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131100},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.6-pro-ultraspeed":{"id":"xiaomi/mimo-v2.6-pro-ultraspeed","name":"MiMo V2.6 Pro UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo V2.6 Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-23","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375}},"minimax/minimax-h3":{"id":"minimax/minimax-h3","name":"MiniMax H3","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-07-31","last_updated":"2026-10-04","modalities":{"input":["text","image"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":0},"canonical_model_id":"minimax/MiniMax-H3"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"Minimax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-h3-max":{"id":"minimax/minimax-h3-max","name":"MiniMax H3 Max","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"minimax","attachment":true,"reasoning":false,"tool_call":false,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":0,"output":0}},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 High Speed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131100},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 High Speed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":205000,"output":196608},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2"},"stepfun/step-5-preview":{"id":"stepfun/step-5-preview","name":"Step 5 Preview","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"stepfun/step-3.7-flash":{"id":"stepfun/step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"inception/mercury-coder-small":{"id":"inception/mercury-coder-small","name":"Mercury Coder Small Beta","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"mercury","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-02-26","last_updated":"2025-02-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":16384},"cost":{"input":0.25,"output":1}},"inception/mercury-2.5":{"id":"inception/mercury-2.5","name":"Mercury 2.5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"inception/mercury-2":{"id":"inception/mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-24","last_updated":"2026-03-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.024999999999999998}},"amazon/titan-embed-text-v2":{"id":"amazon/titan-embed-text-v2","name":"Titan Text Embeddings V2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"titan-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-04-30","last_updated":"2024-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"amazon/nova-2-lite":{"id":"amazon/nova-2-lite","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2024-12-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075}},"amazon/nova-lite":{"id":"amazon/nova-lite","name":"Nova Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"canonical_model_id":"amazon/nova-lite"},"amazon/nova-pro":{"id":"amazon/nova-pro","name":"Nova Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"canonical_model_id":"amazon/nova-pro"},"amazon/nova-micro":{"id":"amazon/nova-micro","name":"Nova Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"canonical_model_id":"amazon/nova-micro"},"mistral/codestral-embed":{"id":"mistral/codestral-embed","name":"Codestral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"codestral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"mistral/mistral-nemo":{"id":"mistral/mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-07-18","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.029,"output":0.03}},"mistral/mistral-large-4":{"id":"mistral/mistral-large-4","name":"Mistral Large 4","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":262144},"cost":{"input":0.68,"output":2.09,"cache_read":0.07}},"mistral/mistral-medium-3.5":{"id":"mistral/mistral-medium-3.5","name":"Mistral Medium Latest","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-05-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":256000},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"mistral/mistral-small":{"id":"mistral/mistral-small","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2024-09-17","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"mistral/mistral-large-3":{"id":"mistral/mistral-large-3","name":"Mistral Large 3","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":256000},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistral/mistral-embed":{"id":"mistral/mistral-embed","name":"Mistral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536}},"mistral/ministral-14b":{"id":"mistral/ministral-14b","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":0.2,"cache_read":0.02}},"mistral/codestral":{"id":"mistral/codestral","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03}},"mistral/ministral-8b":{"id":"mistral/ministral-8b","name":"Ministral 8B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":0.1}},"mistral/ministral-3b":{"id":"mistral/ministral-3b","name":"Ministral 3B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":128000},"cost":{"input":0.04,"output":0.04}},"fish-audio/s2.1-pro":{"id":"fish-audio/s2.1-pro","name":"S2.1 Pro","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-28","last_updated":"2026-07-28","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s1":{"id":"fish-audio/s1","name":"S1","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-10-20","last_updated":"2025-10-20","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/transcribe-1":{"id":"fish-audio/transcribe-1","name":"Transcribe-1","description":"Speech transcription model for accurate audio-to-text and captioning workflows","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"fish-audio/s2-pro":{"id":"fish-audio/s2-pro","name":"S2 Pro","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"morph/morph-v3-fast":{"id":"morph/morph-v3-fast","name":"Morph v3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2}},"morph/morph-v3-large":{"id":"morph/morph-v3-large","name":"Morph v3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9}},"openai/gpt-4.1-mini-fast":{"id":"openai/gpt-4.1-mini-fast","name":"GPT-4.1 mini (Fast)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":0.7,"output":2.8,"cache_read":0.175},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/o3-fast":{"id":"openai/o3-fast","name":"o3 (Fast)","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":3.5,"output":14,"cache_read":0.875},"canonical_model_id":"openai/o3"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT 5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT 5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-oss-safeguard-120b":{"id":"openai/gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":112000,"output":16000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-safeguard-120b"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"input":12289,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-5.2-fast":{"id":"openai/gpt-5.2-fast","name":"GPT 5.2 (Fast)","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-4o-transcribe":{"id":"openai/gpt-4o-transcribe","name":"GPT-4o Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2.5,"output":10}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT 5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/text-embedding-3-small":{"id":"openai/text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT 5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-realtime-2.1":{"id":"openai/gpt-realtime-2.1","name":"gpt-realtime-2.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-09-30","release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"input":96000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4},"canonical_model_id":"openai/gpt-realtime-2.1"},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2-Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-4o-fast":{"id":"openai/gpt-4o-fast","name":"GPT-4o (Fast)","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":4.25,"output":17,"cache_read":2.125},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1-Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-6.1-sol-fast":{"id":"openai/gpt-6.1-sol-fast","name":"GPT-6.1 Sol (Fast)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.4,"cache_write":10,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.4,"cache_write":10}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-live-1":{"id":"openai/gpt-live-1","name":"GPT-Live 1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-realtime-1.5":{"id":"openai/gpt-realtime-1.5","name":"GPT-Realtime-1.5","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":4,"output":16,"cache_read":0.4}},"openai/gpt-4.1-nano-fast":{"id":"openai/gpt-4.1-nano-fast","name":"GPT-4.1 nano (Fast)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-codex":{"id":"openai/gpt-5-codex","name":"GPT-5-Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13},"canonical_model_id":"openai/gpt-5-codex"},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2"},"openai/gpt-5.6-luna-fast":{"id":"openai/gpt-5.6-luna-fast","name":"GPT 5.6 Luna (Fast)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":0.8,"output":3.6,"cache_read":0.08,"cache_write":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.8,"output":3.6,"cache_read":0.08,"cache_write":1}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-6-astra-fast":{"id":"openai/gpt-6-astra-fast","name":"GPT-6 Astra (Fast)","description":"Fast variant of GPT-6 Astra for low-latency assistance and high-volume workloads.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":20,"output":100,"cache_read":2,"cache_write":25,"tiers":[{"input":40,"output":150,"cache_read":4,"cache_write":50,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":40,"output":150,"cache_read":4,"cache_write":50}},"canonical_model_id":"openai/gpt-6-astra-fast"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT 5.2 ","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/gpt-5.1-thinking-fast":{"id":"openai/gpt-5.1-thinking-fast","name":"GPT 5.1 Thinking (Fast)","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"release_date":"2025-11-12","last_updated":"2025-11-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25}},"openai/text-embedding-ada-002":{"id":"openai/text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT 5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/whisper-1":{"id":"openai/whisper-1","name":"Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2022-09-21","last_updated":"2022-09-21","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5.3-codex-fast":{"id":"openai/gpt-5.3-codex-fast","name":"GPT 5.3 Codex (Fast)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":3.5,"output":28,"cache_read":0.35},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-5.5-fast":{"id":"openai/gpt-5.5-fast","name":"GPT 5.5 (Fast)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":12.5,"output":75,"cache_read":1.25},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-image-2.5-flare":{"id":"openai/gpt-image-2.5-flare","name":"GPT Image 2.5 Flare","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-flare"},"openai/gpt-5.4-fast":{"id":"openai/gpt-5.4-fast","name":"GPT 5.4 (Fast)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.6-sol-fast":{"id":"openai/gpt-5.6-sol-fast","name":"GPT 5.6 Sol (Fast)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10,"tiers":[{"input":16,"output":60,"cache_read":1.6,"cache_write":20,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":16,"output":60,"cache_read":1.6,"cache_write":20}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/o4-mini-fast":{"id":"openai/o4-mini-fast","name":"o4-mini (Fast)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o4-mini"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":128000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-5.1-thinking":{"id":"openai/gpt-5.1-thinking","name":"GPT 5.1 Thinking","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-11-12","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai/text-embedding-3-large":{"id":"openai/text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"input":6656,"output":1536}},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.4-mini-fast":{"id":"openai/gpt-5.4-mini-fast","name":"GPT 5.4 Mini (Fast)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-realtime-mini":{"id":"openai/gpt-realtime-mini","name":"GPT-Realtime mini","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-10-10","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0.6,"output":2.4,"cache_read":0.06}},"openai/gpt-5-mini-fast":{"id":"openai/gpt-5-mini-fast","name":"GPT-5 mini (Fast)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.45,"output":3.6,"cache_read":0.045},"canonical_model_id":"openai/gpt-5-mini"},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3 Pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":100000,"output":100000},"cost":{"input":20,"output":80},"canonical_model_id":"openai/o3-pro"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"input":122880,"output":8192},"cost":{"input":0.03,"output":0.14},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"gpt-oss-safeguard-20b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"input":112000,"output":16000},"cost":{"input":0.07,"output":0.2},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"openai/gpt-image-2.5-sunburst":{"id":"openai/gpt-image-2.5-sunburst","name":"GPT Image 2.5 Sunburst","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-sunburst"},"openai/gpt-5.6-terra-fast":{"id":"openai/gpt-5.6-terra-fast","name":"GPT 5.6 Terra (Fast)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":36,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":36,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-image-1":{"id":"openai/gpt-image-1","name":"GPT Image 1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT 5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT 5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT 5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT 5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":872000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-6-sol-fast":{"id":"openai/gpt-6-sol-fast","name":"GPT-6 Sol (Fast)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-6-sol"},"openai/tts-1":{"id":"openai/tts-1","name":"TTS-1","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-6-luna-fast":{"id":"openai/gpt-6-luna-fast","name":"GPT-6 Luna (Fast)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.5,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":0.4,"output":1.5,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5-fast":{"id":"openai/gpt-5-fast","name":"GPT-5 (Fast)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":2.5,"output":20,"cache_read":0.25},"canonical_model_id":"openai/gpt-5"},"openai/gpt-realtime-2":{"id":"openai/gpt-realtime-2","name":"gpt-realtime-2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":4,"output":24,"cache_read":0.4}},"openai/gpt-4.1-fast":{"id":"openai/gpt-4.1-fast","name":"GPT-4.1 (Fast)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"input":1014808,"output":32768},"cost":{"input":3.5,"output":14,"cache_read":0.875},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-image-1-mini":{"id":"openai/gpt-image-1-mini","name":"GPT Image 1 Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":2,"output":8,"cache_read":0.2}},"openai/gpt-4o-mini-transcribe":{"id":"openai/gpt-4o-mini-transcribe","name":"GPT-4o mini Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":1.25,"output":5}},"openai/gpt-image-1.5":{"id":"openai/gpt-image-1.5","name":"GPT Image 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-1.5"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT 5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5,"cache_read":0.1},"canonical_model_id":"openai/gpt-oss-120b"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.03},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT 5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-4o-mini-fast":{"id":"openai/gpt-4o-mini-fast","name":"GPT-4o mini (Fast)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":111616,"output":16384},"cost":{"input":0.25,"output":1,"cache_read":0.125},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-realtime-whisper":{"id":"openai/gpt-realtime-whisper","name":"gpt-realtime-whisper","description":"Streaming speech-to-text model for low-latency transcript deltas from live audio","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0},"canonical_model_id":"openai/gpt-realtime-whisper"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272001}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"openai/tts-1-hd":{"id":"openai/tts-1-hd","name":"TTS-1 HD","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2023-11-06","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":2.5,"output":20,"cache_read":0.25},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.625,"output":5,"cache_read":0.0625},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":14,"cache_read":0.875},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":1,"output":4,"cache_read":0.25},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"experimental":{"modes":{"fast":{"cost":{"input":0.7,"output":2.8,"cache_read":0.175},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":14,"cache_read":0.875},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"experimental":{"modes":{"fast":{"cost":{"input":0.25,"output":1,"cache_read":0.125},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"flex":{"cost":{"input":0.025,"output":0.2,"cache_read":0.0025},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","experimental":{"modes":{"fast":{"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","experimental":{"modes":{"fast":{"cost":{"input":2,"output":8,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.55,"output":2.2,"cache_read":0.138},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":0.45,"output":3.6,"cache_read":0.045},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.125,"output":1,"cache_read":0.0125},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"experimental":{"modes":{"fast":{"cost":{"input":4.25,"output":17,"cache_read":2.125},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"microsoft/mai-voice-2.1-flash":{"id":"microsoft/mai-voice-2.1-flash","name":"MAI-Voice-2.1-Flash","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"microsoft/mai-transcribe-2-streaming":{"id":"microsoft/mai-transcribe-2-streaming","name":"MAI-Transcribe-2-Streaming","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"microsoft/mai-transcribe-2":{"id":"microsoft/mai-transcribe-2","name":"MAI-Transcribe 2","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-09-03","last_updated":"2026-09-03","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"microsoft/mai-voice-2":{"id":"microsoft/mai-voice-2","name":"MAI-Voice-2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"microsoft/mai-voice-2.1":{"id":"microsoft/mai-voice-2.1","name":"MAI-Voice-2.1","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"microsoft/mai-voice-2-flash":{"id":"microsoft/mai-voice-2-flash","name":"MAI-Voice-2-Flash","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mai","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}}}},"zai-coding-plan":{"id":"zai-coding-plan","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.z.ai/api/coding/paas/v4","name":"Z.AI Coding Plan","doc":"https://docs.z.ai/devpack/overview","models":{"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.3-highspeed":{"id":"glm-5.3-highspeed","name":"GLM-5.3 Highspeed","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"glm-5.2-highspeed":{"id":"glm-5.2-highspeed","name":"GLM-5.2 Highspeed","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"}}},"ebcloud":{"id":"ebcloud","env":["EBCLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://maas-api.ebcloud.com/v1","name":"EBCloud","doc":"https://docs.ebtech.com/ai/model-api.html","models":{"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.9286,"output":3.8571},"canonical_model_id":"moonshotai/kimi-k2.6"},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.8571,"output":3.4286},"canonical_model_id":"zhipuai/glm-5.1"},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.143,"output":0.2857},"canonical_model_id":"deepseek/deepseek-v4-flash"},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.4286,"output":0.8571},"canonical_model_id":"deepseek/deepseek-v4-pro"}}},"greenpt":{"id":"greenpt","env":["GREENPT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.greenpt.ai/v1","name":"GreenPT","doc":"https://docs.greenpt.ai","models":{"glm-5.2-honey-ultra":{"id":"glm-5.2-honey-ultra","name":"GLM-5.2 Honey Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.2-ponytail-lite":{"id":"glm-5.2-ponytail-lite","name":"GLM-5.2 Ponytail Lite","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"gemma-3-27b-it":{"id":"gemma-3-27b-it","name":"Gemma 3 27B","description":"Google Gemma 3 multimodal model for chat, reasoning, and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":40000,"output":8192},"cost":{"input":0.342,"output":0.684}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.127754,"output":0.511016,"cache_read":0.0255508},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.1596,"output":0.399,"cache_read":0.0456},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen3 235B MoE instruct model for long-context multilingual chat and reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":1.026,"output":3.078}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3.762,"output":18.81,"cache_read":0.9405},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.255552,"output":1.27776,"cache_read":0.0127776},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.1938,"output":1.129,"cache_read":0.0627},"canonical_model_id":"minimax/MiniMax-M2.5"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.7524,"output":4.275,"cache_read":0.2508},"canonical_model_id":"moonshotai/kimi-k2.6"},"green-s":{"id":"green-s","name":"Green S","description":"GreenPT speech-to-text model for pre-recorded and live transcription","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0}},"green-l":{"id":"green-l","name":"Green L","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912},"canonical_model_id":"mistral/mistral-small-2506"},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":1.083},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":16384},"cost":{"input":1.254,"output":1.254},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"gemma4":{"id":"gemma4","name":"gemma4","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.57,"output":1.71},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.342,"output":2.052},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.285,"output":0.285},"canonical_model_id":"mistral/pixtral-12b"},"glm-5.2-honey":{"id":"glm-5.2-honey","name":"GLM-5.2 Honey","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"holo2-30b-a3b":{"id":"holo2-30b-a3b","name":"Holo2 30B A3B","description":"H Company Holo2 vision model for GUI navigation and computer-use agents","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11","last_updated":"2025-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":22016,"output":16384},"cost":{"input":0.399,"output":0.969}},"green-r-raw":{"id":"green-r-raw","name":"Green R Raw","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083},"canonical_model_id":"openai/gpt-oss-120b"},"green-s-pro":{"id":"green-s-pro","name":"Green S Pro","description":"GreenPT advanced speech-to-text model with multilingual transcription support","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-02","last_updated":"2025-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":8192},"cost":{"input":0.00437,"output":0}},"devstral-2-123b-instruct-2512":{"id":"devstral-2-123b-instruct-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":16384},"cost":{"input":0.57,"output":2.736},"canonical_model_id":"mistral/devstral-2512"},"mistral-medium-3.5-128b":{"id":"mistral-medium-3.5-128b","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":2.052,"output":10.26},"canonical_model_id":"mistral/mistral-medium-2604"},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.798,"output":4.959},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"voxtral-small-24b-2507":{"id":"voxtral-small-24b-2507","name":"Voxtral Small 24B","description":"Mistral Voxtral audio-understanding model for speech and transcription tasks","family":"mistral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.228,"output":0.513}},"green-l-raw":{"id":"green-l-raw","name":"Green L Raw","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.285,"output":0.912},"canonical_model_id":"mistral/mistral-small-2506"},"glm-5.2-ponytail-ultra":{"id":"glm-5.2-ponytail-ultra","name":"GLM-5.2 Ponytail Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"green-r":{"id":"green-r","name":"Green R","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.399,"output":1.083},"canonical_model_id":"openai/gpt-oss-120b"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"status":"deprecated","cost":{"input":1.756,"output":5.518},"canonical_model_id":"zhipuai/glm-5.1"},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.228,"output":0.456},"canonical_model_id":"mistral/mistral-small-2506"},"glm-5.2-caveman":{"id":"glm-5.2-caveman","name":"GLM-5.2 Caveman","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k2.6-fast":{"id":"kimi-k2.6-fast","name":"Kimi K2.6 Fast","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":1.655,"output":8.778},"canonical_model_id":"moonshotai/kimi-k2.6"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.228,"output":0.798},"canonical_model_id":"openai/gpt-oss-120b"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.27754,"output":5.11016,"cache_read":0.319385},"canonical_model_id":"zhipuai/glm-5.3"},"glm-5.2-caveman-ultra":{"id":"glm-5.2-caveman-ultra","name":"GLM-5.2 Caveman Ultra","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The most aggressive tier, close to answer-only. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.9006,"output":4.389,"cache_read":0.1881},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"glm-5.2-ponytail":{"id":"glm-5.2-ponytail","name":"GLM-5.2 Ponytail","description":"glm-5.2 carrying a built-in ruleset that compresses generated code, preferring platform features over custom code. The middle tier, and the ruleset as its authors wrote it. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.2-honey-lite":{"id":"glm-5.2-honey-lite","name":"GLM-5.2 Honey Lite","description":"glm-5.2 carrying a built-in ruleset that compresses both generated code and prose. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.2-caveman-lite":{"id":"glm-5.2-caveman-lite","name":"GLM-5.2 Caveman Lite","description":"glm-5.2 carrying a built-in ruleset that compresses prose, keeping code and technical detail verbatim. The gentlest tier: it cuts filler only and keeps the explanation intact. Same upstream model and price per token as glm-5.2, with fewer output tokens.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.254,"output":5.016,"cache_read":0.3135},"canonical_model_id":"zhipuai/glm-5.2"}}},"mixlayer":{"id":"mixlayer","env":["MIXLAYER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://models.mixlayer.ai/v1","name":"Mixlayer","doc":"https://docs.mixlayer.com","models":{"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.4}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":3.2}},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.4}},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":1.3}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.6}}}},"hyper":{"id":"hyper","env":["HYPER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://hyper.charm.land/v1","name":"Charm Hyper","doc":"https://hyper.charm.land","models":{"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.5,"output":7.5,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.16332,"output":0.5444,"cache_read":0.031575},"canonical_model_id":"zhipuai/glm-5.3-flash"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16000},"cost":{"input":3.2664,"output":16.332,"cache_read":0.32664},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":0.33,"output":1.31,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-27","last_updated":"2026-07-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":64000},"cost":{"input":0.2,"output":0.8,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.7-flash"},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":26214},"cost":{"input":0.6,"output":2.5,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":25600},"cost":{"input":0.098,"output":0.334,"cache_read":0.049},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-05","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":6553},"cost":{"input":0.484,"output":1.852,"cache_read":0.242},"canonical_model_id":"minimax/MiniMax-M2.7"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":1.437216,"output":4.311648,"cache_read":0.047907},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-15","last_updated":"2026-09-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1.0888,"output":4.40964,"cache_read":0.185096},"canonical_model_id":"thinkingmachines/inkling"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"cost":{"input":0.32664,"output":1.30656,"cache_read":0.064239},"canonical_model_id":"minimax/MiniMax-M3"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.152432},"canonical_model_id":"zhipuai/glm-5.2"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-13","last_updated":"2026-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":13107},"cost":{"input":0.178,"output":0.68,"cache_read":0.089},"canonical_model_id":"openai/gpt-oss-120b"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.52432,"output":4.79072,"cache_read":0.283088},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-07-03","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16000},"cost":{"input":1.03436,"output":4.3552,"cache_read":0.206872},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-15","last_updated":"2026-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.2,"output":4.8,"cache_read":0.24},"canonical_model_id":"alibaba/qwen3.7-plus"}}},"jalapeno":{"id":"jalapeno","env":["JALAPENO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.jalapeno-cloud.ai/v1","name":"Jalapeno Cloud","doc":"https://www.jalapeno-cloud.ai/docs/","models":{"Qwen3-VL-235B-A22B-Instruct":{"id":"Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":129024,"output":32768},"cost":{"input":0.3,"output":1.5},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M3"},"Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":129024,"output":32768},"cost":{"input":0.15,"output":1.5},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.38,"output":4.4},"canonical_model_id":"zhipuai/glm-5.1"},"Hy3":{"id":"Hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58},"canonical_model_id":"tencent/hy3"},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.2"},"Qwen3-VL-235B-A22B-Thinking":{"id":"Qwen3-VL-235B-A22B-Thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.98,"output":3.95},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"Qwen3.5-27B":{"id":"Qwen3.5-27B","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-27b"},"Kimi-K3":{"id":"Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"Qwen3-Next-80B-A3B-Thinking":{"id":"Qwen3-Next-80B-A3B-Thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.5},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28},"canonical_model_id":"deepseek/deepseek-v4-flash"},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.6,"output":3.38},"canonical_model_id":"deepseek/deepseek-v4-pro"},"Qwen3.5-35B-A3B":{"id":"Qwen3.5-35B-A3B","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"Qwen3.5-122B-A10B":{"id":"Qwen3.5-122B-A10B","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"Qwen3.5-397B-A17B":{"id":"Qwen3.5-397B-A17B","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"Kimi-K2.7-Code":{"id":"Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":271360,"output":262144},"cost":{"input":0.95,"output":4},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"Kimi-K2.5":{"id":"Kimi-K2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":180224},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"}}},"dinference":{"id":"dinference","env":["DINFERENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.dinference.com/v1","name":"DInference","doc":"https://dinference.com","models":{"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.75,"output":2.4},"canonical_model_id":"zhipuai/glm-5"},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0.22,"output":0.88},"canonical_model_id":"minimax/MiniMax-M2.5"},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.45,"output":1.65},"canonical_model_id":"zhipuai/glm-4.7"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.25,"output":3.89},"canonical_model_id":"zhipuai/glm-5.2"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.25,"output":3.89},"canonical_model_id":"zhipuai/glm-5.1"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08","last_updated":"2025-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.0675,"output":0.27}}}},"neosmith":{"id":"neosmith","env":["NEOSMITH_API_KEY"],"npm":"@ai-sdk/openai","api":"https://router.neosmith.ai/v1","name":"NeoSmith","doc":"https://neosmith.ai/docs","models":{"neosmith.neolite":{"id":"neosmith.neolite","name":"NeoSmith NeoLite","description":"Sealed single-model budget tier. 512K context, text and images, tool use, and no escalation of any kind.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":64000},"cost":{"input":0.6,"output":2.4,"cache_read":0.08,"cache_write":0}},"neosmith.intelligent-maestro":{"id":"neosmith.intelligent-maestro","name":"NeoSmith Maestro","description":"Highest-accuracy coding tier. Hard, self-contained problems run NeoSmith's premium multi-model solver; everything else gets the strongest intelligence tier.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.35,"cache_write":0}},"neosmith.intelligent-pro":{"id":"neosmith.intelligent-pro","name":"NeoSmith Pro","description":"Default production tier. Intelligent NeoSmith routing with a Claude Opus ceiling on escalation.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.81,"output":8.39,"cache_read":0.3,"cache_write":0}},"neosmith.intelligent-basic":{"id":"neosmith.intelligent-basic","name":"NeoSmith Basic","description":"Cost-capped tier. Intelligent routing with a Claude Sonnet ceiling — Opus is never invoked.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-26","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":1.17,"output":4.37,"cache_read":0.22,"cache_write":0}}}},"fireworks-ai":{"id":"fireworks-ai","env":["FIREWORKS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.fireworks.ai/inference/v1/","name":"Fireworks AI","doc":"https://fireworks.ai/docs/","models":{"accounts/fireworks/models/nemotron-3-ultra-nvfp4":{"id":"accounts/fireworks/models/nemotron-3-ultra-nvfp4","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"accounts/fireworks/models/kimi-k3":{"id":"accounts/fireworks/models/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":3.75,"output":18.75,"cache_read":0.375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"accounts/fireworks/models/qwen3p8-2p4t-a95b":{"id":"accounts/fireworks/models/qwen3p8-2p4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"accounts/fireworks/models/ember-1":{"id":"accounts/fireworks/models/ember-1","name":"Ember-1","description":"Specialized model from Fireworks built on Kimi K3, producing shorter reasoning traces with approximately 40% fewer tokens while maintaining comparable quality","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3}},"accounts/fireworks/models/deepseek-v4p1-flash":{"id":"accounts/fireworks/models/deepseek-v4p1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"experimental":{"modes":{"priority":{"cost":{"input":0.375,"output":1.5,"cache_read":0.0075},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"accounts/fireworks/models/glm-5p3":{"id":"accounts/fireworks/models/glm-5p3","name":"GLM 5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048573,"output":262144},"experimental":{"modes":{"priority":{"cost":{"input":1.75,"output":5.5,"cache_read":0.325},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b":{"id":"accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"experimental":{"modes":{"priority":{"cost":{"input":0.0625,"output":0.25,"cache_read":0.0125},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.05,"output":0.2,"cache_read":0.01},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"accounts/fireworks/models/inkling":{"id":"accounts/fireworks/models/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"accounts/fireworks/models/minimax-m3":{"id":"accounts/fireworks/models/minimax-m3","name":"MiniMax-M3","description":"Fireworks text-only MiniMax coding model for long-context reasoning and agent tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"experimental":{"modes":{"priority":{"cost":{"input":0.45,"output":1.8,"cache_read":0.09},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"accounts/fireworks/models/glm-5p3-flash":{"id":"accounts/fireworks/models/glm-5p3-flash","name":"GLM 5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-09-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048573,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":0.1875,"output":0.625,"cache_read":0.0375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"accounts/fireworks/models/gpt-oss-120b":{"id":"accounts/fireworks/models/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"experimental":{"modes":{"priority":{"cost":{"input":0.18,"output":0.72,"cache_read":0.018},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"accounts/fireworks/models/qwen3p8-max":{"id":"accounts/fireworks/models/qwen3p8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":3,"output":9,"cache_read":0.375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"accounts/fireworks/routers/minimax-latest":{"id":"accounts/fireworks/routers/minimax-latest","name":"MiniMax Latest","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-12","last_updated":"2026-09-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":512000},"experimental":{"modes":{"priority":{"cost":{"input":0.45,"output":1.8,"cache_read":0.09},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"accounts/fireworks/routers/glm-flash-latest":{"id":"accounts/fireworks/routers/glm-flash-latest","name":"GLM Flash Latest (GLM 5.3 Flash)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048573,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":0.1875,"output":0.625,"cache_read":0.0375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"accounts/fireworks/routers/glm-fast-latest":{"id":"accounts/fireworks/routers/glm-fast-latest","name":"GLM 5.3 Fast (Latest)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-09-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048572,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.39},"canonical_model_id":"zhipuai/glm-5.3"},"accounts/fireworks/routers/kimi-k3-fast":{"id":"accounts/fireworks/routers/kimi-k3-fast","name":"Kimi K3 Fast","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"accounts/fireworks/routers/glm-5p3-fast":{"id":"accounts/fireworks/routers/glm-5p3-fast","name":"GLM 5.3 Fast","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-09-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048572,"output":262144},"cost":{"input":2.1,"output":6.6,"cache_read":0.39},"canonical_model_id":"zhipuai/glm-5.3"},"accounts/fireworks/routers/kimi-fast-latest":{"id":"accounts/fireworks/routers/kimi-fast-latest","name":"Kimi Fast Latest","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"accounts/fireworks/routers/qwen-max-latest":{"id":"accounts/fireworks/routers/qwen-max-latest","name":"Qwen Max Latest (Qwen3.8 Max)","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-09-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":3,"output":9,"cache_read":0.375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"accounts/fireworks/routers/kimi-latest":{"id":"accounts/fireworks/routers/kimi-latest","name":"Kimi Latest","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-27","last_updated":"2026-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"experimental":{"modes":{"priority":{"cost":{"input":3.75,"output":18.75,"cache_read":0.375},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"accounts/fireworks/routers/deepseek-flash-latest":{"id":"accounts/fireworks/routers/deepseek-flash-latest","name":"DeepSeek Flash Latest","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"experimental":{"modes":{"priority":{"cost":{"input":0.375,"output":1.5,"cache_read":0.0075},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"accounts/fireworks/routers/glm-latest":{"id":"accounts/fireworks/routers/glm-latest","name":"GLM Latest","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048573,"output":262144},"experimental":{"modes":{"priority":{"cost":{"input":1.75,"output":5.5,"cache_read":0.325},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"}}},"stepfun-ai":{"id":"stepfun-ai","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.ai/v1","name":"StepFun (Global)","doc":"https://platform.stepfun.ai/docs/en/overview/concept","models":{"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1024000,"input":1024000,"output":65536},"cost":{"input":1,"output":2.7,"cache_read":0.05},"canonical_model_id":"stepfun/step-5-preview"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-06-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037},"canonical_model_id":"stepfun/step-3.7-flash"},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"stepaudio-2.5-asr":{"id":"stepaudio-2.5-asr","name":"StepAudio 2.5 ASR","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-24","last_updated":"2026-07-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"stepaudio-2.5-tts":{"id":"stepaudio-2.5-tts","name":"StepAudio 2.5 TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-2-16k":{"id":"step-2-16k","name":"Step 2 (16K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04}},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"step-tts-2":{"id":"step-tts-2","name":"Step TTS 2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-1-32k":{"id":"step-1-32k","name":"Step 1 (32K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41}}}},"fastrouter":{"id":"fastrouter","env":["FASTROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://go.fastrouter.ai/api/v1","name":"FastRouter","doc":"https://fastrouter.ai/models","models":{"anthropic/claude-opus-4.1":{"id":"anthropic/claude-opus-4.1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4":{"id":"anthropic/claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48},"canonical_model_id":"deepseek/deepseek-v4-pro"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.95,"output":3.15}},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.05,"output":3.5},"canonical_model_id":"zhipuai/glm-5.1"},"sarvam/sarvam-30b":{"id":"sarvam/sarvam-30b","name":"Sarvam 30B","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-18","last_updated":"2026-02-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.1},"canonical_model_id":"sarvam/sarvam-30b"},"sarvam/sarvam-105b":{"id":"sarvam/sarvam-105b","name":"Sarvam 105B","description":"Flagship Indian-language reasoning model for enterprise multilingual applications","family":"sarvam","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16},"canonical_model_id":"sarvam/sarvam-105b"},"x-ai/grok-4":{"id":"x-ai/grok-4","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.75,"cache_write":15}},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2},"canonical_model_id":"xai/grok-build-0.1"},"bytedance/seedance-2":{"id":"bytedance/seedance-2","name":"Seedance 2","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":4096,"output":0}},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"google/veo3.1":{"id":"google/veo3.1","name":"Veo 3.1","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/imagen-4.0-ultra":{"id":"google/imagen-4.0-ultra","name":"Imagen 4 Ultra","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"google/veo3.1-lite":{"id":"google/veo3.1-lite","name":"Veo 3.1 Lite","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro Preview","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12},"canonical_model_id":"google/gemini-3-pro-image-preview"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.31}},"google/veo3.1-fast":{"id":"google/veo3.1-fast","name":"Veo 3.1 Fast","description":"Video model for prompt-guided generation, editing, and motion workflows","family":"veo","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":false,"limit":{"context":400000,"output":0}},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.0375}},"google/imagen-4.0-fast":{"id":"google/imagen-4.0-fast","name":"Imagen 4 Fast","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"imagen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":480,"output":0}},"deepseek-ai/deepseek-r1-distill-llama-70b":{"id":"deepseek-ai/deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.03,"output":0.14}},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.75,"output":3.5},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2":{"id":"moonshotai/kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.55,"output":2.2}},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"wanx/wan-v2-6":{"id":"wanx/wan-v2-6","name":"Wan 2.6","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image"],"output":["video"]},"open_weights":true,"limit":{"context":400000,"output":0}},"qwen/qwen3-coder":{"id":"qwen/qwen3-coder","name":"Qwen3 Coder","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":66536},"cost":{"input":0.3,"output":1.2}},"leonardo-ai/lucid-realism":{"id":"leonardo-ai/lucid-realism","name":"Lucid Realism","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"lucid","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0}},"leonardo-ai/lucid-origin":{"id":"leonardo-ai/lucid-origin","name":"Lucid Origin","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"lucid","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0}},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-realtime-1.5":{"id":"openai/gpt-realtime-1.5","name":"GPT Realtime 1.5","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","audio","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32000,"output":4096},"cost":{"input":4,"output":16}},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"openai/gpt-image-2":{"id":"openai/gpt-image-2","name":"GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":128000,"output":0}},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.05,"output":0.2}},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6}},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-10-01","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}}}},"orcarouter":{"id":"orcarouter","env":["ORCAROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.orcarouter.ai/v1","name":"OrcaRouter","doc":"https://docs.orcarouter.ai","models":{"grok/grok-4.3":{"id":"grok/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"grok/grok-4.5":{"id":"grok/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"grok/grok-4.6":{"id":"grok/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":10},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"canonical_model_id":"deepseek/deepseek-chat"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-flash-free":{"id":"deepseek/deepseek-v4-flash-free","name":"DeepSeek V4 Flash (free)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek/deepseek-reasoner":{"id":"deepseek/deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-reasoner"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.442,"output":0.884,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.147,"output":0.295,"cache_read":0.02},"canonical_model_id":"deepseek/deepseek-v4-flash"},"tencent/hy3-free":{"id":"tencent/hy3-free","name":"Hy3 (free)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"tencent/hy3"},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.18,"output":0.59,"cache_read":0.059},"canonical_model_id":"tencent/hy3"},"z-ai/glm-4.5":{"id":"z-ai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.075,"output":0.25},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.3-flash-free":{"id":"z-ai/glm-5.3-flash-free","name":"GLM-5.3-Flash (free)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-4.5-air":{"id":"z-ai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5-air"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"canonical_model_id":"zhipuai/glm-5.3"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.1},"canonical_model_id":"google/gemini-flash-latest"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.13,"output":0.38,"cache_read":0.02},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-flash-lite-latest"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemini-robotics-er-1.6-preview":{"id":"google/gemini-robotics-er-1.6-preview","name":"Gemini Robotics-ER 1.6 Preview","description":"Vision-language model for embodied reasoning: spatial understanding, task planning, and physical-world agentic robotics","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":1,"output":5},"canonical_model_id":"google/gemini-robotics-er-1.6-preview"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.06,"output":0.33,"cache_read":0.0075},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"kimi/kimi-k3":{"id":"kimi/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3.3,"output":16.5,"cache_read":0.33},"canonical_model_id":"moonshotai/kimi-k3"},"kimi/kimi-k2.6":{"id":"kimi/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"kimi/kimi-k2.5":{"id":"kimi/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.5"},"kimi/kimi-k2.7-code":{"id":"kimi/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"orcarouter/fusion-mini":{"id":"orcarouter/fusion-mini","name":"OrcaRouter Fusion Mini","description":"Leaner two-model Fusion panel that runs Claude Opus 4.8 and GPT-5.5 in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Easy requests fall through to a cheaper default and bill as one call.","family":"model-router","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"orcarouter/free":{"id":"orcarouter/free","name":"OrcaRouter Free","description":"Built-in router over the free tier that scores each request's difficulty and sends light work to the smaller free model and harder work to the stronger one. Priced at zero and never falls back to a paid model.","family":"auto","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":0,"output":0}},"orcarouter/fusion":{"id":"orcarouter/fusion","name":"OrcaRouter Fusion","description":"Curated fan-out router that runs Claude Opus 4.8, GPT-5.5 and Gemini 3.1 Pro in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Easy requests fall through to a cheaper default and bill as one call.","family":"model-router","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000}},"orcarouter/fusion-flash":{"id":"orcarouter/fusion-flash","name":"OrcaRouter Fusion Flash","description":"Budget Fusion panel that runs Gemini 3.5 Flash, MiniMax M2.7 and GLM 5.1 in parallel on hard requests, then has a Claude Opus 4.8 judge return the strongest single answer verbatim. Cost-sensitive fan-out over a 200K window.","family":"model-router","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000}},"orcarouter/auto":{"id":"orcarouter/auto","name":"OrcaRouter Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2026-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.6},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.563},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.33,"output":2.4},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":81920}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.4,"output":4},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.086,"output":0.688},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.115,"output":0.688,"reasoning":2.4},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":131072},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.038},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434},"canonical_model_id":"alibaba/qwen3-max"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.115,"output":0.917},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.057,"output":0.459},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.35,"output":1.42,"cache_read":0.071},"canonical_model_id":"alibaba/qwen3.7-plus"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":100000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"canonical_model_id":"openai/gpt-4o-2024-05-13"},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-5.1-codex":{"id":"openai/gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/gpt-5.2-chat-latest":{"id":"openai/gpt-5.2-chat-latest","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-chat-latest"},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"GPT-5.1 Chat","description":"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-chat-latest"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"GPT-5 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":100000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5-chat-latest"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.17},"canonical_model_id":"openai/gpt-oss-120b"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"}}},"friendli":{"id":"friendli","env":["FRIENDLI_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.friendli.ai/serverless/v1","name":"Friendli","doc":"https://friendli.ai/docs/guides/serverless_endpoints/introduction","models":{"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":1.5,"cache_read":0.25},"canonical_model_id":"deepseek/deepseek-v3.2"},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.5"},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.26,"output":3.96,"cache_read":0.234},"canonical_model_id":"zhipuai/glm-5.3"}}},"kimi-code-plan-cn":{"id":"kimi-code-plan-cn","env":["KIMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.kimi.com/coding/v1","name":"Kimi For Coding (kimi.com)","doc":"https://www.kimi.com/code/docs/en/kimi-code/models.html","models":{"kimi-for-coding-highspeed":{"id":"kimi-for-coding-highspeed","name":"Kimi For Coding HighSpeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"kimi-for-coding":{"id":"kimi-for-coding","name":"kimi-for-coding","description":"Kimi coding model with more efficient thinking and up to 1M context, available through Kimi Code","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.8-preview"},"k3-256k":{"id":"k3-256k","name":"Kimi K3-256K","description":"256K-context version of Kimi K3, reducing token consumption for shorter coding sessions","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k3"},"k3":{"id":"k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k3"}}},"inco":{"id":"inco","env":["INCO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inco.ai/v1","name":"Inco","doc":"https://platform.inco.ai/docs","models":{"kimi-k3:fast":{"id":"kimi-k3:fast","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":6,"output":30},"canonical_model_id":"moonshotai/kimi-k3"},"glm-5.3:fast":{"id":"glm-5.3:fast","name":"GLM-5.3 Fast","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8},"canonical_model_id":"zhipuai/glm-5.3"},"glm-5.3-flash:fast":{"id":"glm-5.3-flash:fast","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5},"canonical_model_id":"zhipuai/glm-5.3-flash"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M3"},"deepseek-v4.1-flash:fast":{"id":"deepseek-v4.1-flash:fast","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.6,"output":2.4},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"minimax-m3:fast":{"id":"minimax-m3:fast","name":"MiniMax M3 Fast","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4},"canonical_model_id":"minimax/MiniMax-M3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4},"canonical_model_id":"zhipuai/glm-5.3"}}},"sakana":{"id":"sakana","env":["SAKANA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.sakana.ai/v1","name":"Sakana AI","doc":"https://console.sakana.ai/models","models":{"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"fugu-ultra-20260615":{"id":"fugu-ultra-20260615","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"sakana-namazu":{"id":"sakana-namazu","name":"Sakana Namazu","description":"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"canonical_model_id":"sakana/sakana-namazu"},"fugu":{"id":"fugu","name":"Fugu","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"provider":{"shape":"responses"},"canonical_model_id":"sakana/fugu"}}},"scx-ai":{"id":"scx-ai","env":["SCX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scx.ai/v1","name":"SCX.ai","doc":"https://platform.scx.ai/docs","models":{"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.55,"output":1.784,"cache_read":0.111},"canonical_model_id":"zhipuai/glm-5.2"},"Qwen3.8-Max":{"id":"Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":983616,"output":131072},"cost":{"input":1.815,"output":5.4461,"cache_read":0.17,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":196608},"cost":{"input":0.48,"output":1.79,"cache_read":0.05},"canonical_model_id":"minimax/MiniMax-M2.7"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.17,"output":0.55},"canonical_model_id":"openai/gpt-oss-120b"}}},"zenifra":{"id":"zenifra","env":["ZENIFRA_AI_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ai.zenifra.com/v1","name":"Zenifra","doc":"https://docs.zenifra.com","models":{"alibaba/qwen3.6-35b-a3b":{"id":"alibaba/qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"provider":{"shape":"completions"},"cost":{"input":0.19,"output":0.48},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"}}},"tokenrouter":{"id":"tokenrouter","env":["TOKENROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokenrouter.com/v1","name":"TokenRouter","doc":"https://www.tokenrouter.com/docs/tokenrouter-feature-guide/","models":{"z-ai/glm-5.3-free":{"id":"z-ai/glm-5.3-free","name":"GLM-5.3 (free)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3"}}},"google-vertex-anthropic":{"id":"google-vertex-anthropic","env":["GOOGLE_VERTEX_PROJECT","GOOGLE_VERTEX_LOCATION","GOOGLE_APPLICATION_CREDENTIALS"],"npm":"@ai-sdk/google-vertex/anthropic","name":"Vertex (Anthropic)","doc":"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude","models":{"claude-opus-4-8@default":{"id":"claude-opus-4-8@default","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-8"},"claude-sonnet-4-5@20250929":{"id":"claude-sonnet-4-5@20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"claude-opus-4-6@default":{"id":"claude-opus-4-6@default","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-6"},"claude-opus-4@20250514":{"id":"claude-opus-4@20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-20250514"},"claude-sonnet-5-5@default":{"id":"claude-sonnet-5-5@default","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"claude-opus-5-5@default":{"id":"claude-opus-5-5@default","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-opus-5@default":{"id":"claude-opus-5@default","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-sonnet-4-6@default":{"id":"claude-sonnet-4-6@default","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-haiku-4-5@20251001":{"id":"claude-haiku-4-5@20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"claude-opus-4-1@20250805":{"id":"claude-opus-4-1@20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"claude-opus-4-5@20251101":{"id":"claude-opus-4-5@20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"claude-opus-4-7@default":{"id":"claude-opus-4-7@default","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"anthropic/claude-opus-4-7"},"claude-fable-5-1@default":{"id":"claude-fable-5-1@default","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"claude-fable-5@default":{"id":"claude-fable-5@default","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"claude-haiku-5-5@default":{"id":"claude-haiku-5-5@default","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"claude-sonnet-4@20250514":{"id":"claude-sonnet-4@20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"claude-sonnet-5@default":{"id":"claude-sonnet-5@default","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"}}},"moonshotai":{"id":"moonshotai","env":["MOONSHOT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.moonshot.ai/v1","name":"Moonshot AI","doc":"https://platform.moonshot.ai/docs/api/chat","models":{"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"canonical_model_id":"moonshotai/kimi-k3"},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code HighSpeed","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"ainetcafe":{"id":"ainetcafe","env":["AINETCAFE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://microquickjs.com/v1","name":"ainetcafe","doc":"https://ainetcafe.com/k3/guides/","models":{"Kimi-K3":{"id":"Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":2.1,"output":10.5,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"}}},"wallaby":{"id":"wallaby","env":["WALLABY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.wallabytoken.com/v1","name":"Wallaby","doc":"https://wallabytoken.com/docs","models":{"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":2.7,"output":13.5,"cache_read":0.27},"canonical_model_id":"moonshotai/kimi-k3"}}},"bee":{"id":"bee","env":["BEE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.bee.heossi.com/bee","name":"Bee by HEOSSI","doc":"https://bee.heossi.com/docs/sdks","models":{"bee-buzz":{"id":"bee-buzz","name":"Bee Buzz 1.0","description":"Mid-tier production model for tool-using agents, multi-step workflows, and builder/integration work. Bigger context than Comb, deeper planning, faster than Hive on routine tasks.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":24576},"cost":{"input":2.5,"output":10,"cache_read":0.25,"cache_write":3}},"bee-swarm":{"id":"bee-swarm","name":"Bee Swarm 1.0","description":"Premium reasoning, multi-model cloud execution, large-document analysis, and high-value technical work. Includes the evolution engine and stronger eval gates by default.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":false,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":25,"output":150,"cache_read":2.5,"cache_write":30}},"bee-comb":{"id":"bee-comb","name":"Bee Comb 2.0","description":"Stronger local/workstation AI for coding, architecture, security reasoning, larger RAG, and domain-specific workflows. The default workhorse for engineers and dev teams.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":1.25,"output":5,"cache_read":0.125,"cache_write":1.5}},"bee-hive":{"id":"bee-hive","name":"Bee Hive 1.0","description":"Scalable Bee serving with quantum-reasoning routing and multi-base domain-adapter routing for shared knowledge workflows, document intelligence, and lower-cost cloud inference. Domain adapters activate per customer domain after evaluation.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":5,"output":20,"cache_read":0.5,"cache_write":6}},"bee-brood":{"id":"bee-brood","name":"Bee Brood 1.0","description":"Production multimodal reasoning for image and video analysis, tool-enabled workflows, and multi-step planning at controlled cost.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.72}},"bee-cell":{"id":"bee-cell","name":"Bee Cell 1.0","description":"Fast hosted AI for chat, coding help, document question answering, image understanding, and lightweight technical reasoning.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-10","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.36}}}},"scnet-token-plan":{"id":"scnet-token-plan","env":["SCNET_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.scnet.cn/api/llm/v1","name":"SCNet Token Plan","doc":"https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/plans/token-plan.html","models":{"DeepSeek-V4-Flash-0731":{"id":"DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"minimax/MiniMax-M3"},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.1"},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.2"},"Qwen3.8-Max":{"id":"Qwen3.8-Max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"alibaba/qwen3.8-max"},"Kimi-K3":{"id":"Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k3"},"DeepSeek-V4-Pro-0813":{"id":"DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"DeepSeek-V4.1-Flash":{"id":"DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-flash"},"GLM-5":{"id":"GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5"},"GLM-5.3-Flash":{"id":"GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"DeepSeek-V4-Pro":{"id":"DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"Qwen3.8-Flash":{"id":"Qwen3.8-Flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"alibaba/qwen3.8-flash"},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"minimax/MiniMax-M2.5"},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"minimax/MiniMax-M2.7"},"GLM-5.3":{"id":"GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"zhipuai/glm-5.3"},"Kimi-K2.7-Code":{"id":"Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"Kimi-K2.5":{"id":"Kimi-K2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"moonshotai/kimi-k2.5"}}},"ofox":{"id":"ofox","env":["OFOX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.ofox.ai/v1","name":"Ofox","doc":"https://ofox.ai/docs","models":{"bailian/qwen-flash":{"id":"bailian/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.22,"cache_read":0.0043,"cache_write":0.027},"canonical_model_id":"alibaba/qwen-flash"},"bailian/qwen3.5-flash":{"id":"bailian/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"alibaba/qwen3.5-flash"},"bailian/qwen3.7-max":{"id":"bailian/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"bailian/qwen3.8-27b":{"id":"bailian/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1131072,"output":131072},"cost":{"input":0.45,"output":3.2,"cache_read":0.05,"cache_write":0.5625},"canonical_model_id":"alibaba/qwen3.8-27b"},"bailian/qwen3.5-27b":{"id":"bailian/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":2.05,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-27b"},"bailian/qwen-max":{"id":"bailian/qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":0.35,"output":1.38,"cache_read":0.069},"canonical_model_id":"alibaba/qwen-max"},"bailian/qwen3.8-max":{"id":"bailian/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"bailian/qwen3-coder-next":{"id":"bailian/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.2,"output":1.5},"canonical_model_id":"alibaba/qwen3-coder-next"},"bailian/qwen3.5-plus":{"id":"bailian/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.4},"canonical_model_id":"alibaba/qwen3.5-plus"},"bailian/qwen-plus":{"id":"bailian/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"canonical_model_id":"alibaba/qwen-plus"},"bailian/qwen3-max":{"id":"bailian/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.36,"output":1.43,"cache_read":0.072},"canonical_model_id":"alibaba/qwen3-max"},"bailian/qwen-turbo":{"id":"bailian/qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.05,"output":0.09,"cache_read":0.0086},"canonical_model_id":"alibaba/qwen-turbo"},"bailian/qwen-vl-max":{"id":"bailian/qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.58,"cache_read":0.046},"canonical_model_id":"alibaba/qwen-vl-max"},"bailian/qwen3.5-122b-a10b":{"id":"bailian/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.29,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"bailian/qwen3.6-flash":{"id":"bailian/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.31},"canonical_model_id":"alibaba/qwen3.6-flash"},"bailian/qwen3-coder-flash":{"id":"bailian/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.06,"cache_write":0.27},"canonical_model_id":"alibaba/qwen3-coder-flash"},"bailian/qwen3-coder-plus":{"id":"bailian/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.8,"output":9,"cache_read":0.2,"cache_write":1},"canonical_model_id":"alibaba/qwen3-coder-plus"},"bailian/qwen3.8-flash":{"id":"bailian/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"bailian/qwen3.5-35b-a3b":{"id":"bailian/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.29,"output":1.83,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"bailian/qwen3.6-max-preview":{"id":"bailian/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":2.15,"output":12.86,"cache_read":0.2,"cache_write":1.17},"canonical_model_id":"alibaba/qwen3.6-max-preview"},"bailian/qwen3.5-397b-a17b":{"id":"bailian/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.55,"output":3.5,"cache_read":0.55},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"bailian/qwen3.6-27b":{"id":"bailian/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.6-27b"},"bailian/qwen3.6-plus":{"id":"bailian/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.6-plus"},"bailian/qwen3.7-plus":{"id":"bailian/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"bailian/qwen3.8-max-0902":{"id":"bailian/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"anthropic/claude-opus-4.5":{"id":"anthropic/claude-opus-4.5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-4.6":{"id":"anthropic/claude-opus-4.6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"anthropic/claude-haiku-5.5":{"id":"anthropic/claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-opus-4.8":{"id":"anthropic/claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-haiku-4.5":{"id":"anthropic/claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-sonnet-5.5":{"id":"anthropic/claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-fable-5.1":{"id":"anthropic/claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-4.5":{"id":"anthropic/claude-sonnet-4.5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-sonnet-4.6":{"id":"anthropic/claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-5.5":{"id":"anthropic/claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.ofox.ai/anthropic/v1"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.308,"output":0.924,"cache_read":0.0098},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-flash-0423":{"id":"deepseek/deepseek-v4-flash-0423","name":"DeepSeek V4 Flash 0423","description":"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.19,"output":0.51,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0423"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.21,"output":0.84,"cache_read":0.0042},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"status":"beta","cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.924,"output":2.772,"cache_read":0.0308},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-pro-0423":{"id":"deepseek/deepseek-v4-pro-0423","name":"DeepSeek V4 Pro 0423","description":"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.15},"canonical_model_id":"deepseek/deepseek-v4-pro-0423"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.29,"output":0.43,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash"},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.6":{"id":"z-ai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-5.3-flashx":{"id":"z-ai/glm-5.3-flashx","name":"GLM-5.3-FlashX","description":"High-speed GLM-5.3-Flash serving option for coding and agent workflows","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.4,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-4.7-flashx":{"id":"z-ai/glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.072,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.3},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-4.20":{"id":"x-ai/grok-4.20","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":128000},"cost":{"input":4,"output":12,"cache_read":0.4},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"x-ai/grok-4.1-fast":{"id":"x-ai/grok-4.1-fast","name":"Grok 4.1 Fast","description":"xAI's fast agentic tool-calling model with a 2M context window; non-reasoning variant for low-latency responses","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"xai/grok-4.1-fast"},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":65536},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"volcengine/doubao-seed-2.0-mini":{"id":"volcengine/doubao-seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.06,"output":0.56,"cache_read":0.02,"cache_write":0.0024},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"volcengine/doubao-seed-1-6-flash":{"id":"volcengine/doubao-seed-1-6-flash","name":"Seed 1.6 Flash","description":"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use","family":"seed","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.03,"output":0.22,"cache_read":0.0043},"canonical_model_id":"bytedance-seed/seed-1-6-flash"},"volcengine/doubao-seed-2.0-lite":{"id":"volcengine/doubao-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.13,"output":0.76,"cache_read":0.03,"cache_write":0.0024},"canonical_model_id":"bytedance-seed/seed-2.0-lite"},"volcengine/doubao-seed-1-8":{"id":"volcengine/doubao-seed-1-8","name":"Seed 1.8","description":"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-28","last_updated":"2025-12-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"canonical_model_id":"bytedance-seed/seed-1-8"},"volcengine/doubao-seed-1-6":{"id":"volcengine/doubao-seed-1-6","name":"Seed 1.6","description":"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"canonical_model_id":"bytedance-seed/seed-1-6"},"volcengine/doubao-seed-2.0-pro":{"id":"volcengine/doubao-seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024},"canonical_model_id":"bytedance-seed/seed-2.0-pro"},"volcengine/doubao-seed-1-6-vision":{"id":"volcengine/doubao-seed-1-6-vision","name":"Seed 1.6 Vision","description":"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks","family":"seed","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-15","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.12,"output":1.15,"cache_read":0.023},"canonical_model_id":"bytedance-seed/seed-1-6-vision"},"volcengine/doubao-seed-2.1-turbo":{"id":"volcengine/doubao-seed-2.1-turbo","name":"Seed 2.1 Turbo","description":"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3536,"output":1.7696,"cache_read":0.068,"cache_write":0.0019},"canonical_model_id":"bytedance-seed/seed-2.1-turbo"},"volcengine/doubao-seed-2.1-pro":{"id":"volcengine/doubao-seed-2.1-pro","name":"Seed 2.1 Pro","description":"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.7072,"output":3.536,"cache_read":0.1416,"cache_write":0.002},"canonical_model_id":"bytedance-seed/seed-2.1-pro"},"volcengine/doubao-seed-character":{"id":"volcengine/doubao-seed-character","name":"Seed Character","description":"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.177,"output":0.884,"cache_read":0.024,"cache_write":0.0025},"canonical_model_id":"bytedance-seed/seed-character"},"volcengine/doubao-seed-evolving":{"id":"volcengine/doubao-seed-evolving","name":"Seed Evolving","description":"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.884,"output":4.42,"cache_read":0.177,"cache_write":0.0025},"canonical_model_id":"bytedance-seed/seed-evolving"},"volcengine/doubao-seed-2.0-code":{"id":"volcengine/doubao-seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.67,"output":3.36,"cache_read":0.14,"cache_write":0.0024},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415,"input_audio":1.5},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.083},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":4.5},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":1,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":1},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"provider":{"npm":"@ai-sdk/google","api":"https://api.ofox.ai/gemini/v1beta"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.0415,"input_audio":0.75},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":1,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.7-code-highspeed":{"id":"moonshotai/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"minimax/minimax-m2.5-lightning":{"id":"minimax/minimax-m2.5-lightning","name":"MiniMax-M2.5 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.1-lightning":{"id":"minimax/minimax-m2.1-lightning","name":"MiniMax-M2.1 Lightning","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.6,"output":2.4,"cache_read":0.12},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"minimax/m2-her":{"id":"minimax/m2-her","name":"MiniMax-M2 Her","description":"MiniMax M2 variant tuned for conversational and character-driven agent interactions","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":2048},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2-Her"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2"},"qwen/qwen-flash":{"id":"qwen/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.022,"output":0.22,"cache_read":0.0043,"cache_write":0.027},"canonical_model_id":"alibaba/qwen-flash"},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1064000,"output":64000},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1131072,"output":131072},"cost":{"input":0.5,"output":1.71,"cache_read":0.043,"cache_write":0.63},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.05,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8000},"cost":{"input":0.35,"output":1.38,"cache_read":0.069},"canonical_model_id":"alibaba/qwen-max"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.2,"output":1.5},"canonical_model_id":"alibaba/qwen3-coder-next"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.4},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32000},"cost":{"input":0.12,"output":0.29,"cache_read":0.023},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.36,"output":1.43,"cache_read":0.072},"canonical_model_id":"alibaba/qwen3-max"},"qwen/qwen-turbo":{"id":"qwen/qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.043,"output":0.09,"cache_read":0.0086},"canonical_model_id":"alibaba/qwen-turbo"},"qwen/qwen-vl-max":{"id":"qwen/qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8000},"cost":{"input":0.23,"output":0.58,"cache_read":0.023},"canonical_model_id":"alibaba/qwen-vl-max"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":2.29,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.31},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":2.5,"cache_read":0.06,"cache_write":0.27},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.8,"output":9,"cache_read":0.2,"cache_write":1},"canonical_model_id":"alibaba/qwen3-coder-plus"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.11,"output":0.39,"cache_read":0.011,"cache_write":0.14},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.29,"output":1.83,"cache_read":0.29},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":2.15,"output":12.86,"cache_read":0.2,"cache_write":1.17},"canonical_model_id":"alibaba/qwen3.6-max-preview"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.55,"output":3.5,"cache_read":0.55},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.43,"output":2.57},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1064000,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"qwen/qwen3.8-max-0902":{"id":"qwen/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.71,"output":5.14,"cache_read":0.17,"cache_write":2.14},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":24,"output":144},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.16,"output":1,"cache_read":0.016},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-5.2-codex":{"id":"openai/gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.4,"output":11.2,"cache_read":0.144},"canonical_model_id":"openai/gpt-5.2-codex"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":8,"cache_read":1},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.2,"output":1.6,"cache_read":0.024},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.4,"output":11.2,"cache_read":0.144},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.04,"output":0.32,"cache_read":0.008},"canonical_model_id":"openai/gpt-5-nano"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1,"output":8,"cache_read":0.104},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.12,"output":0.48,"cache_read":0.06},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.6,"output":3.6,"cache_read":0.06},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.1-codex-max":{"id":"openai/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1,"output":8,"cache_read":0.104},"canonical_model_id":"openai/gpt-5.1-codex-max"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.4,"output":11.2,"cache_read":0.144},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":4,"output":24,"cache_read":0.4},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.6,"output":6.4,"cache_read":0.4},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.32,"output":1.28,"cache_read":0.08},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.08,"output":0.4,"cache_read":0.008,"cache_write":0.1},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-5.1-codex-mini":{"id":"openai/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":0.2,"output":1.6,"cache_read":0.024},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1,"output":8,"cache_read":0.104},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"https://api.ofox.ai/v1"},"cost":{"input":1.6,"output":8,"cache_read":0.16,"cache_write":2},"canonical_model_id":"openai/gpt-6-sol"}}},"neon":{"id":"neon","env":["NEON_AI_GATEWAY_BASE_URL","NEON_AI_GATEWAY_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"${NEON_AI_GATEWAY_BASE_URL}/v1","name":"Neon","doc":"https://neon.com/docs","models":{"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-5-6-luna":{"id":"gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM-5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"gpt-5-6-terra":{"id":"gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"llama-4-maverick":{"id":"llama-4-maverick","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":8192},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"gpt-5-4-nano":{"id":"gpt-5-4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-5-6-sol":{"id":"gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"gpt-5-5-pro":{"id":"gpt-5-5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"gemini-3-1-pro":{"id":"gemini-3-1-pro","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"glm-5-2":{"id":"glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":10000},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":25000},"cost":{"input":0.07,"output":0.3}},"gpt-5-4":{"id":"gpt-5-4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3-1-flash-lite":{"id":"gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":524288},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"qwen35-122b-a10b":{"id":"qwen35-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":25000},"cost":{"input":0.22,"output":2.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.6-flash"},"meta-llama-3-3-70b-instruct":{"id":"meta-llama-3-3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"gpt-5-2":{"id":"gpt-5-2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gpt-5-3-codex":{"id":"gpt-5-3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"gemma-3-12b":{"id":"gemma-3-12b","name":"Gemma 3 12B","description":"Google's open-weight Gemma 3 vision-language model for text and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08-31","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.5}},"gemini-3-5-flash-lite":{"id":"gemini-3-5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"gpt-5-1":{"id":"gpt-5-1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":25000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai","api":"${NEON_AI_GATEWAY_BASE_URL}/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"meta-llama-3-1-8b-instruct":{"id":"meta-llama-3-1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Meta's compact open-weight Llama 3.1 model for fast, low-cost text generation","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12-31","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.45}}}},"aihubmix":{"id":"aihubmix","env":["AIHUBMIX_API_KEY"],"npm":"@aihubmix/ai-sdk-provider","name":"AIHubMix","doc":"https://docs.aihubmix.com","models":{"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.137,"output":0.411,"cache_read":0.0274,"tiers":[{"input":0.274,"output":0.822,"cache_read":0.0548,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6v"},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.0282,"output":0.282,"cache_read":0.00282,"cache_write":0.03525,"tiers":[{"input":0.1126,"output":1.126,"cache_read":0.01126,"cache_write":0.14075,"tier":{"type":"context","size":128000}},{"input":0.169,"output":1.69,"cache_read":0.0169,"cache_write":0.21125,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.5-flash"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5"},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.48,"output":0.96,"cache_read":0.00384},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"coding-minimax-m2.7-free":{"id":"coding-minimax-m2.7-free","name":"Coding MiniMax M2.7 (Free)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0,"output":0}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125},"canonical_model_id":"alibaba/qwen3.7-max"},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675,"cache_read":0.165},"canonical_model_id":"meta/muse-spark-1.3"},"deep-deepseek-v4-pro":{"id":"deep-deepseek-v4-pro","name":"DeepSeek V4 Pro (DeepSeek)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.478,"output":0.956,"cache_read":0.004302}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.155,"output":0.31,"cache_read":0.0031},"canonical_model_id":"xiaomi/mimo-v2.5"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55,"tiers":[{"input":4.4,"output":13.2,"cache_read":1.1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4.4,"output":13.2,"cache_read":1.1}},"canonical_model_id":"xai/grok-4.7"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM 5 Vision Turbo","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glmv","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.7042,"output":3.09848,"cache_read":0.169008}},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash-image"},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.137,"output":1.37,"cache_read":0,"tiers":[{"input":0.2054,"output":2.054,"cache_read":0,"tier":{"type":"context","size":32000}},{"input":0.411,"output":4.11,"cache_read":0,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3-vl-plus"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11268,"output":0.39438,"cache_read":0.02817},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.0846,"output":0.6768,"tiers":[{"input":0.2536,"output":2.0288,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-27b"},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.273974,"output":1.095896,"cache_read":0.0547948,"tiers":[{"input":0.547946,"output":2.191784,"cache_read":0.1095892,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.6"},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.142,"output":0.284,"cache_read":0.0284},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":128000},"cost":{"input":1.69,"output":5.07,"cache_read":0.169,"cache_write":2.1125},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"doubao-seed-2-0-lite-260428":{"id":"doubao-seed-2-0-lite-260428","name":"Doubao Seed 2.0 Lite 260428","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.08,"output":0.51,"cache_read":0.01692,"input_audio":1.269,"tiers":[{"input":0.13,"output":0.76,"cache_read":0.02536,"input_audio":1.902,"tier":{"type":"context","size":32000}},{"input":0.25,"output":1.52,"cache_read":0.05072,"input_audio":3.804,"tier":{"type":"context","size":128000}}]}},"claude-sonnet-4-6-think":{"id":"claude-sonnet-4-6-think","name":"Claude Sonnet 4.6 Thinking","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2"},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1096,"output":0.6576,"cache_read":0.01096,"cache_write":0.137,"tiers":[{"input":0.274,"output":1.644,"cache_read":0.0274,"cache_write":0.3425,"tier":{"type":"context","size":128000}},{"input":0.548,"output":3.288,"cache_read":0.0548,"cache_write":0.685,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.5-plus"},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"deepseek-v4-flash-0731-fast":{"id":"deepseek-v4-flash-0731-fast","name":"DeepSeek V4 Flash 0731 Fast","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":1.4,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"hy3-preview":{"id":"hy3-preview","name":"Hy3 Preview","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":128000},"cost":{"input":0.17,"output":0.566661,"cache_read":0.051},"canonical_model_id":"tencent/hy3-preview"},"alicloud-deepseek-v4-pro":{"id":"alicloud-deepseek-v4-pro","name":"DeepSeek V4 Pro (Alibaba Cloud)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.69,"output":3.38,"cache_read":0.13}},"zai-glm-5.1":{"id":"zai-glm-5.1","name":"GLM-5.1 (Z.ai)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.845,"output":3.38,"cache_read":0.183112}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.155,"output":0.62,"cache_read":0.0031},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"qwen3.8-max-preview":{"id":"qwen3.8-max-preview","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.338,"output":1.014,"cache_read":0.0676,"cache_write":0.4225},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"coding-minimax-m2.7-highspeed":{"id":"coding-minimax-m2.7-highspeed","name":"Coding MiniMax M2.7 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2}},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675},"canonical_model_id":"meta/muse-spark-1.1"},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.155,"output":0.62,"cache_read":0.0031},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":7.999,"cache_read":0.32167},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"input":991808,"output":64000},"cost":{"input":0.0282,"output":0.1128,"cache_read":0.00564,"cache_write":0.03525},"canonical_model_id":"alibaba/qwen3.7-flash"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125,"tiers":[{"input":6.6,"output":24.75,"cache_read":0.66,"cache_write":8.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6.6,"output":24.75,"cache_read":0.66,"cache_write":8.25}},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.4508,"output":2.7048,"cache_read":0.09016,"cache_write":0.5635,"tiers":[{"input":0.902,"output":5.412,"cache_read":0.1804,"cache_write":1.1275,"tier":{"type":"context","size":32000}},{"input":1.3522,"output":8.1132,"cache_read":0.27044,"cache_write":1.69025,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3-max"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"coding-glm-5.3-free":{"id":"coding-glm-5.3-free","name":"GLM-5.3 (Coding, free)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3"},"gpt-image-2.5-flare":{"id":"gpt-image-2.5-flare","name":"GPT Image 2.5 Flare","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-flare"},"claude-opus-4-8-think":{"id":"claude-opus-4-8-think","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"doubao-seed-2-0-pro":{"id":"doubao-seed-2-0-pro","name":"Doubao Seed 2.0 Pro","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644,"tiers":[{"input":0.72,"output":3.62,"cache_read":0.144656,"tier":{"type":"context","size":32000}},{"input":1.45,"output":7.23,"cache_read":0.28932,"tier":{"type":"context","size":128000}}]}},"xiaomi-mimo-v2.5":{"id":"xiaomi-mimo-v2.5","name":"Xiaomi MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.088,"tiers":[{"input":0.88,"output":4.4,"cache_read":0.176,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.88,"output":4.4,"cache_read":0.176}},"canonical_model_id":"xiaomi/mimo-v2.5"},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.274,"output":1.096,"tiers":[{"input":0.548,"output":1.644,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.5v"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5-1"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":1000000},"cost":{"input":1.08,"output":3.0888,"cache_read":0.054},"canonical_model_id":"stepfun/step-5-preview"},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.7746,"output":3.0984,"cache_read":0.015492},"canonical_model_id":"meituan/longcat-2.0"},"mimo-v2.6-pro-ultraspeed":{"id":"mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.8,"output":9.6,"cache_read":0.0384},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"doubao-seed-2-0-code-preview":{"id":"doubao-seed-2-0-code-preview","name":"Doubao Seed 2.0 Code Preview","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.48,"output":2.41,"cache_read":0.09644,"tiers":[{"input":0.72,"output":3.62,"cache_read":0.144656,"tier":{"type":"context","size":32000}},{"input":1.45,"output":7.23,"cache_read":0.28932,"tier":{"type":"context","size":128000}}]}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}}},"qwen3.8-omni-flash":{"id":"qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1126,"output":0.380025,"cache_read":0.014075,"cache_write":0.175937},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"doubao-seed-2-0-mini-260428":{"id":"doubao-seed-2-0-mini-260428","name":"Doubao Seed 2.0 Mini 260428","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.03,"output":0.28,"cache_read":0.00564,"input_audio":0.423,"tiers":[{"input":0.06,"output":0.56,"cache_read":0.01128,"input_audio":0.846,"tier":{"type":"context","size":32000}},{"input":0.11,"output":1.13,"cache_read":0.02256,"input_audio":1.692,"tier":{"type":"context","size":128000}}]}},"xiaomi-mimo-v2.5-pro-free":{"id":"xiaomi-mimo-v2.5-pro-free","name":"Xiaomi MiMo-V2.5-Pro (free)","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.499999,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"interleaved":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1126,"output":0.9008,"tiers":[{"input":0.2818,"output":2.2544,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.13}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"coding-minimax-m2.7":{"id":"coding-minimax-m2.7","name":"Coding MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128100},"cost":{"input":0.2,"output":0.2}},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.254,"output":1.524},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}}},"deep-deepseek-v4-flash":{"id":"deep-deepseek-v4-flash","name":"DeepSeek V4 Flash (DeepSeek)","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.154,"output":0.308,"cache_read":0.0308}},"coding-glm-5.3-flash-free":{"id":"coding-glm-5.3-flash-free","name":"GLM-5.3-Flash (Coding, free)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.17,"output":1.01,"cache_read":0.0169,"cache_write":0.21125,"tiers":[{"input":0.68,"output":4.06,"cache_read":0.0676,"cache_write":0.845,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.68,"output":4.06,"cache_read":0.0676,"cache_write":0.845}}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"interleaved":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120},"canonical_model_id":"google/gemini-3-pro-image"},"coding-glm-5.1":{"id":"coding-glm-5.1","name":"Coding GLM 5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-11","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.06,"output":0.22,"cache_read":0.013}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-20","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"gpt-image-2.5-sunburst":{"id":"gpt-image-2.5-sunburst","name":"GPT Image 2.5 Sunburst","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-09-08","last_updated":"2026-09-08","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2.5-sunburst"},"xiaomi-mimo-v2.5-free":{"id":"xiaomi-mimo-v2.5-free","name":"Xiaomi MiMo-V2.5 (free)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.6918,"output":2.0754,"cache_read":0.023058},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.48,"output":0.96,"cache_read":0.00384},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.375,"output":4.675},"canonical_model_id":"meta/muse-spark-1.2"},"gemini-3.1-flash-lite-image":{"id":"gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"interleaved":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5,"cache_read":0.025},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.155,"output":0.31,"cache_read":0.0031},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.273974,"output":1.095896,"cache_read":0.0547948,"tiers":[{"input":0.547946,"output":2.191784,"cache_read":0.1095892,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.7"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.288,"output":1.152},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1126,"output":0.380025,"cache_read":0.014075,"cache_write":0.175937},"canonical_model_id":"alibaba/qwen3.8-flash"},"claude-opus-4-6-think":{"id":"claude-opus-4-6-think","name":"Claude Opus 4.6 Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"coding-xiaomi-mimo-v2.5":{"id":"coding-xiaomi-mimo-v2.5","name":"Coding Xiaomi MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.08,"output":0.4,"cache_read":0.016,"tiers":[{"input":0.16,"output":0.8,"cache_read":0.032,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.16,"output":0.8,"cache_read":0.032}},"canonical_model_id":"xiaomi/mimo-v2.5"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"ox-alpha":{"id":"ox-alpha","name":"Ox Alpha","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.0564,"output":0.4512,"tiers":[{"input":0.2254,"output":1.8032,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":240000,"output":64000},"cost":{"input":1.27,"output":7.61,"cache_read":0.1268,"cache_write":1.585,"tiers":[{"input":2.11,"output":12.67,"cache_read":0.2112,"cache_write":2.64,"tier":{"type":"context","size":128000}}]}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1644,"output":0.9864,"tiers":[{"input":0.411,"output":2.466,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817},"canonical_model_id":"zhipuai/glm-5.2"},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.1562,"output":0.6248,"cache_read":0.03905},"canonical_model_id":"tencent/hy3"},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"tiers":[{"input":0.5,"output":3,"cache_read":0.05,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.5,"output":3,"cache_read":0.05}}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"claude-opus-4-7-think":{"id":"claude-opus-4-7-think","name":"Claude Opus 4.7 Thinking","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"alicloud-deepseek-v4-flash":{"id":"alicloud-deepseek-v4-flash","name":"DeepSeek V4 Flash (Alibaba Cloud)","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"coding-xiaomi-mimo-v2.5-pro":{"id":"coding-xiaomi-mimo-v2.5-pro","name":"Coding Xiaomi MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.2,"output":0.6,"cache_read":0.04,"tiers":[{"input":0.4,"output":1.2,"cache_read":0.08,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.4,"output":1.2,"cache_read":0.08}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.22,"output":1.32,"cache_read":0.044},"canonical_model_id":"stepfun/step-3.7-flash"},"alicloud-glm-5.1":{"id":"alicloud-glm-5.1","name":"GLM-5.1 (Alibaba Cloud)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.84,"output":3.38,"cache_read":0.169,"cache_write":1.05625}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"coding-glm-5.1-free":{"id":"coding-glm-5.1-free","name":"Coding GLM 5.1 (free)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-11","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0,"output":0}},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"GPT-Image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":32},"canonical_model_id":"openai/gpt-image-1.5"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-05-09","last_updated":"2026-05-09","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.28,"output":1.69,"cache_read":0.0282,"cache_write":0.3525,"tiers":[{"input":1.13,"output":6.77,"cache_read":0.1128,"cache_write":1.41,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.13,"output":6.77,"cache_read":0.1128,"cache_write":1.41}}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-terra"},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]},{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.845,"output":2.535,"cache_read":0.04225},"canonical_model_id":"tencent/hy4-preview"},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1268,"output":3.9438,"cache_read":0.2817},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":3.9995,"cache_read":0.160835},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"xiaomi-mimo-v2.5-pro":{"id":"xiaomi-mimo-v2.5-pro","name":"Xiaomi MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo-v2.5-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-05-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.1,"output":3.3,"cache_read":0.22,"tiers":[{"input":2.2,"output":6.6,"cache_read":0.44,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2.2,"output":6.6,"cache_read":0.44}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":0.282,"output":1.128,"cache_read":0.0564,"cache_write":0.3525},"canonical_model_id":"alibaba/qwen3.7-plus"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}}}},"merge-gateway":{"id":"merge-gateway","env":["MERGE_GATEWAY_API_KEY"],"npm":"merge-gateway-ai-sdk-provider","api":"https://api-gateway.merge.dev/v1/ai-sdk","name":"Merge Gateway","doc":"https://docs.merge.dev/merge-gateway","models":{"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5"},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"Glm 4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.6,"output":1.8,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5v"},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM 4.7 Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.07,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":50000}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.05,"output":3.3,"cache_read":0.195},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM-4.7 FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5 Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5 Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.7,"output":2.2,"cache_read":0.13},"canonical_model_id":"zhipuai/glm-5.3"},"anthropic/claude-3-7-sonnet-20250219":{"id":"anthropic/claude-3-7-sonnet-20250219","name":"Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-3-7-sonnet-20250219"},"anthropic/claude-opus-5-5":{"id":"anthropic/claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-opus-4-20250514":{"id":"anthropic/claude-opus-4-20250514","name":"Claude Opus 4 (20250514)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-20250514"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-opus-4-1-20250805":{"id":"anthropic/claude-opus-4-1-20250805","name":"Claude Opus 4.1 (20250805)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5 (20251101)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":128000}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4-5-20250929":{"id":"anthropic/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5 (20250929)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":127999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-4-5-20251001":{"id":"anthropic/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5 (20251001)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"anthropic/claude-haiku-5-5":{"id":"anthropic/claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-sonnet-4-20250514":{"id":"anthropic/claude-sonnet-4-20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"anthropic/claude-sonnet-5-5":{"id":"anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R 08-2024","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"cohere/command-r-08-2024"},"cohere/command-a-03-2025":{"id":"cohere/command-a-03-2025","name":"Command A 03-2025","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-03-2025"},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B 12-2024","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-12-2024"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+ 08-2024","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-r-plus-08-2024"},"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.035,"output":0.07,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4-flash-0423":{"id":"deepseek/deepseek-v4-flash-0423","name":"DeepSeek V4 Flash 0423","description":"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.139,"output":0.278},"canonical_model_id":"deepseek/deepseek-v4-flash-0423"},"deepseek/deepseek-v4-flash-0731-fast":{"id":"deepseek/deepseek-v4-flash-0731-fast","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v3":{"id":"deepseek/deepseek-v3","name":"DeepSeek V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.27,"output":1.1},"canonical_model_id":"deepseek/deepseek-v3"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-pro-0423":{"id":"deepseek/deepseek-v4-pro-0423","name":"DeepSeek V4 Pro 0423","description":"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":393216},"cost":{"input":1.65,"output":3.3},"canonical_model_id":"deepseek/deepseek-v4-pro-0423"},"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":41000},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek/deepseek-r1":{"id":"deepseek/deepseek-r1","name":"DeepSeek R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":40960},"cost":{"input":1.35,"output":5.4},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1 (0528)","description":"May 2025 DeepSeek R1 update with improved mathematics, coding, and reasoning","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":32768},"cost":{"input":1.35,"output":5.4,"cache_read":0.945},"canonical_model_id":"deepseek/deepseek-r1-0528"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.28,"output":0.4,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.035,"output":0.07,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4-flash"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"output":32000},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70B Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":0.5,"cache_read":0.11},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"meta/muse-spark-1.2":{"id":"meta/muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"cost":{"input":0.22,"output":0.22},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"meta/llama-3.1-70b-instruct":{"id":"meta/llama-3.1-70b-instruct","name":"Llama 3.1 70B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"cost":{"input":0.99,"output":0.99},"canonical_model_id":"meta/llama-3.1-70b-instruct"},"bytedance/dola-seed-2.0-code-preview":{"id":"bytedance/dola-seed-2.0-code-preview","name":"Dola Seed 2.0 Code (preview)","description":"Preview coding model for repository understanding, refactors, and engineering tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"bytedance/dola-seed-2.0-code":{"id":"bytedance/dola-seed-2.0-code","name":"Seed 2.0 Code","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":128000},"cost":{"input":0.4,"output":2.4},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"bytedance/dola-seed-2.0-mini":{"id":"bytedance/dola-seed-2.0-mini","name":"Seed 2.0 Mini","description":"Low-cost Seed model for general chat, extraction, and lightweight production tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.4}},"bytedance/dola-seed-2.0-lite":{"id":"bytedance/dola-seed-2.0-lite","name":"Seed 2.0 Lite","description":"Efficient Seed model for general chat, analysis, and lightweight production tasks","family":"seed","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-02-28","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.25,"output":2}},"bytedance/dola-seed-2.0-pro":{"id":"bytedance/dola-seed-2.0-pro","name":"Seed 2.0 Pro","description":"Higher-capability Seed model for complex chat, analysis, and production tasks","family":"seed","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3}},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-flash-latest"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B It","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-3-27b-it":{"id":"google/gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.08,"output":0.45,"cache_read":0.04},"canonical_model_id":"google/gemma-3-27b-it"},"google/gemini-3-pro-preview":{"id":"google/gemini-3-pro-preview","name":"Gemini 3 Pro Preview","description":"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3-pro-preview"},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Gemini 2.5 Flash Image","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5},"canonical_model_id":"google/gemini-2.5-flash-image"},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-flash-lite-latest"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash-Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Gemini 3.1 Flash Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.09,"output":0.29},"canonical_model_id":"google/gemma-3-12b-it"},"google/gemini-2.5-computer-use-preview-10-2025":{"id":"google/gemini-2.5-computer-use-preview-10-2025","name":"Gemini 2.5 Computer Use Preview (10-2025)","description":"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-07","last_updated":"2025-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":1.25,"output":10},"canonical_model_id":"google/gemini-2.5-computer-use-preview-10-2025"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-2.5-pro":{"id":"google/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Gemini 3 Pro Image","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":2,"output":12},"canonical_model_id":"google/gemini-3-pro-image"},"google/gemini-2.5-flash":{"id":"google/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.04,"output":0.08},"canonical_model_id":"google/gemma-3-4b-it"},"google/gemini-2.5-flash-lite":{"id":"google/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"google/gemini-embedding-001":{"id":"google/gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":4096},"cost":{"input":0.15,"output":0},"canonical_model_id":"google/gemini-embedding-001"},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash-Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"writer/palmyra-x4":{"id":"writer/palmyra-x4","name":"Palmyra X4","description":"Enterprise language model for writing, analysis, and tool-assisted workflows","family":"palmyra","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-10-09","last_updated":"2024-10-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32000},"cost":{"input":2.5,"output":10}},"writer/palmyra-x5":{"id":"writer/palmyra-x5","name":"Palmyra X5","description":"Enterprise multimodal model for writing, analysis, and tool-assisted workflows","family":"palmyra","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.6,"output":6}},"xai/grok-4.7":{"id":"xai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 Non-Reasoning","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"sakana/fugu-ultra"},"sakana/sakana-namazu":{"id":"sakana/sakana-namazu","name":"Sakana Namazu","description":"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows","family":"sakana-namazu","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.15},"canonical_model_id":"sakana/sakana-namazu"},"moonshotai/kimi-k2-thinking":{"id":"moonshotai/kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.05,"output":0.2},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-lightning-30b-a3b":{"id":"nvidia/nemotron-3.5-lightning-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/nemotron-nano-9b-v2":{"id":"nvidia/nemotron-nano-9b-v2","name":"Nemotron Nano 9B","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.06,"output":0.23},"canonical_model_id":"nvidia/nemotron-nano-9b-v2"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":128000}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/minimax-m2.7-highspeed":{"id":"minimax/minimax-m2.7-highspeed","name":"MiniMax M2.7 Highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"minimax/minimax-m2.5-highspeed":{"id":"minimax/minimax-m2.5-highspeed","name":"MiniMax M2.5 Highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"minimax/minimax-m2.1":{"id":"minimax/minimax-m2.1","name":"MiniMax M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/minimax-m2":{"id":"minimax/minimax-m2","name":"MiniMax M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":8192},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2"},"mistral/codestral-latest":{"id":"mistral/codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9},"canonical_model_id":"mistral/codestral-latest"},"mistral/mistral-large-2411":{"id":"mistral/mistral-large-2411","name":"Mistral Large 2.1","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/mistral-large-2411"},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-latest"},"mistral/mistral-small-latest":{"id":"mistral/mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"mistral/mistral-small-latest"},"mistral/devstral-medium-latest":{"id":"mistral/devstral-medium-latest","name":"Devstral 2 (latest)","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-medium-latest"},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.4,"output":2,"cache_read":0.04},"canonical_model_id":"mistral/devstral-2512"},"mistral/mistral-medium-2505":{"id":"mistral/mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.4,"output":2,"cache_read":0.04},"canonical_model_id":"mistral/mistral-medium-2505"},"mistral/magistral-medium-latest":{"id":"mistral/magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2,"output":5},"canonical_model_id":"mistral/magistral-medium-latest"},"mistral/devstral-medium-2507":{"id":"mistral/devstral-medium-2507","name":"Devstral Medium","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-medium-2507"},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"mistral/mistral-large-2512"},"mistral/devstral-small-2507":{"id":"mistral/devstral-small-2507","name":"Devstral Small","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/devstral-small-2507"},"mistral/pixtral-large-latest":{"id":"mistral/pixtral-large-latest","name":"Pixtral Large (latest)","description":"Mistral's larger vision model for document-heavy image understanding and chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-latest"},"mistral/mistral-medium-latest":{"id":"mistral/mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/mistral-medium-latest"},"qwen/qwen-flash":{"id":"qwen/qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.022,"output":0.216,"cache_read":0.0044,"cache_write":0.0275},"canonical_model_id":"alibaba/qwen-flash"},"qwen/qwen3.5-flash":{"id":"qwen/qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.029,"output":0.287,"cache_read":0.0029,"cache_write":0.03625},"canonical_model_id":"alibaba/qwen3.5-flash"},"qwen/qwen3-vl-235b-a22b-instruct":{"id":"qwen/qwen3-vl-235b-a22b-instruct","name":"Qwen3-VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":1.147,"cache_read":0.15785},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.825,"output":2.4755,"cache_read":0.165,"cache_write":1.03125},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3-vl-235b-a22b-thinking":{"id":"qwen/qwen3-vl-235b-a22b-thinking","name":"Qwen3-VL 235B A22B Thinking","description":"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":2.867,"cache_read":0.0574},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-thinking"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":1010000},"cost":{"input":2.5,"output":6.25,"cache_read":0.5},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/qwen3-vl-plus":{"id":"qwen/qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.143,"output":1.434,"cache_read":0.0286,"cache_write":0.17875},"canonical_model_id":"alibaba/qwen3-vl-plus"},"qwen/qwen3.5-27b":{"id":"qwen/qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.086,"output":0.688,"cache_read":0.0172},"canonical_model_id":"alibaba/qwen3.5-27b"},"qwen/qwen3-235b-a22b-instruct-2507":{"id":"qwen/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.6,"cache_read":0.0574},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"qwen/qwen3-next-80b-a3b-thinking":{"id":"qwen/qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3-coder-next":{"id":"qwen/qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.8,"cache_read":0.075},"canonical_model_id":"alibaba/qwen3-coder-next"},"qwen/qwen3.5-plus":{"id":"qwen/qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.688,"cache_read":0.0115,"cache_write":0.14375},"canonical_model_id":"alibaba/qwen3.5-plus"},"qwen/qwen3-32b":{"id":"qwen/qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-32b"},"qwen/qwen-plus":{"id":"qwen/qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.115,"output":0.287,"cache_read":0.023,"cache_write":0.14375},"canonical_model_id":"alibaba/qwen-plus"},"qwen/qwen3-max":{"id":"qwen/qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434,"cache_read":0.0718,"cache_write":0.44875},"canonical_model_id":"alibaba/qwen3-max"},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.22,"output":1.8},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"qwen/qwen3-vl-30b-a3b-instruct":{"id":"qwen/qwen3-vl-30b-a3b-instruct","name":"Qwen3-VL 30B-A3B Instruct","description":"Open vision-language MoE model for image and video understanding, documents, and visual agents","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":0.43,"cache_read":0.0216},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"qwen/qwen3-235b-a22b":{"id":"qwen/qwen3-235b-a22b","name":"Qwen3 235B A22B","description":"Large open Qwen MoE for multilingual reasoning, coding, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.287,"output":1.147,"cache_read":0.0574},"canonical_model_id":"alibaba/qwen3-235b-a22b"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.115,"output":0.917,"cache_read":0.023},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.6-35b-a3b":{"id":"qwen/qwen3.6-35b-a3b","name":"Qwen3.6 35B A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485,"cache_read":0.0496},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":0.574,"cache_read":0.0288},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.165,"output":0.99,"cache_read":0.0165,"cache_write":0.20625},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.144,"output":0.574,"cache_read":0.0288,"cache_write":0.18},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen3-coder-plus":{"id":"qwen/qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.574,"output":2.294,"cache_read":0.1148,"cache_write":0.7175},"canonical_model_id":"alibaba/qwen3-coder-plus"},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":0.13},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":977000,"output":128000},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.5-35b-a3b":{"id":"qwen/qwen3.5-35b-a3b","name":"Qwen3.5 35B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.057,"output":0.459,"cache_read":0.020357},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"qwen/qwen3.6-max-preview":{"id":"qwen/qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.31,"output":7.88},"canonical_model_id":"alibaba/qwen3.6-max-preview"},"qwen/qwen3-30b-a3b":{"id":"qwen/qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":1.076,"cache_read":0.0216},"canonical_model_id":"alibaba/qwen3-30b-a3b"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.172,"output":1.032,"cache_read":0.0344},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"qwen/qwen3.6-27b":{"id":"qwen/qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"cost":{"input":0.4126,"output":2.4754},"canonical_model_id":"alibaba/qwen3.6-27b"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":250000},"cost":{"input":0.276,"output":1.651,"cache_read":0.0276,"cache_write":0.345},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":1.6},"canonical_model_id":"alibaba/qwen3.7-plus"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-oss-safeguard-120b":{"id":"openai/gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-safeguard-120b"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o-2024-05-13":{"id":"openai/gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":5,"output":15},"canonical_model_id":"openai/gpt-4o-2024-05-13"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4 Mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3 Mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 Nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/gpt-5.2-chat-latest":{"id":"openai/gpt-5.2-chat-latest","name":"GPT-5.2 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-chat-latest"},"openai/gpt-5.1-chat-latest":{"id":"openai/gpt-5.1-chat-latest","name":"GPT-5.1 Chat Latest","description":"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-chat-latest"},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-5-chat-latest":{"id":"openai/gpt-5-chat-latest","name":"GPT-5 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5-chat-latest"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o Mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT-OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.04,"output":0.15,"cache_read":0.02},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-safeguard-20b":{"id":"openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.07,"output":0.2,"cache_read":0,"cache_write":0},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 Mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5.3-chat-latest":{"id":"openai/gpt-5.3-chat-latest","name":"GPT-5.3 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-chat-latest"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.05,"output":0.25},"canonical_model_id":"openai/gpt-oss-120b"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":2.9,"output":14,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshot/kimi-k2.5":{"id":"moonshot/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1,"max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"opper":{"id":"opper","env":["OPPER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.opper.ai/v3/compat","name":"Opper","doc":"https://opper.ai/models","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.46488,"output":2.44062},"canonical_model_id":"google/gemma-4-31b-it"},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.5811,"output":3},"canonical_model_id":"alibaba/qwen3.8-27b"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.5-pro"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":2.5,"output":6,"cache_read":0.63},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.2,"output":0.5,"cache_read":0.07},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.5811,"output":2.3244},"canonical_model_id":"alibaba/qwen3-coder-next"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125,"tiers":[{"input":6.6,"output":24.75,"cache_read":0.66,"cache_write":8.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6.6,"output":24.75,"cache_read":0.66,"cache_write":8.25}},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-2512"},"sonar-pro":{"id":"sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8000},"cost":{"input":3,"output":15},"canonical_model_id":"perplexity/sonar-pro"},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.11622,"output":0.488124},"canonical_model_id":"openai/gpt-oss-20b"},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.69732,"output":2.78928},"canonical_model_id":"minimax/MiniMax-M2.7"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15},"canonical_model_id":"google/gemini-3.5-flash"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.12,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.24,"tier":{"type":"context","size":524288}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.24}},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.5811,"output":2.44062},"canonical_model_id":"mistral/mistral-small-2603"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.62708,"output":5.811},"canonical_model_id":"zhipuai/glm-5.2"},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"sonar":{"id":"sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1},"canonical_model_id":"perplexity/sonar"},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-2512"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"canonical_model_id":"google/gemini-3.8-flash"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":1.78812,"output":3.57624},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-chat-latest"},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8},"canonical_model_id":"perplexity/sonar-reasoning-pro"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":1.1622,"output":4.88124},"canonical_model_id":"openai/gpt-oss-120b"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.75,"output":4.6488,"cache_read":0.44},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":12.5}},"canonical_model_id":"openai/gpt-5.6-sol"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.25,"output":0.66},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"nvidia":{"id":"nvidia","env":["NVIDIA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://integrate.api.nvidia.com/v1","name":"Nvidia","doc":"https://docs.api.nvidia.com/nim/","models":{"baai/bge-m3":{"id":"baai/bge-m3","name":"BGE M3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0,"output":0}},"poolside/laguna-xs-2.1":{"id":"poolside/laguna-xs-2.1","name":"Laguna XS 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-02","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-xs-2.1"},"abacusai/dracarys-llama-3.1-70b-instruct":{"id":"abacusai/dracarys-llama-3.1-70b-instruct","name":"dracarys-llama-3.1-70b-instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-09-11","last_updated":"2025-05-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3"},"thinkingmachines/inkling":{"id":"thinkingmachines/inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":16384},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"thinkingmachines/inkling"},"black-forest-labs/flux_1-schnell":{"id":"black-forest-labs/flux_1-schnell","name":"FLUX.1-schnell","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2024-07","release_date":"2024-08-01","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":77,"input":77,"output":0},"cost":{"input":0,"output":0}},"black-forest-labs/flux.1-dev":{"id":"black-forest-labs/flux.1-dev","name":"FLUX.1-dev","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["image"]},"open_weights":false,"limit":{"context":4096,"output":0},"cost":{"input":0,"output":0}},"black-forest-labs/flux_1-kontext-dev":{"id":"black-forest-labs/flux_1-kontext-dev","name":"FLUX.1-Kontext-dev","description":"Image model for prompt-driven generation, editing, and visual design workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image"],"output":["image"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0}},"black-forest-labs/flux_2-klein-4b":{"id":"black-forest-labs/flux_2-klein-4b","name":"FLUX.2 Klein 4B","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-06","release_date":"2026-01-14","last_updated":"2026-01-31","modalities":{"input":["image","text"],"output":["image"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0,"output":0}},"meta/llama-guard-4-12b":{"id":"meta/llama-guard-4-12b","name":"Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"meta/muse-glimmer-30b":{"id":"meta/muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"meta/muse-glimmer-30b"},"meta/esmfold":{"id":"meta/esmfold","name":"esmfold","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-03-15","last_updated":"2025-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"meta/llama-3.3-70b-instruct":{"id":"meta/llama-3.3-70b-instruct","name":"Llama 3.3 70b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-26","last_updated":"2024-11-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"meta/llama-3.2-90b-vision-instruct":{"id":"meta/llama-3.2-90b-vision-instruct","name":"Llama-3.2-90B-Vision-Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"meta/llama-4-maverick-17b-128e-instruct":{"id":"meta/llama-4-maverick-17b-128e-instruct","name":"Llama 4 Maverick 17b 128e Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-02","release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"meta/llama-3.1-8b-instruct":{"id":"meta/llama-3.1-8b-instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"meta/llama-3.2-11b-vision-instruct":{"id":"meta/llama-3.2-11b-vision-instruct","name":"Llama 3.2 11b Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"meta/llama-3.2-1b-instruct":{"id":"meta/llama-3.2-1b-instruct","name":"Llama 3.2 1b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"meta/llama-3.2-3b-instruct":{"id":"meta/llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"status":"deprecated","cost":{"input":0,"output":0}},"meta/llama-3.1-70b-instruct":{"id":"meta/llama-3.1-70b-instruct","name":"Llama 3.1 70b Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-16","last_updated":"2024-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"meta/esm2-650m":{"id":"meta/esm2-650m","name":"esm2-650m","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-08-29","last_updated":"2025-03-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"upstage/solar-10.7b-instruct":{"id":"upstage/solar-10.7b-instruct","name":"solar-10.7b-instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-06-05","last_updated":"2025-04-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"bytedance/seed-oss-36b-instruct":{"id":"bytedance/seed-oss-36b-instruct","name":"ByteDance-Seed/Seed-OSS-36B-Instruct","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"seed","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-04","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"status":"deprecated","cost":{"input":0,"output":0}},"google/diffusiongemma-26b-a4b-it":{"id":"google/diffusiongemma-26b-a4b-it","name":"DiffusionGemma 26B A4B IT","description":"Gemma 4 based discrete text diffusion model for fast chat, reasoning, and tool use","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-09","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":250000,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/diffusiongemma-26b-a4b-it"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma-4-31B-IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0,"output":0}},"google/gemma-2-2b-it":{"id":"google/gemma-2-2b-it","name":"Gemma 2 2b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-16","last_updated":"2024-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"google/gemma-3-12b-it":{"id":"google/gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"google/gemma-3n-e2b-it":{"id":"google/gemma-3n-e2b-it","name":"Gemma 3n E2b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-06-12","last_updated":"2025-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"google/google-paligemma":{"id":"google/google-paligemma","name":"paligemma","description":"Gemini multimodal model for text, image, audio, video, and document tasks","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-05-14","last_updated":"2024-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"google/gemma-3n-e4b-it":{"id":"google/gemma-3n-e4b-it","name":"Gemma 3n E4b It","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-06-03","last_updated":"2025-06-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"google/gemma-3-4b-it":{"id":"google/gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"minimaxai/minimax-m2.7":{"id":"minimaxai/minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-04-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0,"output":0}},"minimaxai/minimax-m3":{"id":"minimaxai/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":16384},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"minimax/MiniMax-M3"},"deepseek-ai/deepseek-v4-flash-0731":{"id":"deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/deepseek-v4.1-flash":{"id":"deepseek-ai/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/deepseek-v4-pro-0813":{"id":"deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/deepseek-v4-pro":{"id":"deepseek-ai/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"status":"deprecated","cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/deepseek-v4-flash":{"id":"deepseek-ai/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"stepfun-ai/step-3.5-flash":{"id":"stepfun-ai/step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"stepfun-ai/step-3.7-flash":{"id":"stepfun-ai/step-3.7-flash","name":"Step 3.7 Flash","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/mistral-nemotron":{"id":"mistralai/mistral-nemotron","name":"mistral-nemotron","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-06-11","last_updated":"2025-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/mistral-nemotron"},"mistralai/mistral-7b-instruct-v0.3":{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral-7B-Instruct-v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0,"output":0}},"mistralai/mistral-large-3-675b-instruct-2512":{"id":"mistralai/mistral-large-3-675b-instruct-2512","name":"Mistral Large 3 675B Instruct 2512","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/magistral-small-2506":{"id":"mistralai/magistral-small-2506","name":"Magistral Small 2506","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":0,"output":0}},"mistralai/mistral-small-4-119b-2603":{"id":"mistralai/mistral-small-4-119b-2603","name":"mistral-small-4-119b-2603","description":"Efficient Mistral model for fast chat, extraction, and production assistants","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/mixtral-8x7b-instruct":{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2023-12-10","last_updated":"2026-03-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/mistral-medium-3.5-128b":{"id":"mistralai/mistral-medium-3.5-128b","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"mistral/mistral-medium-2604"},"mistralai/ministral-14b-instruct-2512":{"id":"mistralai/ministral-14b-instruct-2512","name":"Ministral 3 14B Instruct 2512","description":"Compact Mistral VLM for chat and instruction-based workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/mixtral-8x22b-instruct":{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":13108},"status":"deprecated","cost":{"input":0,"output":0}},"mistralai/mistral-medium-3-instruct":{"id":"mistralai/mistral-medium-3-instruct","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-09-25","last_updated":"2025-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"input":131072,"output":32768},"cost":{"input":0,"output":0}},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0}},"sarvamai/sarvam-m":{"id":"sarvamai/sarvam-m","name":"sarvam-m","description":"Efficient Indian-language reasoning model for chat, coding, and multilingual work","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"nvidia/nvidia-nemotron-nano-9b-v2":{"id":"nvidia/nvidia-nemotron-nano-9b-v2","name":"nvidia-nemotron-nano-9b-v2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-nano-9b-v2"},"nvidia/llama-3.1-nemotron-ultra-253b-v1":{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1","name":"Llama 3.1 Nemotron Ultra 253B","description":"Flagship Nemotron model for high-throughput reasoning and complex agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-04-07","last_updated":"2025-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-3.1-nemotron-ultra-253b"},"nvidia/sparsedrive":{"id":"nvidia/sparsedrive","name":"sparsedrive","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-07-20","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-nano-30b-a3b":{"id":"nvidia/nemotron-3-nano-30b-a3b","name":"nemotron-3-nano-30b-a3b","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/nemotron-3.5-lightning-30b-a3b":{"id":"nvidia/nemotron-3.5-lightning-30b-a3b","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/llama-nemotron-embed-vl-1b-v2":{"id":"nvidia/llama-nemotron-embed-vl-1b-v2","name":"llama-nemotron-embed-vl-1b-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"nemotron","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-10","last_updated":"2026-02-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-nemotron-embed-vl-1b-v2"},"nvidia/nv-embedcode-7b-v1":{"id":"nvidia/nv-embedcode-7b-v1","name":"nv-embedcode-7b-v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-03-17","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/nemotron-voicechat":{"id":"nvidia/nemotron-voicechat","name":"nemotron-voicechat","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-voicechat"},"nvidia/bevformer":{"id":"nvidia/bevformer","name":"bevformer","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-07-20","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/cosmos-transfer1-7b":{"id":"nvidia/cosmos-transfer1-7b","name":"cosmos-transfer1-7b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-13","last_updated":"2025-06-30","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/cosmos-predict1-5b":{"id":"nvidia/cosmos-predict1-5b","name":"cosmos-predict1-5b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-03-18","last_updated":"2025-03-18","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-nano-vl-8b-v1":{"id":"nvidia/llama-3.1-nemotron-nano-vl-8b-v1","name":"Llama 3.1 Nemotron Nano VL 8B v1","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-10","last_updated":"2025-04-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"nvidia/nemotron-3-super-120b-a12b":{"id":"nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.8},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nvidia/studiovoice":{"id":"nvidia/studiovoice","name":"studiovoice","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-10-03","last_updated":"2025-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/nemotron-content-safety-reasoning-4b":{"id":"nvidia/nemotron-content-safety-reasoning-4b","name":"nemotron-content-safety-reasoning-4b","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":false,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-content-safety-reasoning-4b"},"nvidia/llama-3.1-nemotron-safety-guard-8b-v3":{"id":"nvidia/llama-3.1-nemotron-safety-guard-8b-v3","name":"llama-3.1-nemotron-safety-guard-8b-v3","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-3.1-nemotron-safety-guard-8b-v3"},"nvidia/nv-embed-v1":{"id":"nvidia/nv-embed-v1","name":"nv-embed-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-06-07","last_updated":"2025-07-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/synthetic-video-detector":{"id":"nvidia/synthetic-video-detector","name":"synthetic-video-detector","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/cosmos-transfer2_5-2b":{"id":"nvidia/cosmos-transfer2_5-2b","name":"cosmos-transfer2.5-2b","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["text","image","video"],"output":["video"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":2.5,"cache_read":0.15},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":-1,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"nvidia/llama-3.1-nemotron-nano-8b-v1":{"id":"nvidia/llama-3.1-nemotron-nano-8b-v1","name":"Llama 3.1 Nemotron Nano 8B v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-03-18","last_updated":"2025-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"nvidia/active-speaker-detection":{"id":"nvidia/active-speaker-detection","name":"Active Speaker Detection","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/streampetr":{"id":"nvidia/streampetr","name":"streampetr","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}},"nvidia/llama-nemotron-rerank-vl-1b-v2":{"id":"nvidia/llama-nemotron-rerank-vl-1b-v2","name":"llama-nemotron-rerank-vl-1b-v2","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"nemotron","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-31","last_updated":"2026-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-nemotron-rerank-vl-1b-v2"},"nvidia/nemotron-mini-4b-instruct":{"id":"nvidia/nemotron-mini-4b-instruct","name":"nemotron-mini-4b-instruct","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-08-21","last_updated":"2024-08-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-mini-4b-instruct"},"nvidia/cosmos-reason2-8b":{"id":"nvidia/cosmos-reason2-8b","name":"Cosmos Reason2 8B","description":"Vision language model for physical-world understanding with structured reasoning on video and images","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0}},"nvidia/nemotron-3-content-safety":{"id":"nvidia/nemotron-3-content-safety","name":"nemotron-3-content-safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-content-safety"},"nvidia/llama-3.3-nemotron-super-49b-v1":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1","name":"Llama 3.3 Nemotron Super 49B v1","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-04-07","last_updated":"2025-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-3.3-nemotron-super-49b-v1"},"nvidia/magpie-tts-zeroshot":{"id":"nvidia/magpie-tts-zeroshot","name":"magpie-tts-zeroshot","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-05-22","last_updated":"2025-06-12","modalities":{"input":["text","audio"],"output":["audio"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/riva-translate-4b-instruct-v1.1":{"id":"nvidia/riva-translate-4b-instruct-v1.1","name":"riva-translate-4b-instruct-v1_1","description":"Translation model for multilingual conversion, localization, and cross-language workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-12","last_updated":"2025-12-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/nemotron-nano-12b-v2-vl":{"id":"nvidia/nemotron-nano-12b-v2-vl","name":"Nemotron Nano 12B v2 VL","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-nano-12b-v2-vl"},"nvidia/nemotron-3.5-content-safety":{"id":"nvidia/nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{"id":"nvidia/llama-3.3-nemotron-super-49b-v1.5","name":"Llama 3.3 Nemotron Super 49B v1.5","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-3.3-nemotron-super-49b-v1.5"},"nvidia/llama-3_2-nemoretriever-300m-embed-v1":{"id":"nvidia/llama-3_2-nemoretriever-300m-embed-v1","name":"llama-3_2-nemoretriever-300m-embed-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-07-24","last_updated":"2025-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0,"output":0}},"nvidia/gliner-pii":{"id":"nvidia/gliner-pii","name":"gliner-pii","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"nvidia/usdcode":{"id":"nvidia/usdcode","name":"usdcode","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-01","last_updated":"2026-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"nvidia/usdvalidate":{"id":"nvidia/usdvalidate","name":"usdvalidate","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-24","last_updated":"2025-01-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"nvidia/llama-3.1-nemotron-70b-instruct":{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"Llama 3.1 Nemotron 70B Instruct","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/llama-3.1-nemotron-70b-instruct"},"nvidia/rerank-qa-mistral-4b":{"id":"nvidia/rerank-qa-mistral-4b","name":"rerank-qa-mistral-4b","description":"Reranking model for improving retrieval quality in search and recommendation systems","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-17","last_updated":"2025-01-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0,"output":0}},"qwen/qwen-image-edit":{"id":"qwen/qwen-image-edit","name":"Qwen Image Edit","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-19","last_updated":"2025-08-19","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"qwen/qwen3-coder-480b-a35b-instruct":{"id":"qwen/qwen3-coder-480b-a35b-instruct","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":66536},"status":"deprecated","cost":{"input":0,"output":0}},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0,"output":0}},"qwen/qwen3-next-80b-a3b-instruct":{"id":"qwen/qwen3-next-80b-a3b-instruct","name":"Qwen3-Next-80B-A3B-Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"qwen/qwen2.5-coder-32b-instruct":{"id":"qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32b Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-06","last_updated":"2024-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":0,"output":0}},"qwen/qwen-image":{"id":"qwen/qwen-image","name":"Qwen Image","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"qwen","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":0,"output":0}},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper Large v3","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2023-09","release_date":"2023-09-01","last_updated":"2025-09-05","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":0,"output":4096},"cost":{"input":0,"output":0}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"microsoft/phi-4-mini-instruct":{"id":"microsoft/phi-4-mini-instruct","name":"Phi-4-Mini","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"phi","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"status":"deprecated","cost":{"input":0,"output":0}},"microsoft/phi-4-multimodal-instruct":{"id":"microsoft/phi-4-multimodal-instruct","name":"Phi 4 Multimodal","description":"General-purpose chat model for instruction following, writing, and analysis","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":16384},"status":"deprecated","cost":{"input":0,"output":0}}}},"pioneer":{"id":"pioneer","env":["PIONEER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.fastino.ai/v1","name":"Pioneer","doc":"https://agent.pioneer.ai/llms.txt","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.4"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":991000,"output":64000},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":1.5625},"canonical_model_id":"alibaba/qwen3.7-max"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25,"cache_write":2.5},"canonical_model_id":"openai/gpt-4o"},"ministral-3b":{"id":"ministral-3b","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"mistral/ministral-3b"},"magistral-medium":{"id":"magistral-medium","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":2,"output":5,"cache_read":2,"cache_write":2},"canonical_model_id":"mistral/magistral-medium-latest"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025,"cache_write":0.25},"canonical_model_id":"openai/gpt-5-mini"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"claude-3-7-sonnet-latest":{"id":"claude-3-7-sonnet-latest","name":"Claude Sonnet 3.7","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-3-7-sonnet-20250219"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175,"cache_write":1.75},"canonical_model_id":"openai/gpt-5.3-codex"},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.05,"cache_write":0.1},"canonical_model_id":"openai/gpt-4.1-nano"},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":1.5,"output":7.5,"cache_read":1.5,"cache_write":1.5},"canonical_model_id":"mistral/mistral-medium-2604"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005,"cache_write":0.05},"canonical_model_id":"openai/gpt-5-nano"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"cache_write":1.5},"canonical_model_id":"google/gemini-3.6-flash"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"canonical_model_id":"xai/grok-4.5"},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":131072},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25},"canonical_model_id":"openai/gpt-5.1"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15},"canonical_model_id":"openai/gpt-4o-mini"},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.083333},"canonical_model_id":"google/gemini-3-flash-preview"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.083333},"canonical_model_id":"google/gemini-3.5-flash"},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_read":0.0375,"cache_write":0.234375},"canonical_model_id":"alibaba/qwen3.6-flash"},"mistral-large-3":{"id":"mistral-large-3","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5},"canonical_model_id":"mistral/mistral-large-2512"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"openai/gpt-5.6-luna"},"devstral-small-2":{"id":"devstral-small-2","name":"Devstral Small 2","description":"Compact multimodal coding model for repository exploration, file editing, and software agents","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"mistral/devstral-small-2"},"devstral-2":{"id":"devstral-2","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.4,"cache_write":0.4},"canonical_model_id":"mistral/devstral-2512"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"canonical_model_id":"openai/gpt-5.5"},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":1,"cache_write":2},"canonical_model_id":"openai/gpt-4.1"},"mistral-medium":{"id":"mistral-medium","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.4,"output":2,"cache_read":0.4,"cache_write":0.4},"canonical_model_id":"mistral/mistral-medium-2505"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":240000,"output":64000},"cost":{"input":1.04,"output":6.24,"cache_read":0.208,"cache_write":1.3},"canonical_model_id":"alibaba/qwen3.6-max-preview"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.2,"cache_write":0.4},"canonical_model_id":"openai/gpt-4.1-mini"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-opus-5-fast":{"id":"claude-opus-5-fast","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-opus-5"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.325,"output":1.95,"cache_read":0.065,"cache_write":0.40625},"canonical_model_id":"alibaba/qwen3.6-plus"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-terra"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"ministral-14b":{"id":"ministral-14b","name":"Ministral 14B","description":"Compact multimodal Mistral model for local assistants, edge agents, and efficient tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":131072},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"canonical_model_id":"mistral/ministral-14b"},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":0.375},"canonical_model_id":"google/gemini-3.1-pro-preview"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.28,"cache_read":0.064,"cache_write":0.4},"canonical_model_id":"alibaba/qwen3.7-plus"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"openai/gpt-5.6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65000},"cost":{"input":0.25,"output":1.5,"cache_read":0.03,"cache_write":0.25},"canonical_model_id":"google/gemini-3.1-flash-lite"},"poolside/laguna-s-2.1":{"id":"poolside/laguna-s-2.1","name":"Laguna S 2.1","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.01,"cache_write":0.1},"canonical_model_id":"poolside/laguna-s-2.1"},"meta-llama/Llama-3.2-1B-Instruct":{"id":"meta-llama/Llama-3.2-1B-Instruct","name":"Llama 3.2 1B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-31","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":60000},"cost":{"input":0.1,"output":0.201,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.2-3B-Instruct":{"id":"meta-llama/Llama-3.2-3B-Instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-08-31","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":80000},"cost":{"input":0.1,"output":0.335,"cache_read":0.1,"cache_write":0.1}},"meta-llama/Llama-3.1-8B-Instruct":{"id":"meta-llama/Llama-3.1-8B-Instruct","name":"Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2023-12-31","release_date":"2024-06-30","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"meta-llama/Llama-3.2-3B":{"id":"meta-llama/Llama-3.2-3B","name":"Llama-3.2-3B","description":"Small open Llama base model for lightweight text generation and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"meta/llama-3.2-3b"},"meta-llama/Llama-3.2-1B":{"id":"meta-llama/Llama-3.2-1B","name":"Llama-3.2-1B","description":"Compact open Llama base model for lightweight and on-device use","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"meta/llama-3.2-1b"},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"XiaomiMiMo/MiMo-V2.5-Pro":{"id":"XiaomiMiMo/MiMo-V2.5-Pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131000},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"cache_write":0.435},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"XiaomiMiMo/MiMo-V2.5":{"id":"XiaomiMiMo/MiMo-V2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028,"cache_write":0.14},"canonical_model_id":"xiaomi/mimo-v2.5"},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.5,"output":1.2,"cache_read":0.1,"cache_write":0.5},"canonical_model_id":"thinkingmachines/inkling-small"},"meta/muse-spark-1.1":{"id":"meta/muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15,"cache_write":1.25},"canonical_model_id":"meta/muse-spark-1.1"},"HuggingFaceTB/SmolLM3-3B-Base":{"id":"HuggingFaceTB/SmolLM3-3B-Base","name":"SmolLM3 3B Base","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"google/diffusiongemma-26B-A4B-it":{"id":"google/diffusiongemma-26B-A4B-it","name":"DiffusionGemma 26B-A4B IT","description":"Gemini model for general assistance, reasoning, and multimodal workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5}},"google/gemma-4-12B-it":{"id":"google/gemma-4-12B-it","name":"Gemma 4 12B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.25,"cache_read":0.25,"cache_write":0.25}},"google/gemma-4-E2B-it":{"id":"google/gemma-4-E2B-it","name":"Gemma 4 E2B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"google/gemma-4-E2B-it"},"google/gemma-3-4b-pt":{"id":"google/gemma-3-4b-pt","name":"Gemma 3 4B (Pretrained)","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-02-28","last_updated":"2025-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemma-4-E4B-it":{"id":"google/gemma-4-E4B-it","name":"Gemma 4 E4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2},"canonical_model_id":"google/gemma-4-E4B-it"},"Qwen/Qwen3-4B-Instruct-2507":{"id":"Qwen/Qwen3-4B-Instruct-2507","name":"Qwen3 4B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"Qwen/Qwen2.5-Coder-0.5B":{"id":"Qwen/Qwen2.5-Coder-0.5B","name":"Qwen2.5-Coder-0.5B","description":"Tiny open Qwen code model for lightweight completion and on-device coding","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1},"canonical_model_id":"alibaba/qwen2.5-coder-0.5b"},"Qwen/Qwen3-1.7B-Base":{"id":"Qwen/Qwen3-1.7B-Base","name":"Qwen3 1.7B Base","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1,"cache_write":0.1}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.14,"output":1,"cache_read":0.028,"cache_write":0.175},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":1.2,"output":1.2,"cache_read":1.2,"cache_write":1.2},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"Qwen/Qwen3-8B":{"id":"Qwen/Qwen3-8B","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-03-31","release_date":"2025-03-31","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"Qwen/Qwen3-4B-Base":{"id":"Qwen/Qwen3-4B-Base","name":"Qwen3 4B Base","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"Qwen/Qwen3-32B":{"id":"Qwen/Qwen3-32B","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.9,"output":0.9,"cache_read":0.9,"cache_write":0.9},"canonical_model_id":"alibaba/qwen3-32b"},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3,"cache_read":0.3,"cache_write":0.3},"canonical_model_id":"alibaba/qwen3.5-9b"},"Qwen/Qwen3.6-27B":{"id":"Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.6,"output":0.6,"cache_read":0.6,"cache_write":0.6},"canonical_model_id":"alibaba/qwen3.6-27b"},"LiquidAI/LFM2-24B-A2B":{"id":"LiquidAI/LFM2-24B-A2B","name":"LFM2 24B A2B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"liquid","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-01-31","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12,"cache_read":0.03,"cache_write":0.03}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":131072},"cost":{"input":0.56,"output":1.68,"cache_read":0.56,"cache_write":0.56},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek-ai/DeepSeek-V4-Flash":{"id":"deepseek-ai/DeepSeek-V4-Flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.1,"output":0.2,"cache_read":0.0197,"cache_write":0.1},"canonical_model_id":"deepseek/deepseek-v4-flash"},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625,"cache_write":0.435},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.27,"output":1.12,"cache_read":0.135,"cache_write":0.27},"canonical_model_id":"deepseek/deepseek-v3"},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.3},"canonical_model_id":"minimax/MiniMax-M3"},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131000},"cost":{"input":0.279,"output":1.2,"cache_read":0.279,"cache_write":0.279},"canonical_model_id":"minimax/MiniMax-M2.7"},"mistralai/Mistral-Small-4-119B-2603":{"id":"mistralai/Mistral-Small-4-119B-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15},"canonical_model_id":"mistral/mistral-small-2603"},"mistralai/Pixtral-12B-2409":{"id":"mistralai/Pixtral-12B-2409","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"canonical_model_id":"mistral/pixtral-12b"},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03,"cache_read":0.02,"cache_write":0.02},"canonical_model_id":"mistral/mistral-nemo"},"mistralai/Magistral-Small-2506":{"id":"mistralai/Magistral-Small-2506","name":"Magistral Small","description":"Open Mistral reasoning model for transparent step-by-step problem solving","family":"magistral","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0.5,"output":1.5,"cache_read":0.5,"cache_write":0.5},"canonical_model_id":"mistral/magistral-small-2506"},"mistralai/Ministral-8B-Instruct-2410":{"id":"mistralai/Ministral-8B-Instruct-2410","name":"Ministral 8B Instruct","description":"Efficient open Mistral edge model for on-device chat and function calling","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-10-16","last_updated":"2024-10-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15},"canonical_model_id":"mistral/ministral-8b-instruct-2410"},"mistralai/Codestral-22B-v0.1":{"id":"mistralai/Codestral-22B-v0.1","name":"Codestral-22B-v0.1","description":"Open Mistral code model for fill-in-the-middle and 80+ programming languages","family":"codestral","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2024-05-29","last_updated":"2024-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.3,"output":0.9,"cache_read":0.3,"cache_write":0.3},"canonical_model_id":"mistral/codestral-22b-v0.1"},"mistralai/Mistral-7B-Instruct-v0.3":{"id":"mistralai/Mistral-7B-Instruct-v0.3","name":"Mistral 7B Instruct v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2023-04-30","last_updated":"2023-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.2,"output":0.2,"cache_read":0.2,"cache_write":0.2}},"sakana/fugu-ultra":{"id":"sakana/fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5},"canonical_model_id":"sakana/fugu-ultra"},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":131072},"cost":{"input":0.95,"output":4,"cache_read":0.34,"cache_write":0.95},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K3-Fast":{"id":"moonshotai/Kimi-K3-Fast","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45,"cache_write":4.5},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.95,"output":4,"cache_read":0.19,"cache_write":0.95},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":131072},"cost":{"input":0.98,"output":3.08,"cache_read":0.182,"cache_write":0.98},"canonical_model_id":"zhipuai/glm-5.1"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1040000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":1.4},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.2-Fast":{"id":"zai-org/GLM-5.2-Fast","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":2.1,"output":6.6,"cache_read":0.21,"cache_write":2.1},"canonical_model_id":"zhipuai/glm-5.2"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.05,"output":0.2,"cache_read":0.05,"cache_write":0.05},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":4096},"cost":{"input":0.5,"output":0.5,"cache_read":0.5,"cache_write":0.5},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65000},"cost":{"input":0.5,"output":2.5,"cache_read":0.15,"cache_write":0.5},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8":{"id":"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.09,"output":0.45,"cache_read":0.09,"cache_write":0.09},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"pioneer/auto":{"id":"pioneer/auto","name":"Pioneer Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2025-06-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":4096}},"fastino/gliner2-multi-v1":{"id":"fastino/gliner2-multi-v1","name":"GLiNER2 Multi","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-11-30","last_updated":"2025-11-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2.5-base-v1":{"id":"fastino/gliner2.5-base-v1","name":"GLiNER 2.5 Base","description":"English boundary NER and structured extraction with LoRA fine-tuning.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-24","last_updated":"2026-08-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.03,"output":0,"cache_read":0.03,"cache_write":0.03}},"fastino/gliner2-privacy-filter-PII-multi":{"id":"fastino/gliner2-privacy-filter-PII-multi","name":"GLiNER2 Privacy Filter PII (Multi)","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2.5-multi-v1":{"id":"fastino/gliner2.5-multi-v1","name":"GLiNER 2.5 Multi","description":"Multilingual boundary NER and span extraction; non-trainable encoder.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-08-24","last_updated":"2026-08-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliguard-LLMGuardrails-300M":{"id":"fastino/gliguard-LLMGuardrails-300M","name":"GLiGuard LLM Guardrails 300M","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-large-v1":{"id":"fastino/gliner2-large-v1","name":"GLiNER2 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-base-v1":{"id":"fastino/gliner2-base-v1","name":"GLiNER2 Base","description":"Tool-capable chat model for instruction following and agentic application workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliguard-PII-multi":{"id":"fastino/gliguard-PII-multi","name":"GLiNER2-Guardrails-PII-Multi","description":"A 300M-parameter multilingual model that runs LLM safety moderation and PII detection in a single forward pass.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/gliner2-multi-large-v1":{"id":"fastino/gliner2-multi-large-v1","name":"GLiNER2 Multi Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-11-30","last_updated":"2025-11-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"fastino/GLiNER-2.5-Decide":{"id":"fastino/GLiNER-2.5-Decide","name":"GLiNER-2.5-Decide","description":"Classification-tuned GLiNER2 large. Entities, relations, and JSON extraction still work.","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-24","last_updated":"2026-09-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0.15,"output":0.15,"cache_read":0.15,"cache_write":0.15}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.035,"cache_write":0.07},"canonical_model_id":"openai/gpt-oss-20b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6,"cache_read":0.015,"cache_write":0.15},"canonical_model_id":"openai/gpt-oss-120b"}}},"xiaomi":{"id":"xiaomi","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.xiaomimimo.com/v1","name":"Xiaomi","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"MiMo Pro model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","description":"Legacy model retained for compatibility with older integrations","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-16","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-06-24","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","description":"Legacy model retained for compatibility with older integrations","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-06-24","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"status":"deprecated","cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.6-pro-ultraspeed":{"id":"mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-06-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036}},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-06-08","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"beta","cost":{"input":1.305,"output":2.61,"cache_read":0.0108}}}},"xiaomi-token-plan-sgp":{"id":"xiaomi-token-plan-sgp","env":["XIAOMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://token-plan-sgp.xiaomimimo.com/v1","name":"Xiaomi Token Plan (Singapore)","doc":"https://platform.xiaomimimo.com/#/docs","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"mimo-v2.5-tts-voiceclone":{"id":"mimo-v2.5-tts-voiceclone","name":"MiMo-V2.5-TTS-VoiceClone","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"mimo-v2-tts":{"id":"mimo-v2-tts","name":"MiMo-V2-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","description":"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2-pro"},"mimo-v2.5-tts":{"id":"mimo-v2.5-tts","name":"MiMo-V2.5-TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5-tts-voicedesign":{"id":"mimo-v2.5-tts-voicedesign","name":"MiMo-V2.5-TTS-VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"mimo","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":8192,"output":8192},"cost":{"input":0,"output":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.5"}}},"minimax":{"id":"minimax","env":["MINIMAX_API_KEY"],"npm":"@ai-sdk/anthropic","api":"https://api.minimax.io/anthropic/v1","name":"MiniMax (minimax.io)","doc":"https://platform.minimax.io/docs/guides/quickstart","models":{"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"MiniMax-M2.1":{"id":"MiniMax-M2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375}},"MiniMax-M2.7":{"id":"MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2.7-highspeed":{"id":"MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375}},"MiniMax-M2":{"id":"MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"MiniMax-M2.5-highspeed":{"id":"MiniMax-M2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375}}}},"github-copilot":{"id":"github-copilot","env":["GITHUB_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://api.githubcopilot.com","name":"GitHub Copilot","doc":"https://docs.github.com/en/copilot","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":372000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"claude-opus-4.7":{"id":"claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":32000},"experimental":{"modes":{"fast":{"cost":{"input":30,"output":150,"cache_read":3,"cache_write":37.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"claude-haiku-5.5":{"id":"claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":264000,"input":128000,"output":64000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":64000},"experimental":{"modes":{"fast":{"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"provider":{"body":{"speed":"fast"},"headers":{"anthropic-beta":"fast-mode-2026-02-01"}}}}},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":256,"max":32000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.6-flash"},"mai-code-1-flash-picker":{"id":"mai-code-1-flash-picker","name":"MAI-Code-1-Flash","description":"Microsoft coding model built for fast, efficient assistance in everyday developer workflows","family":"mai","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-06-02","last_updated":"2026-06-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"microsoft/mai-code-1-flash"},"mai-code-1.1-flash":{"id":"mai-code-1.1-flash","name":"MAI-Code-1.1-Flash","description":"Microsoft coding model with native vision support, optimized for fast and efficient software development","family":"mai","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"input":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02},"canonical_model_id":"microsoft/mai-code-1.1-flash"},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":136000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":372000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.5"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-sonnet-5.5":{"id":"claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":256,"max":24000}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":128000,"output":64000},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"claude-fable-5.1":{"id":"claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"claude-sonnet-4.6":{"id":"claude-sonnet-4.6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024,"max":32000}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":168000,"output":32000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":936000,"output":64000},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"claude-opus-5.5":{"id":"claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic","api":"https://api.githubcopilot.com/v1"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":224000,"output":32000},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"input":372000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"inferx":{"id":"inferx","env":["INFERX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://model.inferx.net/endpoints/v1","name":"InferX","doc":"https://model.inferx.net/endpoints","models":{"gemma-4-31B-it-fp8":{"id":"gemma-4-31B-it-fp8","name":"Gemma 4 31B IT FP8","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"Qwen3.6-35B-A3B-fp8-no-thinking":{"id":"Qwen3.6-35B-A3B-fp8-no-thinking","name":"Qwen3.6-35B-A3B-fp8-no-thinking","description":"Qwen3.6-35B-A3B-fp8 disable thinking","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Devstral-2-123B-Instruct-2512-int4-AutoRound":{"id":"Devstral-2-123B-Instruct-2512-int4-AutoRound","name":"Devstral-2-123B-Instruct-2512-int4-AutoRound","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"mistral/devstral-2512"},"Qwen3.6-27B-FP8":{"id":"Qwen3.6-27B-FP8","name":"Qwen3.6 27B FP8","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-27b"},"Qwen3-Coder-Next-FP8":{"id":"Qwen3-Coder-Next-FP8","name":"Qwen3 Coder Next FP8","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256144,"output":65536},"cost":{"input":0,"output":0}},"Qwen3-Coder-Next-FP8-no-thinking":{"id":"Qwen3-Coder-Next-FP8-no-thinking","name":"Qwen3-Coder-Next-FP8-no-thinking","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":260000,"output":65536},"cost":{"input":0,"output":0}},"mimo-v25":{"id":"mimo-v25","name":"mimo-v25","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"Qwen3-Embedding-8B":{"id":"Qwen3-Embedding-8B","name":"Qwen3-Embedding-8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-05","last_updated":"2025-06-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":0},"cost":{"input":0,"output":0}},"Qwen3.6-35B-A3B-FP8":{"id":"Qwen3.6-35B-A3B-FP8","name":"Qwen3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Ornith-1.0-35B-FP8":{"id":"Ornith-1.0-35B-FP8","name":"Ornith-1.0-35B-FP8","description":"Large coding-reasoning model for agentic software tasks and RL search","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-25","last_updated":"2026-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0},"canonical_model_id":"deepreinforce/ornith-1.0-35b"},"Agents-A1":{"id":"Agents-A1","name":"Agents-A1","description":"35B MoE agentic model built for long-horizon search, engineering, and scientific reasoning tasks","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"release_date":"2026-06-26","last_updated":"2026-06-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":100000},"cost":{"input":0,"output":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"deepseek-v4-flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":100000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"opencode-go":{"id":"opencode-go","env":["OPENCODE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://opencode.ai/zen/go/v1","name":"OpenCode Go","doc":"https://opencode.ai/docs/go","models":{"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"qwen3.7-max","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"status":"deprecated","cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo V2.5","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo-v2.5","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028}},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"longcat-2.5-preview-free":{"id":"longcat-2.5-preview-free","name":"LongCat 2.5 Preview Free","description":"Meituan's multimodal reasoning model for coding and agent tasks, with image understanding and a 1M-token context window","family":"longcat","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"meituan/longcat-2.5-preview"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter multimodal flagship for coding, professional work, and long-horizon agentic workflows","family":"qwen3.8-max","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.95,"output":4,"cache_read":0.16}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"meituan/longcat-2.0"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"space-bunny":{"id":"space-bunny","name":"Space Bunny","description":"Anonymous preview reasoning model for coding, agentic tasks, tool use, and multimodal input","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":524288,"output":524288},"cost":{"input":0.15,"output":0.6,"cache_read":0.03,"cache_write":0}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-m2.7","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}},"space-bunny-free":{"id":"space-bunny-free","name":"Space Bunny Free","description":"Anonymous preview reasoning model for coding, agentic tasks, tool use, and multimodal input","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":524288,"output":524288},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo-v2.5-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625}},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax-m3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"canonical_model_id":"tencent/hy3"},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.2,"cache_read":0.002},"canonical_model_id":"meta/muse-spark-1.2"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro (New)","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"status":"deprecated","cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for coding and agentic workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"step-5-preview-free":{"id":"step-5-preview-free","name":"Step 5 Preview Free","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"stepfun/step-5-preview"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.7-plus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.4,"output":1.6,"cache_read":0.04,"cache_write":0.5,"tiers":[{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.2,"output":4.8,"cache_read":0.12,"cache_write":1.5}}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"}}},"openreason":{"id":"openreason","env":["OPENREASON_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.openreason.app/v1","name":"OpenReason","doc":"https://openreason.app/docs","models":{"deepseek-ai/deepseek-v4-flash-0731":{"id":"deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.1371,"output":0.2743},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.0022,"output":4.22},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1055,"output":0.422},"canonical_model_id":"openai/gpt-oss-120b"}}},"lmstudio":{"id":"lmstudio","env":["LMSTUDIO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:1234/v1","name":"LMStudio","doc":"https://lmstudio.ai/models","models":{"qwen/qwen3-30b-a3b-2507":{"id":"qwen/qwen3-30b-a3b-2507","name":"Qwen3 30B A3B 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0,"output":0}},"qwen/qwen3-coder-30b":{"id":"qwen/qwen3-coder-30b","name":"Qwen3 Coder 30B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}}}},"aki-io":{"id":"aki-io","env":["AKI_IO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://aki.io/v1","name":"AKI.IO","doc":"https://aki.io/docs/","models":{"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.3,"output":2.2,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen3.6-35b":{"id":"qwen3.6-35b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.15,"output":0.5},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"glm5.3-754b":{"id":"glm5.3-754b","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":81920},"cost":{"input":1,"output":3.5,"cache_read":0.25},"canonical_model_id":"zhipuai/glm-5.3"},"mistral4-119b":{"id":"mistral4-119b","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":81920},"cost":{"input":0.2,"output":0.6},"canonical_model_id":"mistral/mistral-small-2603"},"deepseek-v4.1-flash-552b":{"id":"deepseek-v4.1-flash-552b","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":81920},"cost":{"input":0.25,"output":1,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.15,"output":0.55},"canonical_model_id":"openai/gpt-oss-120b"},"gemma4-26b":{"id":"gemma4-26b","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32768},"cost":{"input":0.1,"output":0.5},"canonical_model_id":"google/gemma-4-26b-a4b-it"}}},"tensorx":{"id":"tensorx","env":["TENSORX_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tensorx.ai/v1","name":"TensorX","doc":"https://docs.tensorx.ai/","models":{"deepseek/deepseek-v4-flash-0731":{"id":"deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.5,"output":1.5,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":2,"output":4,"cache_read":0.5},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.75,"output":3.5,"cache_read":0.4375,"cache_write":2.185},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-r1-0528":{"id":"deepseek/deepseek-r1-0528","name":"DeepSeek R1-0528","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":8192},"cost":{"input":0.66,"output":2.6,"cache_read":0.165,"cache_write":0.825},"canonical_model_id":"deepseek/deepseek-r1"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.3,"output":0.5,"cache_read":0.075,"cache_write":0.375}},"z-ai/glm-5v-turbo":{"id":"z-ai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5},"canonical_model_id":"zhipuai/glm-5v-turbo"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1,"output":3.2,"cache_read":0.25,"cache_write":1.25},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.5,"output":4.5,"cache_read":0.375},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.4,"output":4.4,"cache_read":0.35,"cache_write":1.75},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.3,"cache_write":1.5},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":1.75,"output":4.5,"cache_read":0.44},"canonical_model_id":"zhipuai/glm-5.3"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1,"output":4,"cache_read":0.25,"cache_write":1.25},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125,"cache_write":0.625},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.3125},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.075,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.4,"output":2,"cache_read":0.1},"canonical_model_id":"minimax/MiniMax-M3"},"qwen/qwen3-235b-a22b-2507":{"id":"qwen/qwen3-235b-a22b-2507","name":"Qwen3 235B-A22B-2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06-30","release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":262144},"cost":{"input":0.072,"output":0.464,"cache_read":0.018,"cache_write":0.09}},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.4,"output":2.4,"cache_read":0.1},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":2.5,"output":6,"cache_read":0.63},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/qwen3.5-122b-a10b":{"id":"qwen/qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3.5,"cache_read":0.125,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"qwen/qwen3.5-9b":{"id":"qwen/qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.15,"output":0.2,"cache_read":0.0375,"cache_write":0.1875},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen/qwen3.8-flash-next":{"id":"qwen/qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-flash-next"}}},"longcat":{"id":"longcat","env":["LONGCAT_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.longcat.chat/openai","name":"LongCat","doc":"https://longcat.chat/platform/docs/","models":{"LongCat-2.0":{"id":"LongCat-2.0","name":"LongCat-2.0","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.75,"output":2.95,"cache_read":0.015},"canonical_model_id":"meituan/longcat-2.0"}}},"pareto":{"id":"pareto","env":["PARETO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.paretoinference.com/v1","name":"Pareto Inference","doc":"https://docs.paretoinference.com/","models":{"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.03,"output":0.1,"cache_read":0.006},"canonical_model_id":"zhipuai/glm-5.3-flash"}}},"chutes":{"id":"chutes","env":["CHUTES_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llm.chutes.ai/v1","name":"Chutes","doc":"https://llm.chutes.ai/v1/models","models":{"Nemotron-3-Nano-Omni-30B-TEE":{"id":"Nemotron-3-Nano-Omni-30B-TEE","name":"Nemotron 3 Nano Omni 30B TEE","description":"Omni-modal model for text, vision, audio, and multimodal agent tasks","family":"nemotron","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":0},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995}},"unsloth/Mistral-Nemo-Instruct-2407-TEE":{"id":"unsloth/Mistral-Nemo-Instruct-2407-TEE","name":"Mistral Nemo Instruct 2407 TEE","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0245,"output":0.0978,"cache_read":0.0024499999999999995},"canonical_model_id":"mistral/mistral-nemo"},"google/gemma-4-31B-turbo-TEE":{"id":"google/gemma-4-31B-turbo-TEE","name":"gemma 4 31B turbo TEE","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.12,"output":0.37,"cache_read":0.011999999999999997},"canonical_model_id":"google/gemma-4-31b-it"},"Qwen/Qwen3-32B-TEE":{"id":"Qwen/Qwen3-32B-TEE","name":"Qwen3 32B TEE","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":40960},"cost":{"input":0.104,"output":0.416,"cache_read":0.010399999999999998},"canonical_model_id":"alibaba/qwen3-32b"},"Qwen/Qwen3.6-27B-TEE":{"id":"Qwen/Qwen3.6-27B-TEE","name":"Qwen3.6 27B TEE","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2,"cache_read":0.029999999999999992},"canonical_model_id":"alibaba/qwen3.6-27b"},"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE","name":"Qwen3 235B A22B Thinking 2507 TEE","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07","last_updated":"2026-06-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2989,"output":1.1957,"cache_read":0.029889999999999993}},"Qwen/Qwen3.8-27B-TEE":{"id":"Qwen/Qwen3.8-27B-TEE","name":"Qwen3.8 27B TEE","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-16","last_updated":"2026-08-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.24,"output":2.2,"cache_read":0.023999999999999994},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3.5-397B-A17B-TEE":{"id":"Qwen/Qwen3.5-397B-A17B-TEE","name":"Qwen3.5 397B A17B TEE","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3,"cache_read":0.04499999999999999},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"deepseek-ai/DeepSeek-V4-Flash-0731-TEE":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731-TEE","name":"DeepSeek V4 Flash 0731 TEE","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.44,"output":1.32,"cache_read":0.04399999999999999},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V3.2-TEE":{"id":"deepseek-ai/DeepSeek-V3.2-TEE","name":"DeepSeek V3.2 TEE","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12","last_updated":"2026-06-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":1,"output":1,"cache_read":0.09999999999999998},"canonical_model_id":"deepseek/deepseek-v3.2"},"moonshotai/Kimi-K3-TEE":{"id":"moonshotai/Kimi-K3-TEE","name":"Kimi K3 TEE","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-29","last_updated":"2026-07-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65535},"cost":{"input":3,"output":15,"cache_read":0.29999999999999993},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/Kimi-K2.6-TEE":{"id":"moonshotai/Kimi-K2.6-TEE","name":"Kimi K2.6 TEE","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65535},"cost":{"input":0.5,"output":2.85,"cache_read":0.04999999999999999},"canonical_model_id":"moonshotai/kimi-k2.6"},"zai-org/GLM-5.2-TEE":{"id":"zai-org/GLM-5.2-TEE","name":"GLM 5.2 TEE","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":3.95,"cache_read":0.12499999999999997},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5.1-TEE":{"id":"zai-org/GLM-5.1-TEE","name":"GLM 5.1 TEE","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":65535},"cost":{"input":0.98,"output":3.08,"cache_read":0.09799999999999998},"canonical_model_id":"zhipuai/glm-5.1"}}},"edenai":{"id":"edenai","env":["EDENAI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.edenai.run/v3","name":"Eden AI","doc":"https://docs.edenai.co","models":{"deepinfra/nemotron-3-ultra-550b-a55b":{"id":"deepinfra/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B (Deep Infra)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"deepinfra/meta-models/Muse-Glimmer-30B":{"id":"deepinfra/meta-models/Muse-Glimmer-30B","name":"Muse Glimmer 30B (Deep Infra)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"deepinfra/tencent/Hy3":{"id":"deepinfra/tencent/Hy3","name":"Hy3 (Deep Infra)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.13,"output":0.53,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"deepinfra/tencent/Hy4-preview":{"id":"deepinfra/tencent/Hy4-preview","name":"Hy4 preview (Deep Infra)","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"deepinfra/meta-llama/Llama-Guard-3-8B":{"id":"deepinfra/meta-llama/Llama-Guard-3-8B","name":"Llama-Guard-3-8B (Deep Infra)","description":"Llama 3.1-based safety classifier for moderating prompts and model responses","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.055,"output":0.055},"canonical_model_id":"meta/llama-guard-3-8b"},"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":{"id":"deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct","name":"Llama-3.2-11B-Vision-Instruct (Deep Infra)","description":"Open multimodal Llama model for image understanding, captioning, and visual QA","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.345,"output":0.345},"canonical_model_id":"meta/llama-3.2-11b-vision-instruct"},"deepinfra/meta-llama/Llama-3.3-70B-Instruct":{"id":"deepinfra/meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct (Deep Infra)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.1,"output":0.32},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"deepinfra/thinkingmachines/Inkling-Small":{"id":"deepinfra/thinkingmachines/Inkling-Small","name":"Inkling Small (Deep Infra)","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.45,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"deepinfra/thinkingmachines/Inkling":{"id":"deepinfra/thinkingmachines/Inkling","name":"Inkling (Deep Infra)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"canonical_model_id":"thinkingmachines/inkling"},"deepinfra/google/gemma-3-27b-it":{"id":"deepinfra/google/gemma-3-27b-it","name":"Gemma 3 27B IT (Deep Infra)","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.08,"output":0.16},"canonical_model_id":"google/gemma-3-27b-it"},"deepinfra/google/gemma-3-12b-it":{"id":"deepinfra/google/gemma-3-12b-it","name":"Gemma 3 12B IT (Deep Infra)","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.15},"canonical_model_id":"google/gemma-3-12b-it"},"deepinfra/google/gemma-3-4b-it":{"id":"deepinfra/google/gemma-3-4b-it","name":"Gemma 3 4B IT (Deep Infra)","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.1},"canonical_model_id":"google/gemma-3-4b-it"},"deepinfra/Gryphe/MythoMax-L2-13b":{"id":"deepinfra/Gryphe/MythoMax-L2-13b","name":"MythoMax L2 13B (Deep Infra)","description":"Llama 2 merge combining MythoLogic and Huginn for creative writing and roleplay","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2023-08-10","last_updated":"2023-08-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3200},"cost":{"input":0.4,"output":0.4},"canonical_model_id":"gryphe/mythomax-l2-13b"},"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct":{"id":"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct","name":"Qwen3 VL 235B A22B Instruct (Deep Infra)","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":0.88,"cache_read":0.11},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen3-Next 80B-A3B Instruct (Deep Infra)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.09,"output":1.1},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"deepinfra/Qwen/Qwen3-VL-30B-A3B-Instruct":{"id":"deepinfra/Qwen/Qwen3-VL-30B-A3B-Instruct","name":"Qwen3 VL 30B A3B Instruct (Deep Infra)","description":"Open vision-language MoE model for image and video understanding, documents, and visual agents","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-04","last_updated":"2025-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-vl-30b-a3b-instruct"},"deepinfra/Qwen/Qwen3-Max":{"id":"deepinfra/Qwen/Qwen3-Max","name":"Qwen3 Max (Deep Infra)","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":65536},"cost":{"input":1.2,"output":6,"cache_read":0.24},"canonical_model_id":"alibaba/qwen3-max"},"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507 (Deep Infra)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.09,"output":0.55},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct":{"id":"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct","name":"Qwen3-Coder 480B-A35B Instruct (Deep Infra)","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":1.6},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731 (Deep Infra)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.06,"output":0.18,"cache_read":0.015},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepinfra/deepseek-ai/DeepSeek-R1":{"id":"deepinfra/deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1 (Deep Infra)","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.7,"output":2.4},"canonical_model_id":"deepseek/deepseek-r1"},"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813 (Deep Infra)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.3,"output":2.6,"cache_read":0.1},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash (Deep Infra)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.2,"output":0.6,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepinfra/deepseek-ai/DeepSeek-R1-0528":{"id":"deepinfra/deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528 (Deep Infra)","description":"May 2025 DeepSeek R1 update with improved mathematics, coding, and reasoning","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.15,"cache_read":0.35},"canonical_model_id":"deepseek/deepseek-r1-0528"},"deepinfra/deepseek-ai/DeepSeek-V3":{"id":"deepinfra/deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3 (Deep Infra)","description":"Open DeepSeek MoE chat model for coding, math, and general reasoning","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":8192},"cost":{"input":0.32,"output":0.89},"canonical_model_id":"deepseek/deepseek-v3"},"deepinfra/deepseek-ai/DeepSeek-V3-0324":{"id":"deepinfra/deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324 (Deep Infra)","description":"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.24,"output":0.9,"cache_read":0.135},"canonical_model_id":"deepseek/deepseek-v3-0324"},"deepinfra/stepfun-ai/Step-3.7-Flash":{"id":"deepinfra/stepfun-ai/Step-3.7-Flash","name":"Step 3.7 Flash (Deep Infra)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"deepinfra/stepfun-ai/Step-3.5-Flash":{"id":"deepinfra/stepfun-ai/Step-3.5-Flash","name":"Step 3.5 Flash (Deep Infra)","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.09,"output":0.3,"cache_read":0.02},"canonical_model_id":"stepfun/step-3.5-flash"},"deepinfra/moonshotai/Kimi-K2-Instruct":{"id":"deepinfra/moonshotai/Kimi-K2-Instruct","name":"Kimi K2 Instruct (Deep Infra)","description":"Non-thinking Kimi K2 MoE instruction model for coding and tool-using agents","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2},"canonical_model_id":"moonshotai/kimi-k2-instruct"},"deepinfra/moonshotai/Kimi-K2.5":{"id":"deepinfra/moonshotai/Kimi-K2.5","name":"Kimi K2.5 (Deep Infra)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.25,"cache_read":0.07},"canonical_model_id":"moonshotai/kimi-k2.5"},"deepinfra/zai-org/GLM-4.7-Flash":{"id":"deepinfra/zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash (Deep Infra)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-4.7-flash"},"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{"id":"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B","name":"Nemotron 3 Nano 30B A3B (Deep Infra)","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.025},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":{"id":"deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct","name":"Llama 3.1 Nemotron 70B Instruct (Deep Infra)","description":"Nemotron model for efficient reasoning, coding, and specialized AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-15","last_updated":"2025-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.6,"output":0.6},"canonical_model_id":"nvidia/llama-3.1-nemotron-70b-instruct"},"deepinfra/ByteDance/Seed-2.0-code":{"id":"deepinfra/ByteDance/Seed-2.0-code","name":"Seed 2.0 Code (Deep Infra)","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":131072},"cost":{"input":0.5,"output":3,"cache_read":0.1},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"deepinfra/ByteDance/Seed-2.0-mini":{"id":"deepinfra/ByteDance/Seed-2.0-mini","name":"Seed 2.0 Mini (Deep Infra)","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"deepinfra/openai/gpt-oss-20b":{"id":"deepinfra/openai/gpt-oss-20b","name":"GPT OSS 20B (Deep Infra)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.14},"canonical_model_id":"openai/gpt-oss-20b"},"deepinfra/openai/gpt-oss-120b":{"id":"deepinfra/openai/gpt-oss-120b","name":"GPT OSS 120B (Deep Infra)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.037,"output":0.17},"canonical_model_id":"openai/gpt-oss-120b"},"deepinfra/microsoft/WizardLM-2-8x22B":{"id":"deepinfra/microsoft/WizardLM-2-8x22B","name":"WizardLM 2 8x22B (Deep Infra)","description":"Microsoft WizardLM instruction-tuned Mixtral MoE for multilingual dialogue and complex tasks","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-04-15","last_updated":"2024-04-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":8000},"cost":{"input":0.48,"output":0.48},"canonical_model_id":"microsoft/wizardlm-2-8x22b"},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B (Cerebras)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.35,"output":0.75,"cache_read":0.35},"canonical_model_id":"openai/gpt-oss-120b"},"groq/openai/gpt-oss-20b":{"id":"groq/openai/gpt-oss-20b","name":"GPT OSS 20B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-20b"},"groq/openai/gpt-oss-safeguard-20b":{"id":"groq/openai/gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B (Groq)","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"groq/openai/gpt-oss-120b":{"id":"groq/openai/gpt-oss-120b","name":"GPT OSS 120B (Groq)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-oss-120b"},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-4.6v"},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["image","text","video"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"anthropic/claude-opus-latest":{"id":"anthropic/claude-opus-latest","name":"Claude Opus Latest (Claude Opus 5.5)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-opus-5-5":{"id":"anthropic/claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-sonnet-latest":{"id":"anthropic/claude-sonnet-latest","name":"Claude Sonnet Latest (Claude Sonnet 5.5)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-latest":{"id":"anthropic/claude-fable-latest","name":"Claude Fable Latest (Claude Fable 5.1)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-5-5":{"id":"anthropic/claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-sonnet-5-5":{"id":"anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"cohere/command-r-08-2024":{"id":"cohere/command-r-08-2024","name":"Command R","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"cohere/command-r-08-2024"},"cohere/command-a-03-2025":{"id":"cohere/command-a-03-2025","name":"Command A","description":"Cohere command model for multilingual enterprise agents, tools, and chat","family":"command-a","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-03-13","last_updated":"2025-03-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":288000,"output":8000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-a-03-2025"},"cohere/command-r7b-12-2024":{"id":"cohere/command-r7b-12-2024","name":"Command R7B","description":"Cohere retrieval model for long-context chat and enterprise RAG workflows","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-12-02","last_updated":"2024-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":132000,"output":4000},"cost":{"input":0.0375,"output":0.15},"canonical_model_id":"cohere/command-r7b-12-2024"},"cohere/command-r-plus-08-2024":{"id":"cohere/command-r-plus-08-2024","name":"Command R+","description":"Cohere's RAG workhorse for long-context enterprise search and tool use","family":"command-r","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2024-08-30","last_updated":"2024-08-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":2.5,"output":10},"canonical_model_id":"cohere/command-r-plus-08-2024"},"cohere/c4ai-aya-expanse-32b":{"id":"cohere/c4ai-aya-expanse-32b","name":"Aya Expanse 32B","description":"Open multilingual model optimized for generation across 23 languages","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-10-24","last_updated":"2024-10-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4000},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"cohere/c4ai-aya-expanse-32b"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-chat":{"id":"deepseek/deepseek-chat","name":"DeepSeek Chat","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-12-01","last_updated":"2026-02-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-chat"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4-flash"},"databricks/databricks-inkling":{"id":"databricks/databricks-inkling","name":"Inkling (Databricks)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.1,"cache_write":1.00002},"canonical_model_id":"thinkingmachines/inkling"},"databricks/databricks-qwen3-next-80b-a3b-instruct@eu":{"id":"databricks/databricks-qwen3-next-80b-a3b-instruct@eu","name":"Qwen3-Next 80B-A3B Instruct (Databricks, EU)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":1.20001,"cache_read":0.015001,"cache_write":0.15001},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"databricks/databricks-gpt-oss-20b":{"id":"databricks/databricks-gpt-oss-20b","name":"GPT OSS 20B (Databricks)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07},"canonical_model_id":"openai/gpt-oss-20b"},"databricks/databricks-deepseek-v4-flash-0731":{"id":"databricks/databricks-deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731 (Databricks)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.014,"cache_write":0.14},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"databricks/databricks-gpt-oss-120b@eu":{"id":"databricks/databricks-gpt-oss-120b@eu","name":"GPT OSS 120B (Databricks, EU)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001},"canonical_model_id":"openai/gpt-oss-120b"},"databricks/databricks-gpt-oss-120b":{"id":"databricks/databricks-gpt-oss-120b","name":"GPT OSS 120B (Databricks)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":0.59997,"cache_read":0.015001,"cache_write":0.15001},"canonical_model_id":"openai/gpt-oss-120b"},"databricks/databricks-deepseek-v4-pro-0813":{"id":"databricks/databricks-deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813 (Databricks)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.32,"output":3.959999,"cache_read":0.132,"cache_write":1.31999},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"databricks/databricks-qwen3-next-80b-a3b-instruct":{"id":"databricks/databricks-qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct (Databricks)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15001,"output":1.20001,"cache_read":0.015001,"cache_write":0.15001},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"databricks/databricks-gpt-oss-20b@eu":{"id":"databricks/databricks-gpt-oss-20b@eu","name":"GPT OSS 20B (Databricks, EU)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.07,"output":0.30002,"cache_read":0.007,"cache_write":0.07},"canonical_model_id":"openai/gpt-oss-20b"},"tencent/deepseek-v4-pro-0813":{"id":"tencent/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813 (Tencent)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3 (Tencent)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview (Tencent)","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"together_ai/meta-models/Muse-Glimmer-30B":{"id":"together_ai/meta-models/Muse-Glimmer-30B","name":"Muse Glimmer 30B (Together AI)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"together_ai/thinkingmachines/Inkling":{"id":"together_ai/thinkingmachines/Inkling","name":"Inkling (Together AI)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"together_ai/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"together_ai/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731 (Together AI)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"together_ai/deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"together_ai/deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813 (Together AI)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"together_ai/deepseek-ai/DeepSeek-V4.1-Flash":{"id":"together_ai/deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash (Together AI)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"together_ai/openai/gpt-oss-120b":{"id":"together_ai/openai/gpt-oss-120b","name":"GPT OSS 120B (Together AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"azure/gpt-5.2-codex":{"id":"azure/gpt-5.2-codex","name":"GPT-5.2 Codex (Azure)","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"azure/gpt-5.1-codex":{"id":"azure/gpt-5.1-codex","name":"GPT-5.1 Codex (Azure)","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"azure/gpt-5.1-codex-max":{"id":"azure/gpt-5.1-codex-max","name":"GPT-5.1 Codex Max (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex-max"},"azure/gpt-5.1-codex-mini":{"id":"azure/gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini (Azure)","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"flexai/Step-3.7-Flash":{"id":"flexai/Step-3.7-Flash","name":"Step 3.7 Flash (FlexAI)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.03},"canonical_model_id":"stepfun/step-3.7-flash"},"flexai/DeepSeek-V4-Flash-0731":{"id":"flexai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731 (FlexAI)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.0192,"output":0.27,"cache_read":0.0029},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"flexai/Muse-Glimmer-30B":{"id":"flexai/Muse-Glimmer-30B","name":"Muse Glimmer 30B (FlexAI)","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.35,"output":1.5,"cache_read":0.0525},"canonical_model_id":"meta/muse-glimmer-30b"},"flexai/DeepSeek-V4.1-Flash":{"id":"flexai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash (FlexAI)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.09,"output":0.18,"cache_read":0.0135},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"flexai/gpt-oss-20b":{"id":"flexai/gpt-oss-20b","name":"GPT OSS 20B (FlexAI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.02,"output":0.1,"cache_read":0.003},"canonical_model_id":"openai/gpt-oss-20b"},"flexai/gpt-oss-120b":{"id":"flexai/gpt-oss-120b","name":"GPT OSS 120B (FlexAI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.03,"output":0.17,"cache_read":0.0045},"canonical_model_id":"openai/gpt-oss-120b"},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest (Gemini 3.8 Flash)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-3.1-flash-image-preview":{"id":"google/gemini-3.1-flash-image-preview","name":"Nano Banana 2 Preview","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-26","last_updated":"2026-02-26","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image-preview"},"google/gemini-2.5-flash-image":{"id":"google/gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["audio","image","text","video"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash-image"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemini-3-pro-image-preview":{"id":"google/gemini-3-pro-image-preview","name":"Nano Banana Pro Preview","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-20","last_updated":"2025-11-20","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2},"canonical_model_id":"google/gemini-3-pro-image-preview"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-flash-image":{"id":"google/gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-3-pro-image":{"id":"google/gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2},"canonical_model_id":"google/gemini-3-pro-image"},"google/gemini-3.1-flash-lite-image":{"id":"google/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"google/deep-research-preview-04-2026":{"id":"google/deep-research-preview-04-2026","name":"Gemini Deep Research Preview","description":"Agentic model for autonomous multi-step research, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"canonical_model_id":"google/deep-research-preview-04-2026"},"google/deep-research-max-preview-04-2026":{"id":"google/deep-research-max-preview-04-2026","name":"Deep Research Max Preview","description":"Maximum-comprehensiveness agentic researcher for multi-step investigation, synthesis, and cited reports","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12},"canonical_model_id":"google/deep-research-max-preview-04-2026"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-pro-latest":{"id":"google/gemini-pro-latest","name":"Gemini Pro Latest (Gemini 3.1 Pro Preview)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-3.1-flash-lite-preview":{"id":"google/gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite-preview"},"google/gemini-nano-banana-2.1":{"id":"google/gemini-nano-banana-2.1","name":"Nano Banana 2.1","description":"Image model for prompt-driven generation, multi-turn editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"google/gemini-nano-banana-2.1"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"xai/grok-latest":{"id":"xai/grok-latest","name":"Grok Latest (Grok 4.7)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.7":{"id":"xai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"nebius/google/gemma-3-27b-it":{"id":"nebius/google/gemma-3-27b-it","name":"Gemma 3 27B IT (Nebius)","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":110000,"output":131072},"cost":{"input":0.1,"output":0.3,"cache_read":0.1},"canonical_model_id":"google/gemma-3-27b-it"},"nebius/Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"nebius/Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B-A22B Instruct 2507 (Nebius)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.2,"output":0.6,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"nebius/deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731 (Nebius)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.14},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"nebius/deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813 (Nebius)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":979000,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":1.32},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"nebius/deepseek-ai/DeepSeek-V4.1-Flash":{"id":"nebius/deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash (Nebius)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.3},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"nebius/nvidia/nemotron-3-super-120b-a12b":{"id":"nebius/nvidia/nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B (Nebius)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":0.9,"cache_read":0.3},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{"id":"nebius/nvidia/Nemotron-3-Ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B (Nebius)","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":1,"output":3,"cache_read":1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nebius/openai/gpt-oss-120b":{"id":"nebius/openai/gpt-oss-120b","name":"GPT OSS 120B (Nebius)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.15},"canonical_model_id":"openai/gpt-oss-120b"},"scaleway/gemma-3-27b-it":{"id":"scaleway/gemma-3-27b-it","name":"Gemma 3 27B IT (Scaleway)","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":40000,"output":131072},"cost":{"input":0.287125,"output":0.57425},"canonical_model_id":"google/gemma-3-27b-it"},"scaleway/deepseek-v4-flash-0731":{"id":"scaleway/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731 (Scaleway)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":384000},"cost":{"input":0.44824,"output":0.89648,"cache_read":0.089648},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"scaleway/qwen3-235b-a22b-instruct-2507":{"id":"scaleway/qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B-A22B Instruct 2507 (Scaleway)","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":250000,"output":16384},"cost":{"input":0.84045,"output":2.52135},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"scaleway/qwen3-coder-30b-a3b-instruct":{"id":"scaleway/qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct (Scaleway)","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":65536},"cost":{"input":0.22412,"output":0.89648},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"scaleway/llama-3.3-70b-instruct":{"id":"scaleway/llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct (Scaleway)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":1.00854,"output":1.00854},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"scaleway/gpt-oss-120b":{"id":"scaleway/gpt-oss-120b","name":"GPT OSS 120B (Scaleway)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.16809,"output":0.67236},"canonical_model_id":"openai/gpt-oss-120b"},"ionos/meta-llama/Llama-3.3-70B-Instruct":{"id":"ionos/meta-llama/Llama-3.3-70B-Instruct","name":"Llama-3.3-70B-Instruct (IONOS)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72839,"output":0.72839},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"ionos/Qwen/Qwen3-Coder-Next":{"id":"ionos/Qwen/Qwen3-Coder-Next","name":"Qwen3 Coder Next (IONOS)","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.16809,"output":0.89648},"canonical_model_id":"alibaba/qwen3-coder-next"},"ionos/openai/gpt-oss-120b":{"id":"ionos/openai/gpt-oss-120b","name":"GPT OSS 120B (IONOS)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.16809,"output":0.72839},"canonical_model_id":"openai/gpt-oss-120b"},"vertex/gemini-flash-latest":{"id":"vertex/gemini-flash-latest","name":"Gemini Flash Latest (Gemini 3.8 Flash, Vertex AI)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"vertex/gemini-2.5-flash-image":{"id":"vertex/gemini-2.5-flash-image","name":"Nano Banana (Vertex AI)","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash-image"},"vertex/gemini-3.1-flash-lite@eu":{"id":"vertex/gemini-3.1-flash-lite@eu","name":"Gemini 3.1 Flash Lite (Vertex AI, EU)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"vertex/gemini-3.5-flash-lite@eu":{"id":"vertex/gemini-3.5-flash-lite@eu","name":"Gemini 3.5 Flash Lite (Vertex AI, EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"vertex/gemini-3.6-flash@eu":{"id":"vertex/gemini-3.6-flash@eu","name":"Gemini 3.6 Flash (Vertex AI, EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"vertex/gemini-3.6-flash":{"id":"vertex/gemini-3.6-flash","name":"Gemini 3.6 Flash (Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"vertex/gemini-3.5-flash-lite":{"id":"vertex/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite (Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"vertex/gemini-3.1-flash-image":{"id":"vertex/gemini-3.1-flash-image","name":"Nano Banana 2 (Vertex AI)","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["image","text"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":3},"canonical_model_id":"google/gemini-3.1-flash-image"},"vertex/gemini-3.1-pro-preview":{"id":"vertex/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview (Vertex AI)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"vertex/gemini-3.5-flash":{"id":"vertex/gemini-3.5-flash","name":"Gemini 3.5 Flash (Vertex AI)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"vertex/gemini-3-pro-image":{"id":"vertex/gemini-3-pro-image","name":"Nano Banana Pro (Vertex AI)","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2},"canonical_model_id":"google/gemini-3-pro-image"},"vertex/gemini-3.7-flash@us":{"id":"vertex/gemini-3.7-flash@us","name":"Gemini 3.7 Flash (Vertex AI, US)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"vertex/gemini-3.7-flash@eu":{"id":"vertex/gemini-3.7-flash@eu","name":"Gemini 3.7 Flash (Vertex AI, EU)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"vertex/gemini-3.1-flash-lite-image":{"id":"vertex/gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite (Vertex AI)","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":1.5},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"vertex/gemini-3.8-flash@eu":{"id":"vertex/gemini-3.8-flash@eu","name":"Gemini 3.8 Flash (Vertex AI, EU)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"vertex/gemini-3.7-flash":{"id":"vertex/gemini-3.7-flash","name":"Gemini 3.7 Flash (Vertex AI)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"vertex/gemini-3.6-flash@us":{"id":"vertex/gemini-3.6-flash@us","name":"Gemini 3.6 Flash (Vertex AI, US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"reasoning":3.75,"cache_read":0.075,"cache_write":0.041667,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"vertex/gemini-3.5-flash-lite@us":{"id":"vertex/gemini-3.5-flash-lite@us","name":"Gemini 3.5 Flash Lite (Vertex AI, US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"reasoning":2.5,"cache_read":0.03,"cache_write":0.083333,"input_audio":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"vertex/gemini-3-flash-preview":{"id":"vertex/gemini-3-flash-preview","name":"Gemini 3 Flash Preview (Vertex AI)","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"reasoning":3,"cache_read":0.05,"cache_write":0.083333,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"vertex/gemini-3.1-flash-lite@us":{"id":"vertex/gemini-3.1-flash-lite@us","name":"Gemini 3.1 Flash Lite (Vertex AI, US)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"vertex/gemini-pro-latest":{"id":"vertex/gemini-pro-latest","name":"Gemini Pro Latest (Gemini 3.1 Pro Preview, Vertex AI)","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"reasoning":12,"cache_read":0.2,"cache_write":0.375,"input_audio":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":0.25}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"vertex/gemini-3.8-flash":{"id":"vertex/gemini-3.8-flash","name":"Gemini 3.8 Flash (Vertex AI)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"vertex/gemini-3.5-flash@eu":{"id":"vertex/gemini-3.5-flash@eu","name":"Gemini 3.5 Flash (Vertex AI, EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"vertex/gemini-3.8-flash@us":{"id":"vertex/gemini-3.8-flash@us","name":"Gemini 3.8 Flash (Vertex AI, US)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":7.5,"reasoning":7.5,"cache_read":0.15,"cache_write":0.083333,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"vertex/gemini-3.5-flash@us":{"id":"vertex/gemini-3.5-flash@us","name":"Gemini 3.5 Flash (Vertex AI, US)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"reasoning":9,"cache_read":0.15,"cache_write":0.083333,"input_audio":3},"canonical_model_id":"google/gemini-3.5-flash"},"vertex/gemini-nano-banana-2.1":{"id":"vertex/gemini-nano-banana-2.1","name":"Nano Banana 2.1 (Vertex AI)","description":"Image model for prompt-driven generation, multi-turn editing, and visual design workflows","family":"gemini-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"google/gemini-nano-banana-2.1"},"vertex/gemini-3.1-flash-lite":{"id":"vertex/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite (Vertex AI)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"reasoning":1.5,"cache_read":0.025,"cache_write":0.083333,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"greenference/deepseek-v4.1-flash":{"id":"greenference/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Greenference)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.22,"output":0.88,"cache_read":0.007},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"greenference/gpt-oss-20b":{"id":"greenference/gpt-oss-20b","name":"GPT OSS 20B (Greenference)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.009,"output":0.045,"cache_read":0.0045},"canonical_model_id":"openai/gpt-oss-20b"},"perplexityai/sonar-pro":{"id":"perplexityai/sonar-pro","name":"Sonar Pro","description":"Deeper Sonar search model with broader retrieval and stronger synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15},"canonical_model_id":"perplexity/sonar-pro"},"perplexityai/sonar-deep-research":{"id":"perplexityai/sonar-deep-research","name":"Sonar Deep Research","description":"Sonar search model for autonomous research and citation-backed long-form reports","family":"sonar","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3},"canonical_model_id":"perplexity/sonar-deep-research"},"perplexityai/sonar":{"id":"perplexityai/sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":127072,"output":4096},"cost":{"input":1,"output":1},"canonical_model_id":"perplexity/sonar"},"perplexityai/sonar-reasoning-pro":{"id":"perplexityai/sonar-reasoning-pro","name":"Sonar Reasoning Pro","description":"Web-grounded Sonar for multi-step research questions that need cited reasoning","family":"sonar-reasoning","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8},"canonical_model_id":"perplexity/sonar-reasoning-pro"},"cloudflare/@cf/meta/llama-guard-3-8b":{"id":"cloudflare/@cf/meta/llama-guard-3-8b","name":"Llama-Guard-3-8B (Cloudflare)","description":"Llama 3.1-based safety classifier for moderating prompts and model responses","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.484,"output":0.03},"canonical_model_id":"meta/llama-guard-3-8b"},"cloudflare/@cf/meta/llama-3.2-1b-instruct":{"id":"cloudflare/@cf/meta/llama-3.2-1b-instruct","name":"Llama 3.2 1B Instruct (Cloudflare)","description":"Compact instruction-tuned Llama model for multilingual dialogue and on-device assistants","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":60000,"output":32000},"cost":{"input":0.027,"output":0.201},"canonical_model_id":"meta/llama-3.2-1b-instruct"},"cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{"id":"cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it","name":"Gemma-SEA-LION-v4-27B-IT (Cloudflare)","description":"Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.351,"output":0.555},"canonical_model_id":"aisingapore/gemma-sea-lion-v4-27b-it"},"cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731":{"id":"cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731 (Cloudflare)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.44,"output":1.32,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813":{"id":"cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813 (Cloudflare)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"cloudflare/@cf/zai-org/glm-4.7-flash":{"id":"cloudflare/@cf/zai-org/glm-4.7-flash","name":"GLM-4.7-Flash (Cloudflare)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.0605,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct":{"id":"cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct","name":"Qwen2.5-Coder-32B-Instruct (Cloudflare)","description":"Open coding-focused Qwen model for code generation, repair, and repository reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-11-12","last_updated":"2024-11-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.66,"output":1},"canonical_model_id":"alibaba/qwen2.5-coder-32b-instruct"},"cloudflare/@cf/openai/gpt-oss-20b":{"id":"cloudflare/@cf/openai/gpt-oss-20b","name":"GPT OSS 20B (Cloudflare)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.2,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"cloudflare/@cf/openai/gpt-oss-120b":{"id":"cloudflare/@cf/openai/gpt-oss-120b","name":"GPT OSS 120B (Cloudflare)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"minimax/MiniMax-M3":{"id":"minimax/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/MiniMax-M2.1":{"id":"minimax/MiniMax-M2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.1"},"minimax/MiniMax-M2.5":{"id":"minimax/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"minimax/MiniMax-M2.7":{"id":"minimax/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/MiniMax-M2":{"id":"minimax/MiniMax-M2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2"},"tensorx/deepseek/deepseek-v4-flash-0731":{"id":"tensorx/deepseek/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731 (TensorX)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.25,"output":0.3,"cache_read":0.0625},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"tensorx/deepseek/deepseek-v4.1-flash":{"id":"tensorx/deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (TensorX)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.5,"output":1.5,"cache_read":0.125},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"tensorx/deepseek/deepseek-v4-pro-0813":{"id":"tensorx/deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813 (TensorX)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":2,"output":4,"cache_read":0.5},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"tensorx/deepseek/deepseek-r1-0528":{"id":"tensorx/deepseek/deepseek-r1-0528","name":"DeepSeek R1 0528 (TensorX)","description":"May 2025 DeepSeek R1 update with improved mathematics, coding, and reasoning","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":32768},"cost":{"input":0.66,"output":2.6,"cache_read":0.165},"canonical_model_id":"deepseek/deepseek-r1-0528"},"tensorx/moonshotai/kimi-k2.5":{"id":"tensorx/moonshotai/kimi-k2.5","name":"Kimi K2.5 (TensorX)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.8,"cache_read":0.125},"canonical_model_id":"moonshotai/kimi-k2.5"},"amazon/google.gemma-3-12b-it":{"id":"amazon/google.gemma-3-12b-it","name":"Gemma 3 12B IT (Amazon Bedrock)","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.09,"output":0.29},"canonical_model_id":"google/gemma-3-12b-it"},"amazon/google.gemma-3-4b-it":{"id":"amazon/google.gemma-3-4b-it","name":"Gemma 3 4B IT (Amazon Bedrock)","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.04,"output":0.08},"canonical_model_id":"google/gemma-3-4b-it"},"amazon/openai.gpt-oss-safeguard-20b@us":{"id":"amazon/openai.gpt-oss-safeguard-20b@us","name":"GPT OSS Safeguard 20B (Amazon Bedrock, US)","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.07,"output":0.2},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"amazon/openai.gpt-oss-safeguard-20b":{"id":"amazon/openai.gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B (Amazon Bedrock)","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.07,"output":0.2},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"amazon/amazon.nova-lite-v1:0@us":{"id":"amazon/amazon.nova-lite-v1:0@us","name":"Nova Lite (US)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015},"canonical_model_id":"amazon/nova-lite"},"amazon/mistral.voxtral-mini-3b-2507@us":{"id":"amazon/mistral.voxtral-mini-3b-2507@us","name":"Voxtral Mini 3B 2507 (Amazon Bedrock, US)","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.04,"output":0.04},"canonical_model_id":"mistral/voxtral-mini-3b-2507"},"amazon/amazon.nova-micro-v1:0":{"id":"amazon/amazon.nova-micro-v1:0","name":"Nova Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875},"canonical_model_id":"amazon/nova-micro"},"amazon/amazon.nova-pro-v1:0":{"id":"amazon/amazon.nova-pro-v1:0","name":"Nova Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2},"canonical_model_id":"amazon/nova-pro"},"amazon/mistral.voxtral-small-24b-2507":{"id":"amazon/mistral.voxtral-small-24b-2507","name":"Voxtral Small 24B 2507 (Amazon Bedrock)","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/voxtral-small-24b-2507"},"amazon/amazon.nova-lite-v1:0":{"id":"amazon/amazon.nova-lite-v1:0","name":"Nova Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015},"canonical_model_id":"amazon/nova-lite"},"amazon/mistral.voxtral-small-24b-2507@us":{"id":"amazon/mistral.voxtral-small-24b-2507@us","name":"Voxtral Small 24B 2507 (Amazon Bedrock, US)","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/voxtral-small-24b-2507"},"amazon/google.gemma-3-12b-it@us":{"id":"amazon/google.gemma-3-12b-it@us","name":"Gemma 3 12B IT (Amazon Bedrock, US)","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.09,"output":0.29},"canonical_model_id":"google/gemma-3-12b-it"},"amazon/google.gemma-3-27b-it":{"id":"amazon/google.gemma-3-27b-it","name":"Gemma 3 27B IT (Amazon Bedrock)","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.23,"output":0.38},"canonical_model_id":"google/gemma-3-27b-it"},"amazon/google.gemma-3-27b-it@us":{"id":"amazon/google.gemma-3-27b-it@us","name":"Gemma 3 27B IT (Amazon Bedrock, US)","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.23,"output":0.38},"canonical_model_id":"google/gemma-3-27b-it"},"amazon/mistral.pixtral-large-2502-v1:0":{"id":"amazon/mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02) (Amazon Bedrock)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-2502"},"amazon/amazon.nova-micro-v1:0@us":{"id":"amazon/amazon.nova-micro-v1:0@us","name":"Nova Micro (US)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875},"canonical_model_id":"amazon/nova-micro"},"amazon/zai.glm-4.7-flash@us":{"id":"amazon/zai.glm-4.7-flash@us","name":"GLM-4.7-Flash (Amazon Bedrock, US)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":0.07,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"amazon/qwen.qwen3-coder-next":{"id":"amazon/qwen.qwen3-coder-next","name":"Qwen3 Coder Next (Amazon Bedrock)","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":1.44},"canonical_model_id":"alibaba/qwen3-coder-next"},"amazon/moonshotai.kimi-k2.5":{"id":"amazon/moonshotai.kimi-k2.5","name":"Kimi K2.5 (Amazon Bedrock)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"},"amazon/amazon.nova-pro-v1:0@us":{"id":"amazon/amazon.nova-pro-v1:0@us","name":"Nova Pro (US)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2},"canonical_model_id":"amazon/nova-pro"},"amazon/mistral.pixtral-large-2502-v1:0@us":{"id":"amazon/mistral.pixtral-large-2502-v1:0@us","name":"Pixtral Large (25.02) (Amazon Bedrock, US)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-2502"},"amazon/zai.glm-4.7-flash":{"id":"amazon/zai.glm-4.7-flash","name":"GLM-4.7-Flash (Amazon Bedrock)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":0.07,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"amazon/moonshot.kimi-k2-thinking":{"id":"amazon/moonshot.kimi-k2-thinking","name":"Kimi K2 Thinking (Amazon Bedrock)","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":262144},"cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"amazon/google.gemma-3-4b-it@us":{"id":"amazon/google.gemma-3-4b-it@us","name":"Gemma 3 4B IT (Amazon Bedrock, US)","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":131072},"cost":{"input":0.04,"output":0.08},"canonical_model_id":"google/gemma-3-4b-it"},"amazon/mistral.voxtral-mini-3b-2507":{"id":"amazon/mistral.voxtral-mini-3b-2507","name":"Voxtral Mini 3B 2507 (Amazon Bedrock)","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.04,"output":0.04},"canonical_model_id":"mistral/voxtral-mini-3b-2507"},"ovhcloud/gpt-oss-20b":{"id":"ovhcloud/gpt-oss-20b","name":"GPT OSS 20B (OVHcloud)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.05,"output":0.18},"canonical_model_id":"openai/gpt-oss-20b"},"ovhcloud/gpt-oss-120b":{"id":"ovhcloud/gpt-oss-120b","name":"GPT OSS 120B (OVHcloud)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.09,"output":0.47},"canonical_model_id":"openai/gpt-oss-120b"},"fireworks_ai/gpt-oss-120b":{"id":"fireworks_ai/gpt-oss-120b","name":"GPT OSS 120B (Fireworks AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.014},"canonical_model_id":"openai/gpt-oss-120b"},"fireworks_ai/accounts/fireworks/models/inkling":{"id":"fireworks_ai/accounts/fireworks/models/inkling","name":"Inkling (Fireworks AI)","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"fireworks_ai/accounts/fireworks/models/gpt-oss-120b":{"id":"fireworks_ai/accounts/fireworks/models/gpt-oss-120b","name":"GPT OSS 120B (Fireworks AI)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"openai/gpt-oss-120b"},"mistral/codestral-latest":{"id":"mistral/codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"canonical_model_id":"mistral/codestral-latest"},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"mistral/mistral-large-latest"},"mistral/mistral-small-latest":{"id":"mistral/mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"mistral/mistral-small-latest"},"mistral/devstral-medium-latest":{"id":"mistral/devstral-medium-latest","name":"Devstral 2 (latest)","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-medium-latest"},"mistral/devstral-2512":{"id":"mistral/devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.4,"output":2,"cache_read":0.04},"canonical_model_id":"mistral/devstral-2512"},"mistral/mistral-medium-2505":{"id":"mistral/mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/mistral-medium-2505"},"mistral/magistral-medium-latest":{"id":"mistral/magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"mistral/magistral-medium-latest"},"mistral/mistral-small-2603":{"id":"mistral/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"mistral/mistral-small-2603"},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"mistral/mistral-large-2512"},"mistral/voxtral-small-latest":{"id":"mistral/voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"mistral/voxtral-small-latest"},"mistral/mistral-medium-2604":{"id":"mistral/mistral-medium-2604","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"mistral/mistral-medium-2604"},"mistral/codestral-2508":{"id":"mistral/codestral-2508","name":"Codestral 25.08","description":"Mistral code model for low-latency completion, fill-in-the-middle, and code generation","family":"codestral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"canonical_model_id":"mistral/codestral-2508"},"mistral/mistral-medium-latest":{"id":"mistral/mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"mistral/mistral-medium-latest"},"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.5,"output":3,"cache_read":0.1,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen/qwen3.8-2.4t-a95b":{"id":"qwen/qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen/deepseek-v4-flash-0731":{"id":"qwen/deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731 (Alibaba)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.22,"output":0.66,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"qwen/qwen-max":{"id":"qwen/qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4,"cache_read":0.32},"canonical_model_id":"alibaba/qwen-max"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/deepseek-v4.1-flash":{"id":"qwen/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash (Alibaba)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen/qwen3.8-omni-flash":{"id":"qwen/qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen/qwen3-coder-flash":{"id":"qwen/qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"alibaba/qwen3-coder-flash"},"qwen/qwen-mt-plus":{"id":"qwen/qwen-mt-plus","name":"Qwen MT Plus","description":"Flagship Qwen translation model with terminology control and support for 92 languages","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-07-24","last_updated":"2025-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":8192},"cost":{"input":2.46,"output":7.37},"canonical_model_id":"alibaba/qwen-mt-plus"},"qwen/deepseek-v4-pro-0813":{"id":"qwen/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813 (Alibaba)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"cache_read":0.066},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.8-max-0902":{"id":"qwen/qwen3.8-max-0902","name":"Qwen3.8 Max 0902","description":"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-0902"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.4-pro":{"id":"openai/gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.4-pro"},"openai/gpt-3.5-turbo":{"id":"openai/gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"openai/gpt-3.5-turbo"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-4o":{"id":"openai/gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"openai/gpt-5-mini":{"id":"openai/gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"openai/gpt-5.2-pro":{"id":"openai/gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"openai/o4-mini":{"id":"openai/o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"openai/o3-mini":{"id":"openai/o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"openai/gpt-4":{"id":"openai/gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":8192},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"openai/gpt-5.3-codex":{"id":"openai/gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"openai/gpt-4.1-nano":{"id":"openai/gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"openai/gpt-5-nano":{"id":"openai/gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"openai/o1":{"id":"openai/o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"openai/gpt-latest":{"id":"openai/gpt-latest","name":"GPT Latest (GPT-6 Astra)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5-pro":{"id":"openai/gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-4o-2024-08-06":{"id":"openai/gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-08-06"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-5.1":{"id":"openai/gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["image","text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"openai/o3-pro":{"id":"openai/o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","pdf","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80},"canonical_model_id":"openai/o3-pro"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.2":{"id":"openai/gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-4.1":{"id":"openai/gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"openai/gpt-4o-2024-11-20":{"id":"openai/gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o-2024-11-20"},"openai/gpt-mini-latest":{"id":"openai/gpt-mini-latest","name":"GPT Mini Latest (GPT-5.4 mini)","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["pdf","image","text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-4-turbo":{"id":"openai/gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"openai/o3":{"id":"openai/o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"openai/gpt-5":{"id":"openai/gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"openai/o1-pro":{"id":"openai/o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":150,"output":600},"canonical_model_id":"openai/o1-pro"},"openai/gpt-pro-latest":{"id":"openai/gpt-pro-latest","name":"GPT Pro Latest (GPT-5.5 Pro)","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{"id":"infomaniak/mistralai/Ministral-3-14B-Instruct-2512","name":"Ministral 3 14B (Infomaniak)","description":"Open vision-language model for efficient local deployment, instruction following, and tool use","family":"ministral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"output":262144},"cost":{"input":0.33618,"output":0.44824},"canonical_model_id":"mistral/ministral-3-14b-instruct-2512"},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"stepfun":{"id":"stepfun","env":["STEPFUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.stepfun.com/v1","name":"StepFun (China)","doc":"https://platform.stepfun.com/docs/zh/overview/concept","models":{"step-1-32k":{"id":"step-1-32k","name":"Step 1 (32K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"input":32768,"output":32768},"cost":{"input":2.05,"output":9.59,"cache_read":0.41}},"step-tts-2":{"id":"step-tts-2","name":"Step TTS 2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-5-preview":{"id":"step-5-preview","name":"Step 5 Preview","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0.959,"output":2.741,"cache_read":0.048},"canonical_model_id":"stepfun/step-5-preview"},"step-3.5-flash-2603":{"id":"step-3.5-flash-2603","name":"Step 3.5 Flash 2603","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"step-2-16k":{"id":"step-2-16k","name":"Step 2 (16K)","description":"StepFun flash model for efficient multimodal reasoning, coding, and tool use","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-01-01","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"input":16384,"output":8192},"cost":{"input":5.21,"output":16.44,"cache_read":1.04}},"stepaudio-2.5-tts":{"id":"stepaudio-2.5-tts","name":"StepAudio 2.5 TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-16","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"stepaudio-2.5-asr":{"id":"stepaudio-2.5-asr","name":"StepAudio 2.5 ASR","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"step","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-24","last_updated":"2026-07-02","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"step-3.5-flash":{"id":"step-3.5-flash","name":"Step 3.5 Flash","description":"StepFun flash lane for quick multimodal reasoning and coding assistance","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-29","last_updated":"2026-06-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.1,"output":0.3,"cache_read":0.02}},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-06-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.185,"output":1.11,"cache_read":0.037},"canonical_model_id":"stepfun/step-3.7-flash"}}},"hpc-ai":{"id":"hpc-ai","env":["HPC_AI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.hpc-ai.com/inference/v1","name":"HPC-AI","doc":"https://www.hpc-ai.com/doc/docs/quickstart/","models":{"anthropic/claude-opus-4.7":{"id":"anthropic/claude-opus-4.7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1002000,"output":128000},"cost":{"input":1.74,"output":3.48,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"moonshotai/kimi-k2.5":{"id":"moonshotai/kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"moonshotai/kimi-k2.7-code":{"id":"moonshotai/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/glm-5.1":{"id":"zai-org/glm-5.1","name":"GLM 5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202000,"output":202000},"cost":{"input":0.615,"output":2.46,"cache_read":0.133}},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":195000},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"}}},"tencent-coding-plan":{"id":"tencent-coding-plan","env":["TENCENT_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lkeap.cloud.tencent.com/coding/v3","name":"Tencent Coding Plan (China)","doc":"https://cloud.tencent.com/document/product/1772/128947","models":{"hunyuan-2.0-thinking":{"id":"hunyuan-2.0-thinking","name":"Tencent HY 2.0 Think","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-2.0-instruct":{"id":"hunyuan-2.0-instruct","name":"Tencent HY 2.0 Instruct","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi-K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"tc-code-latest":{"id":"tc-code-latest","name":"Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-turbos":{"id":"hunyuan-turbos","name":"Hunyuan-TurboS","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"hunyuan-t1":{"id":"hunyuan-t1","name":"Hunyuan-T1","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hunyuan","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-08","last_updated":"2026-03-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}}}},"tempr":{"id":"tempr","env":["TEMPR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.temprhq.io/v1","name":"Tempr Gateway","doc":"https://temprhq.io/docs/gateway-reference.html","models":{"xiaomi-mimo/mimo-v2.6-pro":{"id":"xiaomi-mimo/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi-mimo/mimo-v2.6-pro-ultraspeed":{"id":"xiaomi-mimo/mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","description":"MiMo pro model for strong multimodal reasoning and agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":4.35,"output":8.7,"cache_read":0.036},"canonical_model_id":"xiaomi/mimo-v2.6-pro-ultraspeed"},"xiaomi-mimo/mimo-v2.6-flash":{"id":"xiaomi-mimo/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"cerebras/qwen-3.8-27b":{"id":"cerebras/qwen-3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-09-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.99,"output":1.49},"canonical_model_id":"alibaba/qwen3.8-27b"},"cerebras/gpt-oss-120b":{"id":"cerebras/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2026-06-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":40960},"cost":{"input":0.35,"output":0.75},"canonical_model_id":"openai/gpt-oss-120b"},"groq/allam-2-7b":{"id":"groq/allam-2-7b","name":"ALLaM-2-7b","description":"ALLaM-2-7b instruction tuned model by SDAIA","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2025-01-23","last_updated":"2025-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":4096},"cost":{"input":0,"output":0},"canonical_model_id":"sdaia/allam-2-7b"},"groq/qwen/qwen3.8-27b":{"id":"groq/qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131042,"output":16384},"cost":{"input":0.8,"output":4},"canonical_model_id":"alibaba/qwen3.8-27b"},"groq/openai/gpt-oss-20b":{"id":"groq/openai/gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.075,"output":0.3,"cache_read":0.0375},"canonical_model_id":"openai/gpt-oss-20b"},"groq/openai/gpt-oss-120b":{"id":"groq/openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-10-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-oss-120b"},"zai/glm-4.6v":{"id":"zai/glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9},"canonical_model_id":"zhipuai/glm-4.6v"},"zai/glm-4.5":{"id":"zai/glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5"},"zai/glm-5v-turbo":{"id":"zai/glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"canonical_model_id":"zhipuai/glm-5v-turbo"},"zai/glm-5.3-flash":{"id":"zai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.6":{"id":"zai/glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6"},"zai/glm-5":{"id":"zai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"zai/glm-4.6v-flash":{"id":"zai/glm-4.6v-flash","name":"GLM-4.6V-Flash","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"zai/glm-4.5v":{"id":"zai/glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8},"canonical_model_id":"zhipuai/glm-4.5v"},"zai/glm-5.3-flashx":{"id":"zai/glm-5.3-flashx","name":"GLM-5.3-FlashX","description":"High-speed GLM-5.3-Flash serving option for coding and agent workflows","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai/glm-4.7-flash":{"id":"zai/glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"zai/glm-4.7":{"id":"zai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7"},"zai/glm-4.5-flash":{"id":"zai/glm-4.5-flash","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5-flash"},"zai/glm-5.2":{"id":"zai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"zai/glm-5.1":{"id":"zai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"zai/glm-4.7-flashx":{"id":"zai/glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"zai/glm-5-turbo":{"id":"zai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24,"cache_write":0},"canonical_model_id":"zhipuai/glm-5-turbo"},"zai/glm-4.5-air":{"id":"zai/glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5-air"},"zai/glm-5.3":{"id":"zai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-4-5":{"id":"anthropic/claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic/claude-sonnet-4-5":{"id":"anthropic/claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-opus-4-5-20251101":{"id":"anthropic/claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-4-5-20250929":{"id":"anthropic/claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-opus-4-6":{"id":"anthropic/claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"anthropic/claude-haiku-4-5-20251001":{"id":"anthropic/claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-flash":{"id":"deepseek/deepseek-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.6,"reasoning":0.6,"cache_read":0.003},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.66,"output":1.98,"reasoning":1.98,"cache_read":0.022},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"google/gemini-flash-latest":{"id":"google/gemini-flash-latest","name":"Gemini Flash Latest","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-flash-latest"},"google/gemma-4-31b-it":{"id":"google/gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"canonical_model_id":"google/gemma-4-31b-it"},"google/gemini-flash-lite-latest":{"id":"google/gemini-flash-lite-latest","name":"Gemini Flash-Lite Latest","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-flash-lite-latest"},"google/gemini-embedding-2":{"id":"google/gemini-embedding-2","name":"Gemini Embedding 2","description":"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1},"cost":{"input":0.2,"output":0},"canonical_model_id":"google/gemini-embedding-2"},"google/gemini-3.6-flash":{"id":"google/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"google/gemma-4-26b-a4b-it":{"id":"google/gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"google/gemini-3.5-flash-lite":{"id":"google/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"google/gemini-3.1-pro-preview":{"id":"google/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"google/gemini-3.5-flash":{"id":"google/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"google/gemini-3.7-flash":{"id":"google/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.7-flash"},"google/gemini-3.1-pro-preview-customtools":{"id":"google/gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"google/gemini-3-flash-preview":{"id":"google/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"google/gemini-3.8-flash":{"id":"google/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.8-flash"},"google/gemini-embedding-001":{"id":"google/gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0},"canonical_model_id":"google/gemini-embedding-001"},"google/gemini-3.1-flash-lite":{"id":"google/gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"xai/grok-4.7":{"id":"xai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.20-0309-reasoning":{"id":"xai/grok-4.20-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.5":{"id":"xai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"xai/grok-4.20-0309-non-reasoning":{"id":"xai/grok-4.20-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-build-0.1":{"id":"xai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"minimax/MiniMax-M3":{"id":"minimax/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"tiers":[{"input":0.6,"output":2.4,"cache_read":0.12,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.6,"output":2.4,"cache_read":0.12}},"canonical_model_id":"minimax/MiniMax-M3"},"minimax/MiniMax-M2.7":{"id":"minimax/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/MiniMax-M2.7-highspeed":{"id":"minimax/MiniMax-M2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"mistral/mistral-large-latest":{"id":"mistral/mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-latest"},"mistral/mistral-small-latest":{"id":"mistral/mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"mistral/mistral-small-latest"},"mistral/zai-glm-5-2":{"id":"mistral/zai-glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"status":"beta","cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"mistral/mistral-embed":{"id":"mistral/mistral-embed","name":"Mistral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":3072},"cost":{"input":0.1,"output":0},"canonical_model_id":"mistral/mistral-embed"},"mistral/mistral-small-2603":{"id":"mistral/mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"mistral/mistral-small-2603"},"mistral/mistral-large-2512":{"id":"mistral/mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-2512"},"mistral/voxtral-small-latest":{"id":"mistral/voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/voxtral-small-latest"},"mistral/zai-glm-5-3":{"id":"mistral/zai-glm-5-3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.3"},"mistral/mistral-medium-2604":{"id":"mistral/mistral-medium-2604","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"mistral/mistral-medium-2604"},"mistral/mistral-medium-latest":{"id":"mistral/mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5},"canonical_model_id":"mistral/mistral-medium-latest"},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot/kimi-k2.7-code-highspeed":{"id":"moonshot/kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"inception":{"id":"inception","env":["INCEPTION_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.inceptionlabs.ai/v1/","name":"Inception","doc":"https://docs.inceptionlabs.ai/get-started/models","models":{"mercury-edit-2":{"id":"mercury-edit-2","name":"Mercury Edit 2","description":"Code editing dLLM for autocomplete (FIM) and next-edit suggestions","family":"mercury","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-03-30","last_updated":"2026-03-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}},"mercury-2.5":{"id":"mercury-2.5","name":"Mercury 2.5","description":"Mercury 2.5 is the fastest reasoning LLM, and the latest diffusion LLM (dLLM) from Inception","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-11-01","release_date":"2026-09-08","last_updated":"2026-09-10","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":260000,"output":65536},"cost":{"input":0.04,"output":0.15,"cache_read":0.004}},"mercury-2":{"id":"mercury-2","name":"Mercury 2","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"mercury","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01-01","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":50000},"cost":{"input":0.25,"output":0.75,"cache_read":0.025}}}},"modelis":{"id":"modelis","env":["MODELIS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://modelishub.com/v1","name":"Modelis","doc":"https://modelishub.com/pricing","models":{"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","max"]},{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5},"canonical_model_id":"google/gemini-2.5-flash"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50},"canonical_model_id":"anthropic/claude-fable-5"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]},{"type":"toggle"}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25},"canonical_model_id":"anthropic/claude-opus-4-8"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.0983,"output":0.1966},"canonical_model_id":"deepseek/deepseek-v4-flash"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":3,"output":9},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.768,"output":3.072},"canonical_model_id":"alibaba/qwen3.7-plus"}}},"opencode":{"id":"opencode","env":["OPENCODE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://opencode.ai/zen/v1","name":"OpenCode Zen","doc":"https://opencode.ai/docs/zen","models":{"ling-3.0-flash-fin-free":{"id":"ling-3.0-flash-fin-free","name":"Ling 3.0 Flash Fin Free","description":"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-09-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"inclusionai/ling-3.0-flash-fin"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.4"},"fledge-alpha-free":{"id":"fledge-alpha-free","name":"Fledge Alpha Free","description":"Free-tier preview reasoning model with text and image input and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-10-01","last_updated":"2026-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":0,"output":0}},"qwen3.6-plus-free":{"id":"qwen3.6-plus-free","name":"Qwen3.6 Plus Free","description":"Legacy model retained for compatibility with older integrations","family":"qwen-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180,"cache_read":30}},"mimo-v2-pro-free":{"id":"mimo-v2-pro-free","name":"MiMo V2 Pro Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-pro-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"muse-spark-1.2-contributor-free":{"id":"muse-spark-1.2-contributor-free","name":"Muse Spark 1.2 Free","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"meta/muse-spark-1.2"},"ling-3.1-flash-free":{"id":"ling-3.1-flash-free","name":"Ling 3.1 Flash Free","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"glm-5-free":{"id":"glm-5-free","name":"GLM-5 Free","description":"Legacy model retained for compatibility with older integrations","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"trinity-large-preview-free":{"id":"trinity-large-preview-free","name":"Trinity Large Preview","description":"Legacy model retained for compatibility with older integrations","family":"trinity","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-01-27","last_updated":"2026-01-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"arcee-ai/trinity-large-preview"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":30,"output":180,"cache_read":30}},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"longcat-2.5-preview-free":{"id":"longcat-2.5-preview-free","name":"LongCat 2.5 Preview Free","description":"Meituan's multimodal reasoning model for coding and agent tasks, with image understanding and a 1M-token context window","family":"longcat","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-25","last_updated":"2026-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"meituan/longcat-2.5-preview"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"ling-3.0-tiny-free":{"id":"ling-3.0-tiny-free","name":"Ling-3.0-tiny Free","description":"Compact MoE model for responsive agents, instruction following, and multi-turn conversations","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0,"output":0}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"kimi-k2.5-free":{"id":"kimi-k2.5-free","name":"Kimi K2.5 Free","description":"Legacy model retained for compatibility with older integrations","family":"kimi-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"glm-4.7-free":{"id":"glm-4.7-free","name":"GLM-4.7 Free","description":"Legacy model retained for compatibility with older integrations","family":"glm-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Legacy model retained for compatibility with older integrations","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":2.2,"cache_read":0.1}},"laguna-s-2.1-free":{"id":"laguna-s-2.1-free","name":"Laguna S 2.1 Free","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"poolside/laguna-s-2.1"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"qwen3-coder":{"id":"qwen3-coder","name":"Qwen3 Coder","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0.45,"output":1.8}},"mistral-large-4":{"id":"mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":262144},"provider":{"npm":"@ai-sdk/mistral"},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"canonical_model_id":"mistral/mistral-large-4"},"minimax-m3-free":{"id":"minimax-m3-free","name":"MiniMax-M3 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-m3-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-31","last_updated":"2026-05-31","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25}},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"exo-free":{"id":"exo-free","name":"Exo Free","description":"Free-tier preview reasoning model with text and image input and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"temperature":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.16}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.6-flash"},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Legacy model retained for compatibility with older integrations","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2.5,"cache_read":0.4}},"minimax-m2.5-free":{"id":"minimax-m2.5-free","name":"MiniMax-M2.5 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 Codex Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-spark","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.3,"tiers":[{"input":4,"output":12,"cache_read":0.6,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6}},"canonical_model_id":"xai/grok-4.5"},"ring-2.6-1t-free":{"id":"ring-2.6-1t-free","name":"Ring 2.6 1T Free","description":"Legacy model retained for compatibility with older integrations","family":"ring-1t-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-06","release_date":"2026-05-08","last_updated":"2026-05-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":66000},"status":"deprecated","cost":{"input":0,"output":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-10","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3,"cache_read":0.08}},"longcat-2.0-free":{"id":"longcat-2.0-free","name":"LongCat-2.0 Free","description":"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window","family":"longcat","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"meituan/longcat-2.0"},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-3-5-haiku":{"id":"claude-3-5-haiku","name":"Claude Haiku 3.5","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07-31","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"hy3-preview-free":{"id":"hy3-preview-free","name":"Hy3 preview Free","description":"Legacy model retained for compatibility with older integrations","family":"hy3-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-04-20","last_updated":"2026-04-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":0.5,"output":3,"cache_read":0.05}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5}},"space-bunny-free":{"id":"space-bunny-free","name":"Space Bunny Free","description":"Anonymous preview reasoning model for coding, agentic tasks, tool use, and multimodal input","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-23","last_updated":"2026-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"input":524288,"output":524288},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"nemotron-3-super-free":{"id":"nemotron-3-super-free","name":"Nemotron 3 Super Free","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-02","release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":128000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"minimax-m2.1-free":{"id":"minimax-m2.1-free","name":"MiniMax-M2.1 Free","description":"Legacy model retained for compatibility with older integrations","family":"minimax-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0,"output":0,"cache_read":0}},"mimo-v2.6-flash-free":{"id":"mimo-v2.6-flash-free","name":"MiMo-V2.6-Flash Free","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"gemini-3-pro":{"id":"gemini-3-pro","name":"Gemini 3 Pro","description":"Legacy model retained for compatibility with older integrations","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/google"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"nemotron-3-ultra-free":{"id":"nemotron-3-ultra-free","name":"Nemotron 3 Ultra Free","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-02","release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Legacy model retained for compatibility with older integrations","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":2.2,"cache_read":0.1}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"mimo-v2.5-free":{"id":"mimo-v2.5-free","name":"MiMo V2.5 Free","description":"MiMo omni model for text, image, video, audio, and agents","family":"mimo-v2.5-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"grok-code":{"id":"grok-code","name":"Grok Code Fast 1","description":"Legacy model retained for compatibility with older integrations","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-20","last_updated":"2025-08-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"ling-2.6-flash-free":{"id":"ling-2.6-flash-free","name":"Ling 2.6 Flash Free","description":"Legacy model retained for compatibility with older integrations","family":"ling-flash-free","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262100,"output":32800},"status":"deprecated","cost":{"input":0,"output":0}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"deepseek-v4-flash-free":{"id":"deepseek-v4-flash-free","name":"DeepSeek V4 Flash Free","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"hy3-free":{"id":"hy3-free","name":"Hy3 Free","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"hy3-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":190000,"input":192000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"tencent/hy3"},"nemotron-3.5-lightning-free":{"id":"nemotron-3.5-lightning-free","name":"Nemotron 3.5 Lightning Free","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Legacy model retained for compatibility with older integrations","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2.5,"cache_read":0.4}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"mimo-v2-omni-free":{"id":"mimo-v2-omni-free","name":"MiMo V2 Omni Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-omni-free","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1,"output":2,"cache_read":0.2},"canonical_model_id":"xai/grok-build-0.1"},"ling-3.0-flash-free":{"id":"ling-3.0-flash-free","name":"Ling-3.0-flash Free","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-23","last_updated":"2026-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":1.5,"output":7.5,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.8-flash"},"north-mini-code-free":{"id":"north-mini-code-free","name":"North Mini Code Free","description":"Cohere coding model for practical software engineering and agentic edits","family":"north-free","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-09-23","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":64000},"status":"deprecated","cost":{"input":0,"output":0},"canonical_model_id":"cohere/north-mini-code-1-0"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.74,"output":3.84,"cache_read":0.145},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-02-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"big-pickle":{"id":"big-pickle","name":"Big Pickle","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"big-pickle","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-10-17","last_updated":"2025-10-17","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"input":160000,"output":32000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":6.25}},"canonical_model_id":"openai/gpt-5.6-terra"},"mimo-v2-flash-free":{"id":"mimo-v2-flash-free","name":"MiMo V2 Flash Free","description":"Legacy model retained for compatibility with older integrations","family":"mimo-flash-free","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"step-5-preview-free":{"id":"step-5-preview-free","name":"Step 5 Preview Free","description":"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-16","last_updated":"2026-09-20","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"stepfun/step-5-preview"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":1.07,"output":8.5,"cache_read":0.107}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/google"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.3,"output":1.2,"cache_read":0.1}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"x-preview-f-free":{"id":"x-preview-f-free","name":"Ox Alpha Free (Unlimited)","description":"Stealth reasoning model for coding, agentic tasks, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-08-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"status":"deprecated","cost":{"input":0,"output":0,"cache_read":0}},"muse-spark-1.3-contributor-free":{"id":"muse-spark-1.3-contributor-free","name":"Muse Spark 1.3 Free","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for coding and agentic workflows.","family":"muse-free","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":0,"output":0,"cache_read":0}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"kenari":{"id":"kenari","env":["KENARI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://kenari.id/v1","name":"Kenari","doc":"https://kenari.id/docs","models":{"gpt-5-4-mini":{"id":"gpt-5-4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.4-mini"},"gpt-5-6-luna":{"id":"gpt-5-6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.6-luna"},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0},"canonical_model_id":"xai/grok-4.5"},"gemini-2-5-flash":{"id":"gemini-2-5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-2.5-flash"},"nemotron-3-nano-30b-a3b":{"id":"nemotron-3-nano-30b-a3b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"glm-5-3-flash":{"id":"glm-5-3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"kimi-k2-7-code":{"id":"kimi-k2-7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5-6-terra":{"id":"gpt-5-6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.6-terra"},"gemini-2-5-flash-lite":{"id":"gemini-2-5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-2.5-flash-lite"},"mimo-v2-5":{"id":"mimo-v2-5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0,"output":0},"canonical_model_id":"xai/grok-build-0.1"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k3"},"glm-4-7-flash:free":{"id":"glm-4-7-flash:free","name":"GLM-4.7-Flash (Free)","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"gpt-image-2":{"id":"gpt-image-2","name":"GPT-Image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":272000,"output":16384},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-image-2"},"qwen3-8-max":{"id":"qwen3-8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.8-max"},"minimax-m2-7-highspeed":{"id":"minimax-m2-7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"mimo-v2-5-pro":{"id":"mimo-v2-5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"nemotron-3-super-120b-a12b":{"id":"nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"gemini-3-7-flash":{"id":"gemini-3-7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.7-flash"},"step-3-7-flash:free":{"id":"step-3-7-flash:free","name":"Step 3.7 Flash (Free)","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0},"canonical_model_id":"stepfun/step-3.7-flash"},"kimi-k2-6:free":{"id":"kimi-k2-6:free","name":"Kimi K2.6 (Free)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"gpt-5-6-sol":{"id":"gpt-5-6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.6-sol"},"nemotron-3-ultra-550b-a55b":{"id":"nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"gemini-3-1-pro":{"id":"gemini-3-1-pro","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.1-pro-preview"},"glm-5-2":{"id":"glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.2"},"mistral-large:free":{"id":"mistral-large:free","name":"Mistral Large (Free)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"mistral/mistral-large-latest"},"mimo-v2-5:free":{"id":"mimo-v2-5:free","name":"MiMo-V2.5 (Free)","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"xiaomi/mimo-v2.5"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-opus-5"},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0}},"minimax-m2-7":{"id":"minimax-m2-7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"minimax/MiniMax-M2.7"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-fable-5"},"hy3:free":{"id":"hy3:free","name":"Hy3 (Free)","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"tencent/hy3"},"kimi-k2-6":{"id":"kimi-k2-6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"mistral-medium-3-5:free":{"id":"mistral-medium-3-5:free","name":"Mistral Medium 3.5 (Free)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"mistral/mistral-medium-2604"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0,"output":0},"canonical_model_id":"minimax/MiniMax-M3"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-opus-4-8"},"glm-5-3":{"id":"glm-5-3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.3"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-sonnet-5"},"deepseek-v4-1-flash":{"id":"deepseek-v4-1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"qwen3-7-plus":{"id":"qwen3-7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.7-plus"},"gemini-3-1-flash-lite":{"id":"gemini-3-1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.1-flash-lite"},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"tencent/hy3"},"glm-5-1":{"id":"glm-5-1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0},"canonical_model_id":"zhipuai/glm-5.1"},"nemotron-3-super-120b-a12b:free":{"id":"nemotron-3-super-120b-a12b:free","name":"Nemotron 3 Super 120B A12B (Free)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"gpt-5-5":{"id":"gpt-5-5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-5.5"},"grok-imagine-image-2-0":{"id":"grok-imagine-image-2-0","name":"Grok Imagine Image 2.0","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":8000,"output":0},"cost":{"input":0,"output":0},"canonical_model_id":"xai/grok-imagine-image-2.0"},"deepseek-v4-flash:free":{"id":"deepseek-v4-flash:free","name":"DeepSeek V4 Flash (Free)","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":0,"output":0},"canonical_model_id":"xai/grok-4.6"},"whisper-large-v3-turbo":{"id":"whisper-large-v3-turbo","name":"Whisper Large v3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0,"output":0},"canonical_model_id":"openai/whisper-large-v3-turbo"},"gemini-3-6-flash":{"id":"gemini-3-6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.6-flash"},"gemini-3-1-flash-tts":{"id":"gemini-3-1-flash-tts","name":"Gemini 3.1 Flash TTS Preview","description":"Low-latency speech generation with steerable prompts and expressive audio tags","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-15","last_updated":"2026-04-15","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":8192,"output":16384},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.1-flash-tts-preview"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"kimi-k2-7-code:free":{"id":"kimi-k2-7-code:free","name":"Kimi K2.7 Code (Free)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gemini-3-5-flash":{"id":"gemini-3-5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemini-3.5-flash"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-oss-120b"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0,"output":0},"canonical_model_id":"anthropic/claude-opus-4-7"},"step-3-7-flash":{"id":"step-3-7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0,"output":0},"canonical_model_id":"stepfun/step-3.7-flash"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0,"output":0},"canonical_model_id":"deepseek/deepseek-v4-flash"}}},"kimi-code-plan-global":{"id":"kimi-code-plan-global","env":["KIMI_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.kimi.ai/coding/v1","name":"Kimi For Coding (kimi.ai)","doc":"https://www.kimi.ai/code/docs/en/kimi-code/models.html","models":{"kimi-for-coding-highspeed":{"id":"kimi-for-coding-highspeed","name":"Kimi For Coding HighSpeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"kimi-for-coding":{"id":"kimi-for-coding","name":"kimi-for-coding","description":"Kimi coding model with more efficient thinking and up to 1M context, available through Kimi Code","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.8-preview"},"k3-256k":{"id":"k3-256k","name":"Kimi K3-256K","description":"256K-context version of Kimi K3, reducing token consumption for shorter coding sessions","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k3"},"k3":{"id":"k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k3"}}},"trustedrouter":{"id":"trustedrouter","env":["TRUSTEDROUTER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.trustedrouter.com/v1","name":"TrustedRouter","doc":"https://trustedrouter.com/docs","models":{"trustedrouter/cheap":{"id":"trustedrouter/cheap","name":"Cheap","description":"TrustedRouter low-cost routing alias that prefers inexpensive healthy model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/synth-code":{"id":"trustedrouter/synth-code","name":"Synth Code","description":"TrustedRouter code synthesis orchestration alias that combines multiple model responses into one answer.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/e2e":{"id":"trustedrouter/e2e","name":"End-to-End Encrypted","description":"TrustedRouter privacy routing alias for end-to-end encrypted provider routes where available.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/zdr":{"id":"trustedrouter/zdr","name":"Zero Data Retention","description":"TrustedRouter privacy routing alias that prefers zero data retention model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/fast":{"id":"trustedrouter/fast","name":"Fast","description":"TrustedRouter speed routing alias that prefers low-latency healthy model endpoints.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/synth":{"id":"trustedrouter/synth","name":"Synth","description":"TrustedRouter synthesis orchestration alias that combines multiple model responses into one answer.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-20","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}},"trustedrouter/auto":{"id":"trustedrouter/auto","name":"Auto","description":"TrustedRouter automatic routing alias that chooses a healthy supported model endpoint for the request.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-06-27","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072}}}},"wafer.ai":{"id":"wafer.ai","env":["WAFER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://pass.wafer.ai/v1","name":"Wafer","doc":"https://docs.wafer.ai/wafer-pass","models":{"Kimi-K2.6":{"id":"Kimi-K2.6","name":"Kimi K2.6","description":"Kimi K2.6 sparse MoE model with a 262K context window. Available serverless and not included in standard Wafer Pass. Non-ZDR only: requests with `Wafer-ZDR: required` are rejected.","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":1.14,"output":4.8,"cache_read":0.19,"cache_write":0},"canonical_model_id":"moonshotai/kimi-k2.6"},"MiniMax-M3":{"id":"MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.07,"cache_write":0,"tiers":[{"input":0.66,"output":2.64,"cache_read":0.13,"cache_write":0,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.66,"output":2.64,"cache_read":0.13,"cache_write":0}},"canonical_model_id":"minimax/MiniMax-M3"},"GLM-5.1":{"id":"GLM-5.1","name":"GLM-5.1","description":"General Language Model 5.1 — high-quality bilingual (EN/ZH) generation with strong coding and reasoning capabilities.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-07","last_updated":"2026-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.1,"cache_write":0}},"GLM-5.2":{"id":"GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.1,"cache_read":0.2,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"glm5.2-fast":{"id":"glm5.2-fast","name":"GLM5.2-Fast","description":"The same model served for high TPS.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":10.25,"cache_read":0.5,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"}}},"zhipuai":{"id":"zhipuai","env":["ZHIPU_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://open.bigmodel.cn/api/paas/v4","name":"Zhipu AI","doc":"https://docs.z.ai/guides/overview/pricing","models":{"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":5,"output":22,"cache_read":1.2,"cache_write":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":1,"output":3.2,"cache_read":0.2,"cache_write":0}},"glm-5.3-flashx":{"id":"glm-5.3-flashx","name":"GLM-5.3-FlashX","description":"High-speed GLM-5.3-Flash serving option for coding and agent workflows","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-09-18","last_updated":"2026-09-18","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.37,"output":1.25,"cache_read":0.075,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.2,"output":1.1,"cache_read":0.03,"cache_write":0}},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0}},"glm-4.5-flash":{"id":"glm-4.5-flash","name":"GLM-4.5-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":16384},"cost":{"input":0.6,"output":1.8}},"glm-4.6v-flash":{"id":"glm-4.6v-flash","name":"GLM-4.6V-Flash","description":"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6v-flash"},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":0.3,"output":0.9}}}},"lynkr":{"id":"lynkr","env":["LYNKR_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"http://127.0.0.1:8081/v1","name":"Lynkr","doc":"https://github.com/Fast-Editor/Lynkr","models":{"lynkr-auto":{"id":"lynkr-auto","name":"Lynkr Auto (complexity routing)","description":"Virtual model: Lynkr scores each request on complexity and routes it to the tier model the user configured (local Ollama/llama.cpp for simple requests, configured cloud providers for complex ones).","family":"auto","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2026-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0,"output":0}}}},"meganova":{"id":"meganova","env":["MEGANOVA_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.meganova.ai/v1","name":"Meganova","doc":"https://docs.meganova.ai","models":{"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.1,"output":0.3}},"XiaomiMiMo/MiMo-V2-Flash":{"id":"XiaomiMiMo/MiMo-V2-Flash","name":"MiMo V2 Flash","description":"MiMo flash model for fast multimodal assistance and agent workflows","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32000},"cost":{"input":0.1,"output":0.3}},"Qwen/Qwen3.5-Plus":{"id":"Qwen/Qwen3.5-Plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02","last_updated":"2026-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.4,"output":2.4,"reasoning":2.4}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.09,"output":0.6}},"Qwen/Qwen2.5-VL-32B-Instruct":{"id":"Qwen/Qwen2.5-VL-32B-Instruct","name":"Qwen2.5 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.2,"output":0.6}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-25","last_updated":"2025-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":1}},"deepseek-ai/DeepSeek-V3.2":{"id":"deepseek-ai/DeepSeek-V3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.26,"output":0.38}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-07","release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":64000},"cost":{"input":0.5,"output":2.15}},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-03-24","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":0.88}},"deepseek-ai/DeepSeek-V3.2-Exp":{"id":"deepseek-ai/DeepSeek-V3.2-Exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-10","last_updated":"2025-10-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":164000,"output":164000},"cost":{"input":0.27,"output":0.4}},"MiniMaxAI/MiniMax-M2.1":{"id":"MiniMaxAI/MiniMax-M2.1","name":"MiniMax M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.28,"output":1.2}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo Instruct 2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.02,"output":0.04}},"mistralai/Mistral-Small-3.2-24B-Instruct-2506":{"id":"mistralai/Mistral-Small-3.2-24B-Instruct-2506","name":"Mistral Small 3.2 24B Instruct","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"moonshotai/Kimi-K2.5":{"id":"moonshotai/Kimi-K2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2026-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":2.8}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.6}},"zai-org/GLM-4.7":{"id":"zai-org/GLM-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.2,"output":0.8}},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.8,"output":2.56}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.45,"output":1.9}}}},"ovhcloud":{"id":"ovhcloud","env":["OVHCLOUD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1","name":"OVHcloud AI Endpoints","doc":"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog//","models":{"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8-27B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.47,"output":3.19},"canonical_model_id":"alibaba/qwen3.8-27b"},"qwen3guard-gen-8b":{"id":"qwen3guard-gen-8b","name":"Qwen3Guard-Gen-8B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"Mistral-7B-Instruct-v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.11,"output":0.11}},"qwen3guard-gen-0.6b":{"id":"qwen3guard-gen-0.6b","name":"Qwen3Guard-Gen-0.6B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-01-22","last_updated":"2026-01-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"gpt-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.05,"output":0.18}},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5-9B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.12,"output":0.18}},"meta-llama-3_3-70b-instruct":{"id":"meta-llama-3_3-70b-instruct","name":"Meta-Llama-3_3-70B-Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-01","last_updated":"2025-04-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.74,"output":0.74}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5-397B-A17B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-18","last_updated":"2026-05-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.71,"output":4.25}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"Qwen2.5-VL-72B-Instruct","description":"Multimodal model for analyzing text, images, documents, and rich media","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-03-31","last_updated":"2025-03-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":1.01,"output":1.01}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6-27B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.47,"output":3.19}},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"Mistral-Small-3.2-24B-Instruct-2506","description":"Efficient Mistral model for fast chat, extraction, and production assistants","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-16","last_updated":"2025-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.31}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"gpt-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.09,"output":0.47}},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"Mistral-Nemo-Instruct-2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.14,"output":0.14}}}},"requesty":{"id":"requesty","env":["REQUESTY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://router.requesty.ai/v1","name":"Requesty","doc":"https://requesty.ai/solution/llm-routing/models","models":{"ring-2.6-1t":{"id":"ring-2.6-1t","name":"ring-2.6-1t","description":"Inclusion AI ring-2.6-1t","family":"ring","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-08","last_updated":"2026-05-08","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275},"canonical_model_id":"openai/gpt-5.4"},"nemotron-3-ultra-nvfp4":{"id":"nemotron-3-ultra-nvfp4","name":"nemotron-3-ultra-nvfp4","description":"Nemotron-3-Ultra-550B-A55B-NVFP4 is a frontier-scale large language model (LLM) trained by NVIDIA, designed to deliver strong agentic, reasoning, and conversational capabilities. It is optimized for the most demanding workloads, including complex multi-step agents, long-context analysis, and high-accuracy reasoning over code, math, and science. The model employs a hybrid Latent Mixture-of-Experts (LatentMoE) architecture, utilizing interleaved Mamba-2 and MoE layers, along with select Attention layers. Like the Super model, the Ultra model incorporates Multi-Token Prediction (MTP) layers for faster text generation and improved quality, and it is trained using an NVFP4 pre-training recipe to maximize compute efficiency. The model has 55B active parameters and 550B parameters in total.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.4,"cache_read":0.12}},"gpt-6.1-sol@eu":{"id":"gpt-6.1-sol@eu","name":"GPT-6.1 Sol (EU)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.12,"cache_write":3,"tiers":[{"input":4.8,"output":18,"cache_read":0.24,"cache_write":6,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.8,"output":18,"cache_read":0.24,"cache_write":6}},"canonical_model_id":"openai/gpt-6.1-sol"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"cache_read":30},"canonical_model_id":"openai/gpt-5.4-pro"},"claude-opus-5@eu":{"id":"claude-opus-5@eu","name":"Claude Opus 5 (EU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.43,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"ling-2.6-1t":{"id":"ling-2.6-1t","name":"ling-2.6-1t","description":"Inclusion AI ling-2.6-1t","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.3,"output":2.5}},"claude-haiku-5-5@eu":{"id":"claude-haiku-5-5@eu","name":"Claude Haiku 5.5 (EU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.02,"cache_write":0.14,"tiers":[{"input":0.55,"output":2.75,"cache_read":0.06,"cache_write":0.69,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gpt-4o-mini@eu":{"id":"gpt-4o-mini@eu","name":"GPT-4o mini (EU)","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.165,"output":0.66,"cache_read":0.0825},"canonical_model_id":"openai/gpt-4o-mini"},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":2.5,"output":7.5,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"nemotron-3.5-lightning-30b-a3b":{"id":"nemotron-3.5-lightning-30b-a3b","name":"nemotron-3.5-lightning-30b-a3b","description":"NVIDIA Nemotron 3.5 Lightning 30B-A3B is a hybrid Mamba-2 + MoE + Attention model with 30B total and 3B active parameters, pre-trained on over 20T tokens with an NVFP4 recipe and Multi-Token Prediction for fast generation. Up to 1M token context for long-running autonomous agents, sub-agent workhorse deployments, and agentic workflows. Supports reasoning and tool calling. English and coding languages plus Spanish, French, German, Italian, and Japanese. Open weights under the OpenMDW License Agreement v1.1. Part of the NVIDIA Nemotron family.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.5"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.5-pro"},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2},"canonical_model_id":"xai/grok-4.7"},"mistral-medium-3-5@eu":{"id":"mistral-medium-3-5@eu","name":"mistral-medium-3-5@eu","description":"Mistral Medium 3.5 is a dense 128B instruction following model from Mistral AI. It supports text and image inputs with text output, and is designed for agentic workflows, coding, and complex multi step reasoning. It is particularly strong at reliable multi tool calling and long horizon tasks, with a 256K context window, configurable reasoning effort per request, and a custom vision encoder that handles variable image sizes and aspect ratios. Self hostable on as few as four GPUs and available under open weights.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"gpt-5@eu":{"id":"gpt-5@eu","name":"GPT-5 (EU)","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375},"canonical_model_id":"openai/gpt-5"},"kimi-k2.5@eu":{"id":"kimi-k2.5@eu","name":"Kimi K2.5 (EU)","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16000},"cost":{"input":0.72,"output":3.6,"cache_read":0.72,"cache_write":0.72},"canonical_model_id":"moonshotai/kimi-k2.5"},"deepseek-v4-flash-0731@eu":{"id":"deepseek-v4-flash-0731@eu","name":"DeepSeek V4 Flash 0731 (EU)","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"seed-2.0-pro":{"id":"seed-2.0-pro","name":"Seed 2.0 Pro","description":"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"canonical_model_id":"bytedance-seed/seed-2.0-pro"},"kimi-k3@eu":{"id":"kimi-k3@eu","name":"Kimi K3 (EU)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"seed-1.8":{"id":"seed-1.8","name":"seed-1.8","description":"Optimized specifically for multimodal agent scenarios. It features enhanced agent capabilities, upgraded multimodal comprehension, and more flexible context management.","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.6,"cache_read":0.07},"canonical_model_id":"zhipuai/glm-5.3-flash"},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.26,"output":2.6},"canonical_model_id":"alibaba/qwen3.5-27b"},"mistral-medium-latest@eu":{"id":"mistral-medium-latest@eu","name":"Mistral Medium (latest) (EU)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"canonical_model_id":"mistral/mistral-medium-latest"},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"glm-5.2-fast","description":"GLM-5.2 introduces a robust 1M-token context and advanced, multi-effort coding capabilities to significantly enhance performance on long-horizon tasks. Its new IndexShare architecture and improved MTP layer simultaneously boost efficiency by reducing per-token FLOPs and increasing speculative decoding lengths. A 743B-parameter model in Zhipu AI's GLM series, designed to plan, execute, and iterate autonomously on extended, engineering-grade tasks.","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-07-13","last_updated":"2026-07-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":2.1,"output":6.6,"cache_read":0.21}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-v4-pro-0813@eu":{"id":"deepseek-v4-pro-0813@eu","name":"DeepSeek V4 Pro 0813 (EU)","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":1.75,"output":3.5,"cache_read":0.44},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"inkling-256k":{"id":"inkling-256k","name":"inkling-256k","description":"Inkling 256K is the extended context variant of Inkling, a large MoE hybrid reasoning model from Thinking Machines with audio and vision input support and a 256K context window.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374}},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0},"canonical_model_id":"meta/muse-glimmer-30b"},"claude-opus-4-8@eu":{"id":"claude-opus-4-8@eu","name":"Claude Opus 4.8 (EU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-8"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":3,"output":15,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"claude-fable-5@eu":{"id":"claude-fable-5@eu","name":"Claude Fable 5 (EU)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"nemotron-3-nano-omni@eu":{"id":"nemotron-3-nano-omni@eu","name":"nemotron-3-nano-omni@eu","description":"The most open, efficient, and accurate omni modal reasoning model for agentic AI.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06}},"gpt-4.1@eu":{"id":"gpt-4.1@eu","name":"GPT-4.1 (EU)","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2.2,"output":8.8,"cache_read":0.55},"canonical_model_id":"openai/gpt-4.1"},"gemini-3.1-flash-lite@eu":{"id":"gemini-3.1-flash-lite@eu","name":"Gemini 3.1 Flash Lite (EU)","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.275,"output":1.65,"cache_read":0.0275,"cache_write":0.091663},"canonical_model_id":"google/gemini-3.1-flash-lite"},"nvidia-nemotron-3-super-120b-a12b":{"id":"nvidia-nemotron-3-super-120b-a12b","name":"nvidia-nemotron-3-super-120b-a12b","description":"NVIDIA Nemotron 3 Super is a hybrid Mixture-of-Experts (MoE) model engineered for highest compute efficiency and accuracy in multi-agent applications and specialized agentic systems. It is optimized to run many collaborating agents per application on a single GPU, delivering high accuracy for reasoning, tool use, and instruction following.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.5}},"mistral-large-4":{"id":"mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":524288},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"canonical_model_id":"mistral/mistral-large-4"},"gemini-3.5-flash-lite@eu":{"id":"gemini-3.5-flash-lite@eu","name":"Gemini 3.5 Flash Lite (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.033},"canonical_model_id":"google/gemini-3.5-flash-lite"},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"kimi-k2.7-code@eu":{"id":"kimi-k2.7-code@eu","name":"Kimi K2.7 Code (EU)","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.25,"output":4.5,"cache_read":0.31},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"glm-5.1@eu":{"id":"glm-5.1@eu","name":"GLM-5.1 (EU)","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":200000},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"canonical_model_id":"zhipuai/glm-5.1"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"claude-haiku-4-5@eu":{"id":"claude-haiku-4-5@eu","name":"Claude Haiku 4.5 (latest) (EU)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5"},"claude-sonnet-4-5@eu":{"id":"claude-sonnet-4-5@eu","name":"Claude Sonnet 4.5 (latest) (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125,"tiers":[{"input":6.6,"output":24.75,"cache_read":0.6,"cache_write":8.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6.6,"output":24.75,"cache_read":0.6,"cache_write":8.25}},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"laguna-xs.2":{"id":"laguna-xs.2","name":"Laguna XS.2","description":"Agentic coding model from Poolside in the XS size class for local deployment","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-xs.2"},"leanstral-1-5@eu":{"id":"leanstral-1-5@eu","name":"leanstral-1-5@eu","description":"Leanstral 1.5 is an updated Lean 4 formal proof engineering model from Mistral AI, optimized for automated theorem proving and autoformalization. It has 119B total parameters with 6.5B active and supports a 256K token context window. It supports native function calling and structured output.","family":"leanstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"claude-sonnet-5-5@eu":{"id":"claude-sonnet-5-5@eu","name":"Claude Sonnet 5.5 (EU)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"nemotron-3-super-120b-a12b":{"id":"nemotron-3-super-120b-a12b","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-sonnet-4-6@eu":{"id":"claude-sonnet-4-6@eu","name":"Claude Sonnet 4.6 (EU)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.3,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":7,"cache_read":0.15},"canonical_model_id":"google/gemini-3.6-flash"},"gpt-5.5@eu":{"id":"gpt-5.5@eu","name":"GPT-5.5 (EU)","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55,"tiers":[{"input":11,"output":49.5,"cache_read":1.1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":11,"output":49.5,"cache_read":1.1}},"canonical_model_id":"openai/gpt-5.5"},"ling-3.0-tiny":{"id":"ling-3.0-tiny","name":"ling-3.0-tiny","description":"Ling-3.0-tiny is an efficient 7.9B parameter MoE model from inclusionAI with only 1.3B active parameters per token. Built for responsive agents, reliable instruction following and multi turn conversation, with a 256K context window, native function calling, prompt caching and switchable Thinking and Instant modes.","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"claude-opus-5-5@eu":{"id":"claude-opus-5-5@eu","name":"Claude Opus 5.5 (EU)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"gpt-5-mini@eu":{"id":"gpt-5-mini@eu","name":"GPT-5 Mini (EU)","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.275,"output":2.2,"cache_read":0.0275},"canonical_model_id":"openai/gpt-5-mini"},"mistral-medium-3-5":{"id":"mistral-medium-3-5","name":"mistral-medium-3-5","description":"Mistral Medium 3.5 is a dense 128B instruction following model from Mistral AI. It supports text and image inputs with text output, and is designed for agentic workflows, coding, and complex multi step reasoning. It is particularly strong at reliable multi tool calling and long horizon tasks, with a 256K context window, configurable reasoning effort per request, and a custom vision encoder that handles variable image sizes and aspect ratios. Self hostable on as few as four GPUs and available under open weights.","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.65,"output":8.25,"cache_read":1.65}},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5}},"canonical_model_id":"xai/grok-4.3"},"nemotron-3-ultra-550b-a55b":{"id":"nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"nemotron-3-nano-omni-30b-a3b-reasoning":{"id":"nemotron-3-nano-omni-30b-a3b-reasoning","name":"Nemotron 3 Nano Omni 30B A3B Reasoning","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":20480},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.07,"output":0.34,"cache_read":0.07},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gpt-5.4@eu":{"id":"gpt-5.4@eu","name":"GPT-5.4 (EU)","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.75,"output":16.5,"cache_read":0.275,"tiers":[{"input":5.5,"output":24.75,"cache_read":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5.5,"output":24.75,"cache_read":0.55}},"canonical_model_id":"openai/gpt-5.4"},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Claude Opus 4.1 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1"},"grok-4.2-beta":{"id":"grok-4.2-beta","name":"grok-4.2-beta","description":"Grok 4.20 Beta is xAI's newest flagship model with industry-leading speed and agentic tool calling capabilities. It combines the lowest hallucination rate on the market with strict prompt adherance, delivering consistently precise and truthful responses.","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-19","last_updated":"2026-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":2,"output":6,"cache_read":0.2,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":0.4,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.4,"cache_write":4}}},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":2},"canonical_model_id":"google/gemini-3.1-flash-image"},"nemotron-lightning-3.5-30b-a3b":{"id":"nemotron-lightning-3.5-30b-a3b","name":"nemotron-lightning-3.5-30b-a3b","description":"Nemotron-Lightning-3.5-30B-A3B is a 30B-parameter Mixture-of-Experts language model (3B active) from NVIDIA's Nemotron-H family, built on a hybrid Mamba-Transformer architecture for efficient long-context inference. Like other models in the family, it responds to queries by first generating a reasoning trace and then concluding with a final response, with reasoning behavior configurable through a flag in the chat template. It includes a multi-token prediction (MTP) speculative decoding head for low-latency serving.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-15","last_updated":"2026-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.05,"output":0.2,"cache_read":0.01}},"gpt-5-nano@eu":{"id":"gpt-5-nano@eu","name":"GPT-5 Nano (EU)","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":0.055,"output":0.44,"cache_read":0.0055},"canonical_model_id":"openai/gpt-5-nano"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":9,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":9}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}},"canonical_model_id":"xai/grok-4.5"},"seed-2.0-mini":{"id":"seed-2.0-mini","name":"Seed 2.0 Mini","description":"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.1,"output":0.4,"cache_read":0.02},"canonical_model_id":"bytedance-seed/seed-2.0-mini"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"kimi-k2.6@eu":{"id":"kimi-k2.6@eu","name":"Kimi K2.6 (EU)","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":128000},"cost":{"input":0.95,"output":4,"cache_read":0.95},"canonical_model_id":"moonshotai/kimi-k2.6"},"qwen3.5-2b":{"id":"qwen3.5-2b","name":"qwen3.5-2b","description":"Qwen3.5-2B is a compact yet capable model from Alibaba's Qwen3.5 series. It features a 262K token context window, support for 201 languages, thinking/reasoning mode, and tool calling for agentic workflows. A strong choice for prototyping, fine-tuning, and efficient multilingual deployments.","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-03-10","last_updated":"2026-03-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.02,"output":0.1}},"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"release_date":"2026-06-15","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"sakana/fugu-ultra"},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":1.2},"canonical_model_id":"minimax/MiniMax-M2.7"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.583},"canonical_model_id":"google/gemini-3.5-flash"},"ling-2.6-flash":{"id":"ling-2.6-flash","name":"ling-2.6-flash","description":"Inclusion AI ling-2.6-flash","family":"ling","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.3}},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":1048576,"output":32768},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":4.5},"canonical_model_id":"google/gemini-3-pro-image"},"gemini-3.7-flash@eu":{"id":"gemini-3.7-flash@eu","name":"Gemini 3.7 Flash (EU)","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"canonical_model_id":"google/gemini-3.7-flash"},"claude-fable-5.1":{"id":"claude-fable-5.1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"gpt-4.1-nano@eu":{"id":"gpt-4.1-nano@eu","name":"GPT-4.1 nano (EU)","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.11,"output":0.44,"cache_read":0.0275},"canonical_model_id":"openai/gpt-4.1-nano"},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"gpt-5.1@eu":{"id":"gpt-5.1@eu","name":"GPT-5.1 (EU)","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":11,"cache_read":0.1375},"canonical_model_id":"openai/gpt-5.1"},"gemini-2.5-flash-lite@eu":{"id":"gemini-2.5-flash-lite@eu","name":"Gemini 2.5 Flash-Lite (EU)","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.18333},"canonical_model_id":"google/gemini-2.5-flash-lite"},"nemotron-3-nano-omni":{"id":"nemotron-3-nano-omni","name":"nemotron-3-nano-omni","description":"The most open, efficient, and accurate omni modal reasoning model for agentic AI.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-05-20","last_updated":"2026-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":300000},"cost":{"input":0.06,"output":0.24,"cache_read":0.06}},"claude-sonnet-4@eu":{"id":"claude-sonnet-4@eu","name":"Claude Sonnet 4 (latest) (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}},"canonical_model_id":"anthropic/claude-sonnet-4-0"},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":32768},"cost":{"input":1.87,"output":4.68,"cache_read":0.374},"canonical_model_id":"thinkingmachines/inkling"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0027},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"deepseek-v4.1-flash@eu":{"id":"deepseek-v4.1-flash@eu","name":"DeepSeek V4.1 Flash (EU)","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":393216},"cost":{"input":0.5,"output":1.5,"cache_read":0.05},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-2.4T-A95B@eu":{"id":"qwen3.8-2.4T-A95B@eu","name":"Qwen3.8 2.4T A95B (EU)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.63},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.16,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen3.8-flash-next":{"id":"qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-flash-next"},"qwen3.8-flash-next@eu":{"id":"qwen3.8-flash-next@eu","name":"Qwen3.8 Flash Next (EU)","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-flash-next"},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165},"canonical_model_id":"mistral/mistral-small-2603"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5.5,"output":33,"cache_read":0.55},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-5@eu":{"id":"claude-sonnet-5@eu","name":"Claude Sonnet 5 (EU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"gemini-3.8-flash@eu":{"id":"gemini-3.8-flash@eu","name":"Gemini 3.8 Flash (EU)","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.0825},"canonical_model_id":"google/gemini-3.8-flash"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":1,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"glm-5.3@eu":{"id":"glm-5.3@eu","name":"GLM-5.3 (EU)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"gemini-2.5-flash@eu":{"id":"gemini-2.5-flash@eu","name":"Gemini 2.5 Flash (EU)","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.55},"canonical_model_id":"google/gemini-2.5-flash"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":2.55,"cache_read":0.16},"canonical_model_id":"zhipuai/glm-5.2"},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.14,"output":0.58,"cache_read":0.035},"canonical_model_id":"tencent/hy3"},"glm-5.2@eu":{"id":"glm-5.2@eu","name":"GLM-5.2 (EU)","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"gpt-5.6-sol@eu":{"id":"gpt-5.6-sol@eu","name":"GPT-5.6 Sol (EU)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5,"tiers":[{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11}},"canonical_model_id":"openai/gpt-5.6-sol"},"seed-2.0-code":{"id":"seed-2.0-code","name":"Seed 2.0 Code","description":"ByteDance Seed coding model for multimodal software engineering and long-running agents","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-02-14","last_updated":"2026-02-14","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.5,"output":3,"cache_read":0.1},"canonical_model_id":"bytedance-seed/seed-2.0-code"},"devstral-latest@eu":{"id":"devstral-latest@eu","name":"devstral-latest@eu","description":"An enterprise grade text model, that excels at using tools to explore codebases, editing multiple files and power software engineering agents.","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"gemini-2.5-pro@eu":{"id":"gemini-2.5-pro@eu","name":"Gemini 2.5 Pro (EU)","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.25,"output":10,"cache_read":0.31,"cache_write":2.375,"tiers":[{"input":2.5,"output":15,"cache_read":0.62,"cache_write":4.75,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.62,"cache_write":4.75}},"canonical_model_id":"google/gemini-2.5-pro"},"gpt-5.6-terra@eu":{"id":"gpt-5.6-terra@eu","name":"GPT-5.6 Terra (EU)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.1},"canonical_model_id":"xai/grok-build-0.1"},"glm-5.3-flash@eu":{"id":"glm-5.3-flash@eu","name":"GLM-5.3-Flash (EU)","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":262144},"cost":{"input":0.2,"output":0.6,"cache_read":0.07},"canonical_model_id":"zhipuai/glm-5.3-flash"},"minimax-m2.7-highspeed":{"id":"minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":1.2},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"deepseek-v4-pro@eu":{"id":"deepseek-v4-pro@eu","name":"DeepSeek V4 Pro (EU)","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.75,"output":3.5,"cache_read":0.44},"canonical_model_id":"deepseek/deepseek-v4-pro"},"devstral-latest":{"id":"devstral-latest","name":"devstral-latest","description":"An enterprise grade text model, that excels at using tools to explore codebases, editing multiple files and power software engineering agents.","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.44,"output":2.2,"cache_read":0.44}},"o4-mini@eu":{"id":"o4-mini@eu","name":"o4-mini (EU)","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.21,"output":4.84,"cache_read":0.3025},"canonical_model_id":"openai/o4-mini"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.13,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.63,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"mistral-small-2603@eu":{"id":"mistral-small-2603@eu","name":"Mistral Small 4 (EU)","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.165,"output":0.66,"cache_read":0.165},"canonical_model_id":"mistral/mistral-small-2603"},"qwen3.8-2.4T-A95B":{"id":"qwen3.8-2.4T-A95B","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.8-flash"},"gemini-3.5-flash@eu":{"id":"gemini-3.5-flash@eu","name":"Gemini 3.5 Flash (EU)","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.65,"output":9.9,"cache_read":0.165,"cache_write":1.7413},"canonical_model_id":"google/gemini-3.5-flash"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"nemotron-3.5-content-safety":{"id":"nemotron-3.5-content-safety","name":"Nemotron 3.5 Content Safety","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"nvidia/nemotron-3.5-content-safety"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro"},"nvidia-nemotron-3-ultra":{"id":"nvidia-nemotron-3-ultra","name":"nvidia-nemotron-3-ultra","description":"NVIDIA Nemotron 3 Ultra is NVIDIA's strongest open-weights reasoning model, positioned near GPT-5.4 Mini (xhigh) and ahead of DeepSeek V4-Flash and Qwen3.5-397B-A17B.","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":false,"structured_output":false,"release_date":"2026-06-23","last_updated":"2026-06-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":131072},"cost":{"input":0.5,"output":2.5}},"claude-fable-5.1@eu":{"id":"claude-fable-5.1@eu","name":"Claude Fable 5.1 (EU)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5-1"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"gpt-6-luna@eu":{"id":"gpt-6-luna@eu","name":"GPT-6 Luna (EU)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.12,"output":0.6,"cache_read":0.012,"cache_write":0.15,"tiers":[{"input":0.24,"output":0.9,"cache_read":0.024,"cache_write":0.3,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.24,"output":0.9,"cache_read":0.024,"cache_write":0.3}},"canonical_model_id":"openai/gpt-6-luna"},"claude-opus-4-6@eu":{"id":"claude-opus-4-6@eu","name":"Claude Opus 4.6 (EU)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-6"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"leanstral-1-5":{"id":"leanstral-1-5","name":"leanstral-1-5","description":"Leanstral 1.5 is an updated Lean 4 formal proof engineering model from Mistral AI, optimized for automated theorem proving and autoformalization. It has 119B total parameters with 6.5B active and supports a 256K token context window. It supports native function calling and structured output.","family":"leanstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"release_date":"2026-05-27","last_updated":"2026-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0}},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625},"canonical_model_id":"alibaba/qwen3.6-plus"},"gpt-5.6-luna@eu":{"id":"gpt-5.6-luna@eu","name":"GPT-5.6 Luna (EU)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275,"tiers":[{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55}},"canonical_model_id":"openai/gpt-5.6-luna"},"claude-opus-4-7@eu":{"id":"claude-opus-4-7@eu","name":"Claude Opus 4.7 (EU)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"kat-coder-pro":{"id":"kat-coder-pro","name":"kat-coder-pro","description":"KAT-Coder-Pro V2 by KwaiKAT is a non-reasoning model optimized for agentic coding. It delivers strong performance on reasoning-style tasks while requiring significantly fewer output tokens than peer models. With the 1210 release, it achieved a score of 64 on the Artificial Analysis Intelligence Index, placing it in the global Top 10 and ranking first among all non-reasoning models.","family":"kat-coder","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"release_date":"2026-03-27","last_updated":"2026-03-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.3,"output":1.2}},"laguna-m.1":{"id":"laguna-m.1","name":"Laguna M.1","description":"Poolside's open-weight model for agentic coding and long-horizon work","family":"laguna","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"poolside/laguna-m.1"},"gpt-6-sol@eu":{"id":"gpt-6-sol@eu","name":"GPT-6 Sol (EU)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.4,"output":12,"cache_read":0.24,"cache_write":3,"tiers":[{"input":4.8,"output":18,"cache_read":0.48,"cache_write":6,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.8,"output":18,"cache_read":0.48,"cache_write":6}},"canonical_model_id":"openai/gpt-6-sol"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}},"canonical_model_id":"xai/grok-4.6"},"mistral-large-4@eu":{"id":"mistral-large-4@eu","name":"Mistral Large 4 (EU)","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":524288},"cost":{"input":0.68,"output":2.09,"cache_read":0.07},"canonical_model_id":"mistral/mistral-large-4"},"minimax-m3@eu":{"id":"minimax-m3@eu","name":"MiniMax-M3 (EU)","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.4,"output":2,"cache_read":0.1},"canonical_model_id":"minimax/MiniMax-M3"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":0.32,"output":1.28,"cache_read":0.032,"cache_write":0.4},"canonical_model_id":"alibaba/qwen3.7-plus"},"gpt-4.1-mini@eu":{"id":"gpt-4.1-mini@eu","name":"GPT-4.1 mini (EU)","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.44,"output":1.76,"cache_read":0.11},"canonical_model_id":"openai/gpt-4.1-mini"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"claude-opus-4-5@eu":{"id":"claude-opus-4-5@eu","name":"Claude Opus 4.5 (latest) (EU)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-5"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.28,"output":0.56,"cache_read":0.07},"canonical_model_id":"deepseek/deepseek-v4-flash"},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.44,"output":2.2,"cache_read":0.44},"canonical_model_id":"mistral/mistral-medium-latest"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.1-flash-lite"}}},"mistral":{"id":"mistral","env":["MISTRAL_API_KEY"],"npm":"@ai-sdk/mistral","name":"Mistral","doc":"https://docs.mistral.ai/getting-started/models/","models":{"open-mistral-nemo":{"id":"open-mistral-nemo","name":"Open Mistral Nemo","description":"Legacy model retained for compatibility with older integrations","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"codestral-latest":{"id":"codestral-latest","name":"Codestral (latest)","description":"Mistral code model for completions, refactors, and developer IDE workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-05-29","last_updated":"2025-01-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":4096},"cost":{"input":0.3,"output":0.9,"cache_read":0.03}},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral Large 2.1","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-18","last_updated":"2024-11-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"status":"deprecated","cost":{"input":2,"output":6},"canonical_model_id":"mistral/mistral-large-2411"},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","description":"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"voxtral-mini-tts-latest":{"id":"voxtral-mini-tts-latest","name":"Voxtral Mini TTS (latest)","description":"Multilingual text-to-speech model with zero-shot voice cloning","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-03-01","last_updated":"2026-03-01","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"mistral-medium-2508":{"id":"mistral-medium-2508","name":"Mistral Medium 3.1","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-08-12","last_updated":"2025-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"mistral-small-latest":{"id":"mistral-small-latest","name":"Mistral Small (latest)","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"ministral-8b-2512":{"id":"ministral-8b-2512","name":"Ministral 3 8B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.15,"output":0.15,"cache_read":0.015},"canonical_model_id":"mistral/ministral-3-8b-instruct-2512"},"zai-glm-5-2":{"id":"zai-glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"ministral-8b-latest":{"id":"ministral-8b-latest","name":"Ministral 8B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.1,"output":0.1}},"devstral-medium-latest":{"id":"devstral-medium-latest","name":"Devstral 2 (latest)","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral-large-4":{"id":"mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":262144},"status":"beta","cost":{"input":0.68,"output":2.09,"cache_read":0.07},"canonical_model_id":"mistral/mistral-large-4"},"open-mixtral-8x22b":{"id":"open-mixtral-8x22b","name":"Mixtral 8x22B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-17","last_updated":"2024-04-17","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":64000},"status":"deprecated","cost":{"input":2,"output":6}},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0.4,"output":2}},"magistral-medium-latest":{"id":"magistral-medium-latest","name":"Magistral Medium (latest)","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-03-17","last_updated":"2025-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"status":"deprecated","cost":{"input":2,"output":5}},"voxtral-small-2507":{"id":"voxtral-small-2507","name":"Voxtral Small","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.4}},"glm-5-2":{"id":"glm-5-2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"deprecated","cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"labs-leanstral-1-5-1":{"id":"labs-leanstral-1-5-1","name":"Leanstral 1.5","description":"An updated Lean 4 formal proof engineering model optimised for automated theorem proving and autoformalization. 119B total parameters, 6.5B active.","family":"leanstral","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"status":"deprecated","cost":{"input":0,"output":0}},"pixtral-12b":{"id":"pixtral-12b","name":"Pixtral 12B","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-01","last_updated":"2024-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"mistral-embed":{"id":"mistral-embed","name":"Mistral Embed","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"mistral-embed","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8000,"output":3072},"cost":{"input":0.1,"output":0}},"devstral-small-2505":{"id":"devstral-small-2505","name":"Devstral Small 2505","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6,"cache_read":0.015}},"devstral-medium-2507":{"id":"devstral-medium-2507","name":"Devstral Medium","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.4,"output":2}},"voxtral-mini-latest":{"id":"voxtral-mini-latest","name":"Voxtral Mini (latest)","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-02-01","last_updated":"2026-02-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":0,"output":0}},"labs-devstral-small-2512":{"id":"labs-devstral-small-2512","name":"Devstral Small 2","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"status":"deprecated","cost":{"input":0,"output":0}},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5,"cache_read":0.05}},"devstral-latest":{"id":"devstral-latest","name":"Devstral 2","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2}},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"Ministral 3 14B","description":"Open vision-language model for efficient local deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.2,"cache_read":0.02},"canonical_model_id":"mistral/ministral-3-14b-instruct-2512"},"devstral-small-2507":{"id":"devstral-small-2507","name":"Devstral Small","description":"Legacy model retained for compatibility with older integrations","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-07-10","last_updated":"2025-07-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"pixtral-large-latest":{"id":"pixtral-large-latest","name":"Pixtral Large (latest)","description":"Mistral's larger vision model for document-heavy image understanding and chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2024-11-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"status":"deprecated","cost":{"input":2,"output":6}},"voxtral-small-latest":{"id":"voxtral-small-latest","name":"Voxtral Small (latest)","description":"Instruct model with native audio input for speech understanding and tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.1,"output":0.3}},"open-mixtral-8x7b":{"id":"open-mixtral-8x7b","name":"Mixtral 8x7B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mixtral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-01","release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"status":"deprecated","cost":{"input":0.7,"output":0.7}},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.1,"output":0.3}},"zai-glm-5-3":{"id":"zai-glm-5-3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.3"},"ministral-3b-2512":{"id":"ministral-3b-2512","name":"Ministral 3 3B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":262144},"cost":{"input":0.1,"output":0.1,"cache_read":0.01},"canonical_model_id":"mistral/ministral-3-3b-instruct-2512"},"mistral-medium-2604":{"id":"mistral-medium-2604","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15}},"open-mistral-7b":{"id":"open-mistral-7b","name":"Mistral 7B","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2023-09-27","last_updated":"2023-09-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":8000},"status":"deprecated","cost":{"input":0.25,"output":0.25}},"codestral-2508":{"id":"codestral-2508","name":"Codestral 25.08","description":"Mistral code model for low-latency completion, fill-in-the-middle, and code generation","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":8192},"cost":{"input":0.3,"output":0.9,"cache_read":0.03},"canonical_model_id":"mistral/codestral-2508"},"ministral-3b-latest":{"id":"ministral-3b-latest","name":"Ministral 3B (latest)","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":128000},"cost":{"input":0.04,"output":0.04}},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5,"cache_read":0.15},"canonical_model_id":"mistral/mistral-medium-latest"}}},"amazon-bedrock":{"id":"amazon-bedrock","env":["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_REGION","AWS_BEARER_TOKEN_BEDROCK"],"npm":"@ai-sdk/amazon-bedrock","name":"Amazon Bedrock","doc":"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html","models":{"google.gemma-3-12b-it":{"id":"google.gemma-3-12b-it","name":"Gemma 3 12B IT","description":"Open multimodal Gemma instruction model for multilingual text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.09,"output":0.29},"canonical_model_id":"google/gemma-3-12b-it"},"google.gemma-3-4b-it":{"id":"google.gemma-3-4b-it","name":"Gemma 3 4B IT","description":"Open multimodal Gemma instruction model for efficient text generation and image understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.04,"output":0.08},"canonical_model_id":"google/gemma-3-4b-it"},"eu.anthropic.claude-fable-5":{"id":"eu.anthropic.claude-fable-5","name":"Claude Fable 5 (EU)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"qwen.qwen3-coder-480b-a35b-v1:0":{"id":"qwen.qwen3-coder-480b-a35b-v1:0","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":65536},"cost":{"input":0.45,"output":1.8},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"google.gemma-4-31b":{"id":"google.gemma-4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.14,"output":0.4},"canonical_model_id":"google/gemma-4-31b-it"},"us.writer.palmyra-x5-v1:0":{"id":"us.writer.palmyra-x5-v1:0","name":"Palmyra X5 (US)","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"input":1040000,"output":8192},"cost":{"input":0.6,"output":6},"canonical_model_id":"writer/palmyra-x5"},"google.gemma-4-e2b":{"id":"google.gemma-4-e2b","name":"Gemma 4 E2B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.04,"output":0.08},"canonical_model_id":"google/gemma-4-E2B-it"},"us.anthropic.claude-opus-4-7":{"id":"us.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (US)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"global.openai.gpt-6-astra":{"id":"global.openai.gpt-6-astra","name":"GPT-6 Astra (Global)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":60,"output":300,"cache_read":6,"cache_write":75},"provider":{"body":{"additionalModelRequestFields":{"service_tier":"ultrafast"}}}}}},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"us.openai.gpt-6.1-sol":{"id":"us.openai.gpt-6.1-sol","name":"GPT-6.1 Sol (US)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":13.2,"output":66,"cache_read":0.66,"cache_write":16.5},"provider":{"body":{"additionalModelRequestFields":{"service_tier":"ultrafast"}}}}}},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75,"tiers":[{"input":4.4,"output":16.5,"cache_read":0.22,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":16.5,"cache_read":0.22,"cache_write":5.5}},"canonical_model_id":"openai/gpt-6.1-sol"},"eu.amazon.nova-lite-v1:0":{"id":"eu.amazon.nova-lite-v1:0","name":"Nova Lite (EU)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.069,"output":0.276,"cache_read":0.01725,"cache_write":0.069},"canonical_model_id":"amazon/nova-lite"},"global.anthropic.claude-opus-5-5":{"id":"global.anthropic.claude-opus-5-5","name":"Claude Opus 5.5 (Global)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"deepseek.r1-v1:0":{"id":"deepseek.r1-v1:0","name":"DeepSeek-R1","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"canonical_model_id":"deepseek/deepseek-r1"},"openai.gpt-oss-safeguard-20b":{"id":"openai.gpt-oss-safeguard-20b","name":"GPT OSS Safeguard 20B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.07,"output":0.2},"canonical_model_id":"openai/gpt-oss-safeguard-20b"},"anthropic.claude-opus-5-5":{"id":"anthropic.claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"global.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (Global)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"eu.amazon.nova-2-lite-v1:0":{"id":"eu.amazon.nova-2-lite-v1:0","name":"Nova 2 Lite (EU)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.374,"output":3.157,"cache_read":0.0935,"cache_write":0.374},"canonical_model_id":"amazon/nova-2-lite"},"us.amazon.nova-pro-v1:0":{"id":"us.amazon.nova-pro-v1:0","name":"Nova Pro (US)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"canonical_model_id":"amazon/nova-pro"},"jp.anthropic.claude-opus-5-5":{"id":"jp.anthropic.claude-opus-5-5","name":"Claude Opus 5.5 (JP)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic.claude-sonnet-5-5":{"id":"anthropic.claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"global.anthropic.claude-sonnet-5-5":{"id":"global.anthropic.claude-sonnet-5-5","name":"Claude Sonnet 5.5 (Global)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"openai.gpt-5.6-luna":{"id":"openai.gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275,"tiers":[{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55}},"canonical_model_id":"openai/gpt-5.6-luna"},"us.meta.llama4-maverick-17b-instruct-v1:0":{"id":"us.meta.llama4-maverick-17b-instruct-v1:0","name":"Llama 4 Maverick 17B Instruct (US)","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":8192},"cost":{"input":0.24,"output":0.97},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"apac.amazon.nova-micro-v1:0":{"id":"apac.amazon.nova-micro-v1:0","name":"Nova Micro (APAC)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.037,"output":0.148,"cache_read":0.00925,"cache_write":0.037},"canonical_model_id":"amazon/nova-micro"},"eu.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"eu.anthropic.claude-sonnet-4-20250514-v1:0","name":"Claude Sonnet 4 (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"eu.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (EU)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"global.openai.gpt-6-sol":{"id":"global.openai.gpt-6-sol","name":"GPT-6 Sol (Global)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"eu.anthropic.claude-haiku-5-5":{"id":"eu.anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5 (EU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.55,"output":2.75,"cache_read":0.055,"cache_write":0.6875,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"qwen.qwen3-coder-30b-a3b-v1:0":{"id":"qwen.qwen3-coder-30b-a3b-v1:0","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-31","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"us.amazon.nova-premier-v1:0":{"id":"us.amazon.nova-premier-v1:0","name":"Nova Premier (US)","description":"Multimodal model for complex analysis, long-context understanding, tool use, and model distillation","family":"nova","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-10","release_date":"2025-04-30","last_updated":"2025-04-30","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":10000},"status":"deprecated","cost":{"input":2.5,"output":12.5,"cache_read":0.625,"cache_write":2.5},"canonical_model_id":"amazon/nova-premier"},"anthropic.claude-sonnet-4-6":{"id":"anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"meta.llama3-1-70b-instruct-v1:0":{"id":"meta.llama3-1-70b-instruct-v1:0","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-3.1-70b-instruct"},"us.writer.palmyra-x4-v1:0":{"id":"us.writer.palmyra-x4-v1:0","name":"Palmyra X4 (US)","description":"Enterprise language model for workflow automation, coding, data analysis, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2024-10-09","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":122880,"output":8192},"cost":{"input":2.5,"output":10},"canonical_model_id":"writer/palmyra-x4"},"us.zai.glm-5.3":{"id":"us.zai.glm-5.3","name":"GLM-5.3 (US)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.848,"output":5.808,"cache_read":0.3432,"cache_write":2.31},"canonical_model_id":"zhipuai/glm-5.3"},"apac.amazon.nova-pro-v1:0":{"id":"apac.amazon.nova-pro-v1:0","name":"Nova Pro (APAC)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.84,"output":3.36,"cache_read":0.21,"cache_write":0.84},"canonical_model_id":"amazon/nova-pro"},"global.zai.glm-5.3":{"id":"global.zai.glm-5.3","name":"GLM-5.3 (Global)","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.68,"output":5.28,"cache_read":0.312,"cache_write":2.1},"canonical_model_id":"zhipuai/glm-5.3"},"global.anthropic.claude-fable-5-1":{"id":"global.anthropic.claude-fable-5-1","name":"Claude Fable 5.1 (Global)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"us.anthropic.claude-sonnet-5":{"id":"us.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (US)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"amazon.nova-micro-v1:0":{"id":"amazon.nova-micro-v1:0","name":"Nova Micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"canonical_model_id":"amazon/nova-micro"},"minimax.minimax-m2.5":{"id":"minimax.minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":98304},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.5"},"xai.grok-4.3":{"id":"xai.grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-06-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"us.amazon.nova-lite-v1:0":{"id":"us.amazon.nova-lite-v1:0","name":"Nova Lite (US)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"canonical_model_id":"amazon/nova-lite"},"amazon.nova-pro-v1:0":{"id":"amazon.nova-pro-v1:0","name":"Nova Pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.8,"output":3.2,"cache_read":0.2,"cache_write":0.8},"canonical_model_id":"amazon/nova-pro"},"qwen.qwen3-32b-v1:0":{"id":"qwen.qwen3-32b-v1:0","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"alibaba/qwen3-32b"},"openai.gpt-5.5":{"id":"openai.gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":5.5,"output":33,"cache_read":0.55},"canonical_model_id":"openai/gpt-5.5"},"jp.anthropic.claude-haiku-5-5":{"id":"jp.anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5 (JP)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.55,"output":2.75,"cache_read":0.055,"cache_write":0.6875,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"mistral.voxtral-small-24b-2507":{"id":"mistral.voxtral-small-24b-2507","name":"Voxtral Small 24B 2507","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/voxtral-small-24b-2507"},"global.amazon.nova-2-lite-v1:0":{"id":"global.amazon.nova-2-lite-v1:0","name":"Nova 2 Lite (Global)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.3},"canonical_model_id":"amazon/nova-2-lite"},"us.openai.gpt-5.6-terra":{"id":"us.openai.gpt-5.6-terra","name":"GPT-5.6 Terra (US)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"mistral.devstral-2-123b":{"id":"mistral.devstral-2-123b","name":"Devstral 2 123B","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-2512"},"us.xai.grok-4.6":{"id":"us.xai.grok-4.6","name":"Grok 4.6 (US)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"canonical_model_id":"xai/grok-4.6"},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"jp.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (JP)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"anthropic.claude-fable-5":{"id":"anthropic.claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"global.anthropic.claude-haiku-5-5":{"id":"global.anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5 (Global)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"jp.anthropic.claude-opus-4-8":{"id":"jp.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (JP)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-8"},"us.openai.gpt-5.6-luna":{"id":"us.openai.gpt-5.6-luna","name":"GPT-5.6 Luna (US)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275,"tiers":[{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55}},"canonical_model_id":"openai/gpt-5.6-luna"},"in.anthropic.claude-opus-5":{"id":"in.anthropic.claude-opus-5","name":"Claude Opus 5 (India)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"us.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (US)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"au.anthropic.claude-opus-5":{"id":"au.anthropic.claude-opus-5","name":"Claude Opus 5 (AU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"nvidia.nemotron-nano-12b-v2":{"id":"nvidia.nemotron-nano-12b-v2","name":"NVIDIA Nemotron Nano 12B v2 VL BF16","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.2,"output":0.6},"canonical_model_id":"nvidia/nemotron-nano-12b-v2-vl"},"openai.gpt-6.1-sol":{"id":"openai.gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":13.2,"output":66,"cache_read":0.66,"cache_write":16.5},"provider":{"body":{"service_tier":"ultrafast"}}}}},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75,"tiers":[{"input":4.4,"output":16.5,"cache_read":0.22,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":16.5,"cache_read":0.22,"cache_write":5.5}},"canonical_model_id":"openai/gpt-6.1-sol"},"us.amazon.nova-2-lite-v1:0":{"id":"us.amazon.nova-2-lite-v1:0","name":"Nova 2 Lite (US)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.0825,"cache_write":0.33},"canonical_model_id":"amazon/nova-2-lite"},"us.openai.gpt-6-astra":{"id":"us.openai.gpt-6-astra","name":"GPT-6 Astra (US)","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":66,"output":330,"cache_read":6.6,"cache_write":82.5},"provider":{"body":{"additionalModelRequestFields":{"service_tier":"ultrafast"}}}}}},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75,"tiers":[{"input":22,"output":82.5,"cache_read":2.2,"cache_write":27.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":22,"output":82.5,"cache_read":2.2,"cache_write":27.5}},"canonical_model_id":"openai/gpt-6-astra"},"openai.gpt-5.6-terra":{"id":"openai.gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"global.openai.gpt-6.1-sol":{"id":"global.openai.gpt-6.1-sol","name":"GPT-6.1 Sol (Global)","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":12,"output":60,"cache_read":0.6,"cache_write":15},"provider":{"body":{"additionalModelRequestFields":{"service_tier":"ultrafast"}}}}}},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"anthropic.claude-opus-4-6-v1":{"id":"anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-6"},"us.anthropic.claude-opus-4-1-20250805-v1:0":{"id":"us.anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1 (US)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"us.meta.llama3-1-8b-instruct-v1:0":{"id":"us.meta.llama3-1-8b-instruct-v1:0","name":"Llama 3.1 8B Instruct (US)","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.22,"output":0.22},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"eu.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (EU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"global.anthropic.claude-opus-4-7":{"id":"global.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (Global)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"apac.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"apac.anthropic.claude-sonnet-4-20250514-v1:0","name":"Claude Sonnet 4 (APAC)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"deepseek.v3.2":{"id":"deepseek.v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.62,"output":1.85},"canonical_model_id":"deepseek/deepseek-v3.2"},"qwen.qwen3-235b-a22b-2507-v1:0":{"id":"qwen.qwen3-235b-a22b-2507-v1:0","name":"Qwen3 235B-A22B Instruct 2507","description":"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.22,"output":0.88},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"amazon.nova-lite-v1:0":{"id":"amazon.nova-lite-v1:0","name":"Nova Lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.06,"output":0.24,"cache_read":0.015,"cache_write":0.06},"canonical_model_id":"amazon/nova-lite"},"global.anthropic.claude-opus-5":{"id":"global.anthropic.claude-opus-5","name":"Claude Opus 5 (Global)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"openai.gpt-oss-20b-1:0":{"id":"openai.gpt-oss-20b-1:0","name":"gpt-oss-20b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":128000},"cost":{"input":0.07,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"anthropic.claude-opus-5":{"id":"anthropic.claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic.claude-haiku-5-5":{"id":"anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"meta.llama3-3-70b-instruct-v1:0":{"id":"meta.llama3-3-70b-instruct-v1:0","name":"Llama 3.3 70B Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"minimax.minimax-m2":{"id":"minimax.minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204608,"output":128000},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2"},"mistral.mistral-large-3-675b-instruct":{"id":"mistral.mistral-large-3-675b-instruct","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-2512"},"in.openai.gpt-5.6-luna":{"id":"in.openai.gpt-5.6-luna","name":"GPT-5.6 Luna (India)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.22,"output":1.32,"cache_read":0.022,"cache_write":0.275,"tiers":[{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.44,"output":1.98,"cache_read":0.044,"cache_write":0.55}},"canonical_model_id":"openai/gpt-5.6-luna"},"eu.anthropic.claude-opus-4-8":{"id":"eu.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (EU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-8"},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (Global)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"zai.glm-4.7":{"id":"zai.glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.6,"output":2.2},"canonical_model_id":"zhipuai/glm-4.7"},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"au.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (AU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"eu.anthropic.claude-opus-5-5":{"id":"eu.anthropic.claude-opus-5-5","name":"Claude Opus 5.5 (EU)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"global.anthropic.claude-sonnet-4-6":{"id":"global.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (Global)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"jp.anthropic.claude-sonnet-4-6":{"id":"jp.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (JP)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"google.gemma-3-27b-it":{"id":"google.gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding","family":"gemma","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.38},"canonical_model_id":"google/gemma-3-27b-it"},"eu.anthropic.claude-opus-4-6-v1":{"id":"eu.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (EU)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-6"},"us.anthropic.claude-opus-5-5":{"id":"us.anthropic.claude-opus-5-5","name":"Claude Opus 5.5 (US)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"us.anthropic.claude-opus-5":{"id":"us.anthropic.claude-opus-5","name":"Claude Opus 5 (US)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"global.xai.grok-4.7":{"id":"global.xai.grok-4.7","name":"Grok 4.7 (Global)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.7"},"us.openai.gpt-5.6-sol":{"id":"us.openai.gpt-5.6-sol","name":"GPT-5.6 Sol (US)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5,"tiers":[{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11}},"canonical_model_id":"openai/gpt-5.6-sol"},"us.moonshotai.kimi-k3":{"id":"us.moonshotai.kimi-k3","name":"Kimi K3 (US)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"moonshotai/kimi-k3"},"anthropic.claude-sonnet-5":{"id":"anthropic.claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"mistral.magistral-small-2509":{"id":"mistral.magistral-small-2509","name":"Magistral Small 1.2","description":"Open multimodal reasoning model for transparent analysis of text and images","family":"magistral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-18","last_updated":"2025-09-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":40000},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/magistral-small-2509"},"mistral.pixtral-large-2502-v1:0":{"id":"mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-2502"},"anthropic.claude-opus-4-5-20251101-v1:0":{"id":"anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"nvidia.nemotron-nano-9b-v2":{"id":"nvidia.nemotron-nano-9b-v2","name":"NVIDIA Nemotron Nano 9B v2","description":"Compact Nemotron model for efficient reasoning and deployable AI agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-18","last_updated":"2025-08-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.06,"output":0.23},"canonical_model_id":"nvidia/nemotron-nano-9b-v2"},"eu.amazon.nova-micro-v1:0":{"id":"eu.amazon.nova-micro-v1:0","name":"Nova Micro (EU)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.04,"output":0.16,"cache_read":0.01,"cache_write":0.04},"canonical_model_id":"amazon/nova-micro"},"zai.glm-5":{"id":"zai.glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":1,"output":3.2},"canonical_model_id":"zhipuai/glm-5"},"us.meta.llama3-1-70b-instruct-v1:0":{"id":"us.meta.llama3-1-70b-instruct-v1:0","name":"Llama 3.1 70B Instruct (US)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-3.1-70b-instruct"},"jp.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"jp.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (JP)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"nvidia.nemotron-nano-3-30b":{"id":"nvidia.nemotron-nano-3-30b","name":"NVIDIA Nemotron Nano 3 30B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.06,"output":0.24},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"mistral.ministral-3-3b-instruct":{"id":"mistral.ministral-3-3b-instruct","name":"Ministral 3 3B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.1,"output":0.1},"canonical_model_id":"mistral/ministral-3-3b-instruct-2512"},"us.xai.grok-4.7":{"id":"us.xai.grok-4.7","name":"Grok 4.7 (US)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"canonical_model_id":"xai/grok-4.7"},"us.openai.gpt-6-luna":{"id":"us.openai.gpt-6-luna","name":"GPT-6 Luna (US)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.22,"output":0.825,"cache_read":0.022,"cache_write":0.275,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.22,"output":0.825,"cache_read":0.022,"cache_write":0.275}},"canonical_model_id":"openai/gpt-6-luna"},"global.openai.gpt-5.6-sol":{"id":"global.openai.gpt-5.6-sol","name":"GPT-5.6 Sol (Global)","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"google.gemma-4-26b-a4b":{"id":"google.gemma-4-26b-a4b","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.13,"output":0.4},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"xai.grok-4.6":{"id":"xai.grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":6.6,"cache_read":0.55},"canonical_model_id":"xai/grok-4.6"},"global.xai.grok-4.6":{"id":"global.xai.grok-4.6","name":"Grok 4.6 (Global)","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"au.anthropic.claude-opus-4-6-v1":{"id":"au.anthropic.claude-opus-4-6-v1","name":"AU Anthropic Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-6"},"qwen.qwen3-vl-235b-a22b":{"id":"qwen.qwen3-vl-235b-a22b","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-09-23","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262000},"cost":{"input":0.53,"output":2.66},"canonical_model_id":"alibaba/qwen3-vl-235b-a22b-instruct"},"anthropic.claude-fable-5-1":{"id":"anthropic.claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"jp.anthropic.claude-sonnet-5":{"id":"jp.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (JP)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"us.anthropic.claude-sonnet-5-5":{"id":"us.anthropic.claude-sonnet-5-5","name":"Claude Sonnet 5.5 (US)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"qwen.qwen3-coder-next":{"id":"qwen.qwen3-coder-next","name":"Qwen3 Coder Next","description":"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.5,"output":1.2},"canonical_model_id":"alibaba/qwen3-coder-next"},"anthropic.claude-opus-4-8":{"id":"anthropic.claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"au.anthropic.claude-sonnet-5":{"id":"au.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (AU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"meta.llama4-scout-17b-instruct-v1:0":{"id":"meta.llama4-scout-17b-instruct-v1:0","name":"Llama 4 Scout 17B Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":10000000,"output":8192},"cost":{"input":0.17,"output":0.66},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"openai.gpt-oss-safeguard-120b":{"id":"openai.gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-safeguard-120b"},"us.meta.llama3-3-70b-instruct-v1:0":{"id":"us.meta.llama3-3-70b-instruct-v1:0","name":"Llama 3.3 70B Instruct (US)","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.72,"output":0.72},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"global.openai.gpt-5.6-luna":{"id":"global.openai.gpt-5.6-luna","name":"GPT-5.6 Luna (Global)","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"au.anthropic.claude-sonnet-4-6":{"id":"au.anthropic.claude-sonnet-4-6","name":"AU Anthropic Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"openai.gpt-oss-120b":{"id":"openai.gpt-oss-120b","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/v1","shape":"responses"},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"deepseek.v3-v1:0":{"id":"deepseek.v3-v1:0","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":81920},"cost":{"input":0.58,"output":1.68},"canonical_model_id":"deepseek/deepseek-v3.1"},"moonshotai.kimi-k2.5":{"id":"moonshotai.kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-02-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.6,"output":3},"canonical_model_id":"moonshotai/kimi-k2.5"},"eu.anthropic.claude-sonnet-4-6":{"id":"eu.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (EU)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"us-gov.openai.gpt-oss-120b-1:0":{"id":"us-gov.openai.gpt-oss-120b-1:0","name":"gpt-oss-120b (GovCloud)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.18,"output":0.72},"canonical_model_id":"openai/gpt-oss-120b"},"us.anthropic.claude-fable-5":{"id":"us.anthropic.claude-fable-5","name":"Claude Fable 5 (US)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5"},"openai.gpt-6-sol":{"id":"openai.gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":16.5,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":16.5,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-6-sol"},"us.deepseek.r1-v1:0":{"id":"us.deepseek.r1-v1:0","name":"DeepSeek-R1 (US)","description":"Classic open reasoning model for transparent math, coding, and deliberate problem solving","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32768},"cost":{"input":1.35,"output":5.4},"canonical_model_id":"deepseek/deepseek-r1"},"eu.anthropic.claude-opus-5":{"id":"eu.anthropic.claude-opus-5","name":"Claude Opus 5 (EU)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"ca.amazon.nova-lite-v1:0":{"id":"ca.amazon.nova-lite-v1:0","name":"Nova Lite (CA)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.064,"output":0.256,"cache_read":0.016,"cache_write":0.064},"canonical_model_id":"amazon/nova-lite"},"us.openai.gpt-6-sol":{"id":"us.openai.gpt-6-sol","name":"GPT-6 Sol (US)","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":16.5,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":16.5,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-6-sol"},"au.anthropic.claude-opus-4-7":{"id":"au.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (AU)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"us.meta.llama4-scout-17b-instruct-v1:0":{"id":"us.meta.llama4-scout-17b-instruct-v1:0","name":"Llama 4 Scout 17B Instruct (US)","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":10000000,"output":8192},"cost":{"input":0.17,"output":0.66},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"global.anthropic.claude-sonnet-5":{"id":"global.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (Global)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"global.anthropic.claude-fable-5":{"id":"global.anthropic.claude-fable-5","name":"Claude Fable 5 (Global)","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"apac.amazon.nova-lite-v1:0":{"id":"apac.amazon.nova-lite-v1:0","name":"Nova Lite (APAC)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.063,"output":0.252,"cache_read":0.01575,"cache_write":0.063},"canonical_model_id":"amazon/nova-lite"},"in.anthropic.claude-sonnet-5":{"id":"in.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (India)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"us.anthropic.claude-opus-4-8":{"id":"us.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (US)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-8"},"nvidia.nemotron-super-3-120b":{"id":"nvidia.nemotron-super-3-120b","name":"NVIDIA Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.65},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"global.openai.gpt-6-luna":{"id":"global.openai.gpt-6-luna","name":"GPT-6 Luna (Global)","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"us-gov.openai.gpt-oss-20b-1:0":{"id":"us-gov.openai.gpt-oss-20b-1:0","name":"gpt-oss-20b (GovCloud)","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.084,"output":0.36},"canonical_model_id":"openai/gpt-oss-20b"},"us.anthropic.claude-opus-4-6-v1":{"id":"us.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (US)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-6"},"meta.llama3-1-8b-instruct-v1:0":{"id":"meta.llama3-1-8b-instruct-v1:0","name":"Llama 3.1 8B Instruct","description":"Compact open Llama model for lightweight chat, drafting, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.22,"output":0.22},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"writer.palmyra-x5-v1:0":{"id":"writer.palmyra-x5-v1:0","name":"Palmyra X5","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1040000,"input":1040000,"output":8192},"cost":{"input":0.6,"output":6},"canonical_model_id":"writer/palmyra-x5"},"anthropic.claude-opus-4-1-20250805-v1:0":{"id":"anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"us.anthropic.claude-sonnet-4-6":{"id":"us.anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6 (US)","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"global.anthropic.claude-opus-4-6-v1":{"id":"global.anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6 (Global)","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{"id":"eu.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5 (EU)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3.3,"output":16.5,"cache_read":0.33,"cache_write":4.125},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"jp.anthropic.claude-opus-4-7":{"id":"jp.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (JP)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"us.anthropic.claude-haiku-5-5":{"id":"us.anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5 (US)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.55,"output":2.75,"cache_read":0.055,"cache_write":0.6875,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"au.anthropic.claude-opus-5-5":{"id":"au.anthropic.claude-opus-5-5","name":"Claude Opus 5.5 (AU)","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.4,"output":22,"cache_read":0.22,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"openai.gpt-6-luna":{"id":"openai.gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.22,"output":0.825,"cache_read":0.022,"cache_write":0.275,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.22,"output":0.825,"cache_read":0.022,"cache_write":0.275}},"canonical_model_id":"openai/gpt-6-luna"},"writer.palmyra-x4-v1:0":{"id":"writer.palmyra-x4-v1:0","name":"Palmyra X4","description":"Enterprise language model for workflow automation, coding, data analysis, and tool use","family":"palmyra","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2024-10-09","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":122880,"output":8192},"cost":{"input":2.5,"output":10},"canonical_model_id":"writer/palmyra-x4"},"global.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"global.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (Global)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"anthropic.claude-opus-4-7":{"id":"anthropic.claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"us.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"us.anthropic.claude-sonnet-4-20250514-v1:0","name":"Claude Sonnet 4 (US)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"eu.anthropic.claude-sonnet-5":{"id":"eu.anthropic.claude-sonnet-5","name":"Claude Sonnet 5 (EU)","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.22,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5"},"zai.glm-4.7-flash":{"id":"zai.glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"cost":{"input":0.07,"output":0.4},"canonical_model_id":"zhipuai/glm-4.7-flash"},"moonshot.kimi-k2-thinking":{"id":"moonshot.kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-12-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16000},"cost":{"input":0.6,"output":2.5},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"eu.amazon.nova-pro-v1:0":{"id":"eu.amazon.nova-pro-v1:0","name":"Nova Pro (EU)","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.92,"output":3.68,"cache_read":0.23,"cache_write":0.92},"canonical_model_id":"amazon/nova-pro"},"global.openai.gpt-5.6-terra":{"id":"global.openai.gpt-5.6-terra","name":"GPT-5.6 Terra (Global)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai.gpt-6-astra":{"id":"openai.gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"ultrafast":{"cost":{"input":66,"output":330,"cache_read":6.6,"cache_write":82.5},"provider":{"body":{"service_tier":"ultrafast"}}}}},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":11,"output":55,"cache_read":1.1,"cache_write":13.75,"tiers":[{"input":22,"output":82.5,"cache_read":2.2,"cache_write":27.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":22,"output":82.5,"cache_read":2.2,"cache_write":27.5}},"canonical_model_id":"openai/gpt-6-astra"},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"us.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (US)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"meta.llama4-maverick-17b-instruct-v1:0":{"id":"meta.llama4-maverick-17b-instruct-v1:0","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama for strong reasoning with efficient everyday serving","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":8192},"cost":{"input":0.24,"output":0.97},"canonical_model_id":"meta/llama-4-maverick-17b-instruct"},"qwen.qwen3-next-80b-a3b":{"id":"qwen.qwen3-next-80b-a3b","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-11","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262000},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"eu.mistral.pixtral-large-2502-v1:0":{"id":"eu.mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02) (EU)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-2502"},"au.anthropic.claude-opus-4-8":{"id":"au.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (AU)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-8"},"au.anthropic.claude-haiku-5-5":{"id":"au.anthropic.claude-haiku-5-5","name":"Claude Haiku 5.5 (AU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.11,"output":0.55,"cache_read":0.011,"cache_write":0.1375,"tiers":[{"input":0.55,"output":2.75,"cache_read":0.055,"cache_write":0.6875,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"us.anthropic.claude-fable-5-1":{"id":"us.anthropic.claude-fable-5-1","name":"Claude Fable 5.1 (US)","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":11,"output":55,"cache_read":0.275,"cache_write":13.75},"canonical_model_id":"anthropic/claude-fable-5-1"},"global.moonshotai.kimi-k3":{"id":"global.moonshotai.kimi-k3","name":"Kimi K3 (Global)","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"moonshotai/kimi-k3"},"in.openai.gpt-5.6-terra":{"id":"in.openai.gpt-5.6-terra","name":"GPT-5.6 Terra (India)","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.2,"cache_read":0.22,"cache_write":2.75,"tiers":[{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4.4,"output":19.8,"cache_read":0.44,"cache_write":5.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai.gpt-oss-20b":{"id":"openai.gpt-oss-20b","name":"gpt-oss-20b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/v1","shape":"responses"},"cost":{"input":0.07,"output":0.3},"canonical_model_id":"openai/gpt-oss-20b"},"mistral.ministral-3-14b-instruct":{"id":"mistral.ministral-3-14b-instruct","name":"Ministral 14B 3.0","description":"Open vision-language model for efficient local deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.2,"output":0.2},"canonical_model_id":"mistral/ministral-3-14b-instruct-2512"},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"au.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (AU)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"openai.gpt-5.6-sol":{"id":"openai.gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":4.4,"output":22,"cache_read":0.44,"cache_write":5.5,"tiers":[{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8.8,"output":33,"cache_read":0.88,"cache_write":11}},"canonical_model_id":"openai/gpt-5.6-sol"},"minimax.minimax-m2.1":{"id":"minimax.minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2},"canonical_model_id":"minimax/MiniMax-M2.1"},"us.anthropic.claude-opus-4-5-20251101-v1:0":{"id":"us.anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5 (US)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"eu.anthropic.claude-opus-4-7":{"id":"eu.anthropic.claude-opus-4-7","name":"Claude Opus 4.7 (EU)","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-4-7"},"jp.amazon.nova-2-lite-v1:0":{"id":"jp.amazon.nova-2-lite-v1:0","name":"Nova 2 Lite (JP)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.396,"output":3.311,"cache_read":0.099,"cache_write":0.396},"canonical_model_id":"amazon/nova-2-lite"},"us.mistral.pixtral-large-2502-v1:0":{"id":"us.mistral.pixtral-large-2502-v1:0","name":"Pixtral Large (25.02) (US)","description":"Mistral vision-language model for image understanding and multimodal chat","family":"pixtral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":2,"output":6},"canonical_model_id":"mistral/pixtral-large-2502"},"jp.anthropic.claude-opus-5":{"id":"jp.anthropic.claude-opus-5","name":"Claude Opus 5 (JP)","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.5,"cache_read":0.55,"cache_write":6.875},"canonical_model_id":"anthropic/claude-opus-5"},"global.anthropic.claude-sonnet-4-20250514-v1:0":{"id":"global.anthropic.claude-sonnet-4-20250514-v1:0","name":"Claude Sonnet 4 (Global)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"global.anthropic.claude-opus-4-8":{"id":"global.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (Global)","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"openai.gpt-5.4":{"id":"openai.gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-06-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/amazon-bedrock/mantle","api":"https://bedrock-mantle.${AWS_REGION}.api.aws/openai/v1","shape":"responses"},"cost":{"input":2.75,"output":16.5,"cache_read":0.275},"canonical_model_id":"openai/gpt-5.4"},"mistral.voxtral-mini-3b-2507":{"id":"mistral.voxtral-mini-3b-2507","name":"Voxtral Mini 3B 2507","description":"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use","family":"voxtral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-15","last_updated":"2025-07-15","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":4096},"cost":{"input":0.04,"output":0.04},"canonical_model_id":"mistral/voxtral-mini-3b-2507"},"openai.gpt-oss-120b-1:0":{"id":"openai.gpt-oss-120b-1:0","name":"gpt-oss-120b","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":128000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"openai/gpt-oss-120b"},"amazon.nova-2-lite-v1:0":{"id":"amazon.nova-2-lite-v1:0","name":"Nova 2 Lite","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.33,"output":2.75,"cache_read":0.0825,"cache_write":0.33},"canonical_model_id":"amazon/nova-2-lite"},"eu.anthropic.claude-sonnet-5-5":{"id":"eu.anthropic.claude-sonnet-5-5","name":"Claude Sonnet 5.5 (EU)","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.11,"cache_write":2.75},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"us.amazon.nova-micro-v1:0":{"id":"us.amazon.nova-micro-v1:0","name":"Nova Micro (US)","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.035,"output":0.14,"cache_read":0.00875,"cache_write":0.035},"canonical_model_id":"amazon/nova-micro"},"mistral.ministral-3-8b-instruct":{"id":"mistral.ministral-3-8b-instruct","name":"Ministral 3 8B","description":"Compact open vision-language model for edge deployment, instruction following, and tool use","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.15,"output":0.15},"canonical_model_id":"mistral/ministral-3-8b-instruct-2512"},"in.anthropic.claude-haiku-4-5-20251001-v1:0":{"id":"in.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (India)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1.1,"output":5.5,"cache_read":0.11,"cache_write":1.375},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"}}},"synthetic":{"id":"synthetic","env":["SYNTHETIC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.synthetic.new/openai/v1","name":"Synthetic","doc":"https://synthetic.new/pricing","models":{"hf:moonshotai/Kimi-K3":{"id":"hf:moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":3,"output":15,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"hf:moonshotai/Kimi-K2.7-Code":{"id":"hf:moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.95,"output":4,"cache_read":0.95},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{"id":"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4","name":"Nemotron 3 Super 120B A12B","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":1,"cache_read":0.3},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"hf:zai-org/GLM-5.2":{"id":"hf:zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":1.4},"canonical_model_id":"zhipuai/glm-5.2"},"hf:zai-org/GLM-5.3-Flash":{"id":"hf:zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.15,"output":0.5,"cache_read":0.04},"canonical_model_id":"zhipuai/glm-5.3-flash"},"hf:zai-org/GLM-4.7-Flash":{"id":"hf:zai-org/GLM-4.7-Flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":65536},"cost":{"input":0.1,"output":0.5,"cache_read":0.1},"canonical_model_id":"zhipuai/glm-4.7-flash"},"hf:zai-org/GLM-5.3":{"id":"hf:zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"hf:deepseek-ai/DeepSeek-V4.1-Flash":{"id":"hf:deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","xhigh","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.6,"output":1.2,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"hf:Qwen/Qwen3.6-27B":{"id":"hf:Qwen/Qwen3.6-27B","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.45,"output":3.6,"cache_read":0.45},"canonical_model_id":"alibaba/qwen3.6-27b"},"hf:openai/gpt-oss-120b":{"id":"hf:openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.1,"cache_read":0.1}},"hf:MiniMaxAI/MiniMax-M3":{"id":"hf:MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":65536},"cost":{"input":0.6,"output":1.2,"cache_read":0.6},"canonical_model_id":"minimax/MiniMax-M3"}}},"llmgateway":{"id":"llmgateway","env":["LLMGATEWAY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmgateway.io/v1","name":"DevPass (LLM Gateway)","doc":"https://llmgateway.io/docs","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"glm-4.6v":{"id":"glm-4.6v","name":"GLM-4.6V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.3,"output":0.9,"cache_read":0.05},"canonical_model_id":"zhipuai/glm-4.6v"},"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.05,"output":0.4,"cache_read":0.01,"cache_write":0.0625},"canonical_model_id":"alibaba/qwen-flash"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"glm-4.5":{"id":"glm-4.5","name":"GLM-4.5","description":"Hybrid-reasoning GLM release that made the 4.5 line broadly useful","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":98304},"cost":{"input":0.6,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180},"canonical_model_id":"openai/gpt-5.4-pro"},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.25,"cache_read":0.01},"canonical_model_id":"google/gemma-4-31b-it"},"reka-edge-2603":{"id":"reka-edge-2603","name":"Reka Edge 2603","description":"Multimodal model for analyzing text, images, documents, and rich media","family":"reka","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-09","last_updated":"2026-10-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"cost":{"input":0.1,"output":0.1}},"grok-4-5":{"id":"grok-4-5","name":"Grok 4.5","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3}},"gpt-3.5-turbo":{"id":"gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0},"canonical_model_id":"openai/gpt-3.5-turbo"},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"Grok 4.1 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.2,"output":0.5,"cache_read":0.05}},"qwen3-vl-235b-a22b-instruct":{"id":"qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.88,"cache_read":0.11}},"seed-1-6-flash-250715":{"id":"seed-1-6-flash-250715","name":"Seed 1.6 Flash (250715)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-26","last_updated":"2025-07-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.07,"output":0.3,"cache_read":0.015}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.25,"output":3.75,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","description":"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.3"},"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8 27B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":32768},"cost":{"input":0.08,"output":0.35,"cache_read":0.05}},"gpt-4o-transcribe":{"id":"gpt-4o-transcribe","name":"GPT-4o Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":2.5,"output":10}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.168,"output":0.336,"cache_read":0.0034,"tiers":[{"input":0.8,"output":4,"cache_read":0.16,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.8,"output":4,"cache_read":0.16}},"canonical_model_id":"xiaomi/mimo-v2.5"},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02},"canonical_model_id":"openai/gpt-5.4-nano"},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2024-11-01","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":262144},"cost":{"input":4,"output":12},"canonical_model_id":"mistral/mistral-large-latest"},"seed-2-0-code-preview-260328":{"id":"seed-2-0-code-preview-260328","name":"Seed 2.0 Code Preview (260328)","description":"Coding model for repository understanding, refactors, and agentic engineering tasks","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"qwen3-vl-235b-a22b-thinking":{"id":"qwen3-vl-235b-a22b-thinking","name":"Qwen3 VL 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.98,"output":3.95}},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1010000,"output":131072},"cost":{"input":2,"output":6,"cache_read":0.25},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Code-specialist GPT for repository edits, reviews, and long-running software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2-codex"},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Codex GPT for repository edits, code review, and practical software agents","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1-codex"},"glm-5v-turbo":{"id":"glm-5v-turbo","name":"GLM-5V-Turbo","description":"Fast GLM vision model for screenshots, documents, and multimodal agent tasks","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-04-01","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5v-turbo"},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25},"canonical_model_id":"openai/gpt-4o"},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.2,"output":1.6,"reasoning":4.8,"cache_read":0.04,"cache_write":0.25},"canonical_model_id":"alibaba/qwen3-vl-plus"},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.088,"output":0.25,"cache_read":0.025},"canonical_model_id":"zhipuai/glm-5.3-flash"},"fugu-max":{"id":"fugu-max","name":"Fugu Max","description":"Multi-agent model for routing expert agents across complex analytical tasks","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25}},"ministral-8b-2512":{"id":"ministral-8b-2512","name":"Ministral 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.15}},"qwen3.5-27b":{"id":"qwen3.5-27b","name":"Qwen3.5 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.3,"output":2.4},"canonical_model_id":"alibaba/qwen3.5-27b"},"glm-4.6":{"id":"glm-4.6","name":"GLM-4.6","description":"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-30","last_updated":"2025-09-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.55,"output":2.2,"cache_read":0.11,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.6"},"glm-5.2-fast":{"id":"glm-5.2-fast","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.2,"output":6.5,"cache_read":0.45},"canonical_model_id":"zhipuai/glm-5.2"},"muse-glimmer-30b":{"id":"muse-glimmer-30b","name":"Muse Glimmer 30B","description":"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-01-04","release_date":"2026-08-10","last_updated":"2026-08-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.04},"canonical_model_id":"meta/muse-glimmer-30b"},"grok-build-0-1":{"id":"grok-build-0-1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"tiers":[{"input":2,"output":4,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4}},"canonical_model_id":"xai/grok-build-0.1"},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B A22B Instruct (2507)","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.09,"output":0.58}},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":8192},"cost":{"input":1.6,"output":6.4},"canonical_model_id":"alibaba/qwen-max"},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Efficient Qwen thinking model for local reasoning, math, and coding agents","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-thinking"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max Preview","description":"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"release_date":"2026-07-19","last_updated":"2026-07-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":6,"cache_read":0.25,"cache_write":2.5},"canonical_model_id":"alibaba/qwen3.8-max-preview"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.108,"output":0.675,"cache_read":0.06}},"glm-4.5-x":{"id":"glm-4.5-x","name":"GLM-4.5 X","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"beta","cost":{"input":2.2,"output":8.9,"cache_read":0.45}},"grok-4":{"id":"grok-4","name":"Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-07-09","last_updated":"2025-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"mistral-large-4":{"id":"mistral-large-4","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":1.36,"output":4.18,"cache_read":0.14},"canonical_model_id":"mistral/mistral-large-4"},"llama-4-maverick-17b-instruct":{"id":"llama-4-maverick-17b-instruct","name":"Llama 4 Maverick 17B Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":2048},"cost":{"input":0.27,"output":0.85}},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168},"canonical_model_id":"openai/gpt-5.2-pro"},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275},"canonical_model_id":"openai/o4-mini"},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55},"canonical_model_id":"openai/o3-mini"},"glm-5":{"id":"glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":131072},"cost":{"input":0.72,"output":2.3,"cache_read":0.144,"cache_write":0},"canonical_model_id":"zhipuai/glm-5"},"fugu-ultra-v2.0":{"id":"fugu-ultra-v2.0","name":"Fugu Ultra v2.0","description":"Quality-first multi-agent model for hard research, analysis, and competitions","family":"fugu","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-11","last_updated":"2026-09-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"gpt-4":{"id":"gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":30,"output":60},"canonical_model_id":"openai/gpt-4"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":384000},"cost":{"input":0.135,"output":0.54,"cache_read":0.0027},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.3-codex"},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.025},"canonical_model_id":"openai/gpt-4.1-nano"},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":228700,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5"},"kimi-k3-fast":{"id":"kimi-k3-fast","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1040384,"output":131072},"cost":{"input":4.5,"output":22.5,"cache_read":0.45},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Dense open Qwen model for self-hosted chat, reasoning, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":16384},"cost":{"input":0.36,"output":0.87,"reasoning":8.4},"canonical_model_id":"alibaba/qwen3-32b"},"muse-spark-1.1":{"id":"muse-spark-1.1","name":"Muse Spark 1.1","description":"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-08","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.1"},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.4,"output":1.2,"reasoning":4,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen-plus"},"kimi-k2.7-code-highspeed":{"id":"kimi-k2.7-code-highspeed","name":"Kimi K2.7 Code Highspeed","description":"Lower-latency Kimi Code variant for interactive edits and coding-agent loops","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.9,"output":8,"cache_read":0.38},"canonical_model_id":"moonshotai/kimi-k2.7-code-highspeed"},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-07-27","last_updated":"2026-07-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":1000000},"cost":{"input":0.03,"output":0.13,"cache_read":0.006,"cache_write":0.0375}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3.05,"cache_read":0.13},"canonical_model_id":"moonshotai/kimi-k2.6"},"minimax-m2.1-lightning":{"id":"minimax-m2.1-lightning","name":"MiniMax M2.1 Lightning","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.12,"output":0.48}},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen3 model for coding agents, complex reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.845,"output":3.38,"cache_read":0.6,"cache_write":3.75},"canonical_model_id":"alibaba/qwen3-max"},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"glm-4.5-airx":{"id":"glm-4.5-airx","name":"GLM-4.5 AirX","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.1,"output":4.5,"cache_read":0.22}},"glm-4.5v":{"id":"glm-4.5v","name":"GLM-4.5V","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-08-11","last_updated":"2025-08-11","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.6,"output":1.8,"cache_read":0.11},"canonical_model_id":"zhipuai/glm-4.5v"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral's coding-agent model for repository work, terminal tasks, and software fixes","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/devstral-2512"},"llama-4-scout-17b-instruct":{"id":"llama-4-scout-17b-instruct","name":"Llama 4 Scout 17B Instruct","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":2048},"cost":{"input":0.18,"output":0.59}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.6-flash"},"qwen3-235b-a22b-fp8":{"id":"qwen3-235b-a22b-fp8","name":"Qwen3 235B A22B FP8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":8192},"cost":{"input":0.2,"output":0.8}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5},"canonical_model_id":"openai/o1"},"glm-4-32b-0414-128k":{"id":"glm-4-32b-0414-128k","name":"GLM-4 32B (0414-128k)","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.1}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Open Qwen coding heavyweight for repository reasoning and agentic engineering","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.38,"output":1.55},"canonical_model_id":"alibaba/qwen3-coder-480b-a35b-instruct"},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":65536},"cost":{"input":0.07,"output":0.27},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"mistral-medium-3-5":{"id":"mistral-medium-3-5","name":"Mistral Medium 3.5","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-01","last_updated":"2026-05-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":1.5,"output":7.5}},"ling-3.0-flash":{"id":"ling-3.0-flash","name":"InclusionAI Ling 3.0 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-02","last_updated":"2026-08-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Thinking Kimi model for slower research passes, planning, and hard technical questions","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-08","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":2.5,"cache_read":0.06},"canonical_model_id":"moonshotai/kimi-k2-thinking"},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120},"canonical_model_id":"openai/gpt-5-pro"},"qwen3-vl-30b-a3b-instruct":{"id":"qwen3-vl-30b-a3b-instruct","name":"Qwen3 VL 30B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-02","last_updated":"2025-10-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.15,"output":0.6}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"openai/gpt-6.1-sol"},"seed-1-6-250915":{"id":"seed-1-6-250915","name":"Seed 1.6 (250915)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"ling-3.1-flash":{"id":"ling-3.1-flash","name":"Ling 3.1 Flash","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"inclusionai/ling-3.1-flash"},"seed-2-0-mini-260428":{"id":"seed-2-0-mini-260428","name":"Seed 2.0 Mini (260428)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.1,"output":0.4,"cache_read":0.02}},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.07,"output":0.34},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"claude-opus-4-5-20251101":{"id":"claude-opus-4-5-20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":31999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash-lite"},"llama-3-70b-instruct":{"id":"llama-3-70b-instruct","name":"Llama 3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-04-18","last_updated":"2024-04-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":8000},"cost":{"input":0.51,"output":0.74}},"seed-2-0-pro-260328":{"id":"seed-2-0-pro-260328","name":"Seed 2.0 Pro (260328)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-28","last_updated":"2026-03-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":3,"cache_read":0.1}},"ling-3.0-flash-vl":{"id":"ling-3.0-flash-vl","name":"Ling 3.0 Flash VL","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.18,"cache_read":0.012}},"qwen3-235b-a22b-thinking-2507":{"id":"qwen3-235b-a22b-thinking-2507","name":"Qwen3 235B A22B Thinking (2507)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-08","last_updated":"2025-07-08","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":8192},"cost":{"input":0.3,"output":3}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-09-03","last_updated":"2026-09-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":1050000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"minimax-text-01":{"id":"minimax-text-01","name":"MiniMax Text 01","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.2,"output":1.1}},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"glm-4.6v-flashx":{"id":"glm-4.6v-flashx","name":"GLM-4.6V FlashX","description":"GLM vision model for visual reasoning, documents, and multimodal agents","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-08","last_updated":"2025-12-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.04,"output":0.4,"cache_read":0.004}},"qwen3.5-122b-a10b":{"id":"qwen3.5-122b-a10b","name":"Qwen3.5 122B-A10B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":3.2},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"grok-4-20-beta-0309-non-reasoning":{"id":"grok-4-20-beta-0309-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.405,"output":1.98,"cache_read":0.225},"canonical_model_id":"moonshotai/kimi-k2.5"},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5.1"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.135,"output":0.4},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075},"canonical_model_id":"openai/gpt-4o-mini"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.248,"output":1.485},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.15,"output":1.2},"canonical_model_id":"alibaba/qwen3-next-80b-a3b-instruct"},"granite-4.2-8b":{"id":"granite-4.2-8b","name":"Granite 4.2 8B","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"granite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.06,"output":0.25,"cache_read":0.015}},"fugu-ultra":{"id":"fugu-ultra","name":"Fugu Ultra","description":"Quality-first multi-agent model for hard research, analysis, and competitions","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-06-22","last_updated":"2026-06-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":5,"output":30,"cache_read":0.5}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32766},"cost":{"input":0.04,"output":0.19,"cache_read":0.01}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.08,"output":0.32,"cache_read":0.017,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]},{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.05,"cache_write":0.3125},"canonical_model_id":"alibaba/qwen3.6-flash"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1,"max":24576},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-2.5-flash"},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":997952,"output":65536},"cost":{"input":0.3,"output":1.5,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"alibaba/qwen3-coder-flash"},"nemotron-3-ultra-550b":{"id":"nemotron-3-ultra-550b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":0.5,"output":2.2,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"llama-3.2-11b-instruct":{"id":"llama-3.2-11b-instruct","name":"Llama 3.2 11B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"cost":{"input":0.07,"output":0.33}},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.435,"output":0.87,"cache_read":0.0036,"tiers":[{"input":2,"output":6,"cache_read":0.4,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.4}},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Budget GLM lane for fast coding help, routing, and everyday automation","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.06,"output":0.4,"cache_read":0.01,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7-flash"},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.1,"output":0.15},"canonical_model_id":"alibaba/qwen3.5-9b"},"inkling":{"id":"inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":1048576},"cost":{"input":0.95,"output":4.05,"cache_read":0.16},"canonical_model_id":"thinkingmachines/inkling"},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","description":"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-05","last_updated":"2026-08-05","modalities":{"input":["text","image","video","pdf","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":131072},"cost":{"input":1.25,"output":4.25,"cache_read":0.15},"canonical_model_id":"meta/muse-spark-1.2"},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075},"canonical_model_id":"openai/gpt-5.4-mini"},"seed-1-8-251228":{"id":"seed-1-8-251228","name":"Seed 1.8 (251228)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-18","last_updated":"2025-12-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.38,"output":1.98,"cache_read":0.19,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":512000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.15,"output":0.6},"canonical_model_id":"mistral/mistral-small-2603"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175},"canonical_model_id":"openai/gpt-5.2"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"seed-1-6-250615":{"id":"seed-1-6-250615","name":"Seed 1.6 (250615)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-06-25","last_updated":"2025-06-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"qwen35-397b-a17b":{"id":"qwen35-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.6,"output":3.6},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/gpt-4.1"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"qwen3.5-35b-a3b":{"id":"qwen3.5-35b-a3b","name":"Qwen3.5 35B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.25,"output":2},"canonical_model_id":"alibaba/qwen3.5-35b-a3b"},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.8,"output":2.55,"cache_read":0.16,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"ernie-4.5-vl-424b-a47b":{"id":"ernie-4.5-vl-424b-a47b","name":"ERNIE 4.5 VL 424B A47B","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"ernie","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2025-06-30","last_updated":"2025-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":123000,"output":123000},"cost":{"input":0.42,"output":1.25}},"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":128000},"cost":{"input":0.132,"output":0.528,"cache_read":0.033},"canonical_model_id":"tencent/hy3"},"seed-2-0-lite-260428":{"id":"seed-2-0-lite-260428","name":"Seed 2.0 Lite (260428)","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"seed","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.25,"output":2,"cache_read":0.05}},"kimi-k2":{"id":"kimi-k2","name":"Kimi K2","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-11","last_updated":"2025-07-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.57,"output":2.3,"cache_read":0.5}},"hy-mt2-plus":{"id":"hy-mt2-plus","name":"Hy-MT2 Plus","description":"Tool-capable chat model for instruction following and agentic application workflows","family":"Hy","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.074,"output":0.295}},"grok-4-3":{"id":"grok-4-3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.931,"output":2.93,"cache_read":0.173,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.1"},"grok-4-20-non-reasoning":{"id":"grok-4-20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05},"canonical_model_id":"google/gemini-3-flash-preview"},"grok-4-20-beta-0309-reasoning":{"id":"grok-4-20-beta-0309-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":2,"output":6,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"minimax-m2.7-highspeed":{"id":"minimax-m2.7-highspeed","name":"MiniMax-M2.7-highspeed","description":"Low-latency M2.7 variant for interactive coding plans and agent loops","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.06,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.7-highspeed"},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"glm-4.7-flashx":{"id":"glm-4.7-flashx","name":"GLM-4.7-FlashX","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":0.07,"output":0.4,"cache_read":0.01,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.7-flashx"},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-06","last_updated":"2026-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"sonar":{"id":"sonar","name":"Sonar","description":"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":4096},"cost":{"input":0.25,"output":2.5,"cache_write":0.25},"canonical_model_id":"perplexity/sonar"},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":1.5},"canonical_model_id":"mistral/mistral-large-2512"},"grok-4-6":{"id":"grok-4-6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.6"},"gemini-pro-latest":{"id":"gemini-pro-latest","name":"Gemini Pro Latest","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-27","last_updated":"2026-02-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"minimax-m2.5-highspeed":{"id":"minimax-m2.5-highspeed","name":"MiniMax-M2.5-highspeed","description":"High-speed MiniMax model for low-latency coding and agent workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-02-13","last_updated":"2026-02-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.6,"output":2.4,"cache_read":0.03,"cache_write":0.375},"canonical_model_id":"minimax/MiniMax-M2.5-highspeed"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.08333}},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"Ministral 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":8192},"cost":{"input":0.2,"output":0.2}},"glm-5-turbo":{"id":"glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":131072},"cost":{"input":1.2,"output":4,"cache_read":0.24},"canonical_model_id":"zhipuai/glm-5-turbo"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"step-3.7-flash":{"id":"step-3.7-flash","name":"Step 3.7 Flash","description":"Newer StepFun flash model for faster agents, coding, and multimodal prompts","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2026-03-01","release_date":"2026-05-29","last_updated":"2026-05-29","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.2,"output":1.15,"cache_read":0.04},"canonical_model_id":"stepfun/step-3.7-flash"},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"google/gemini-2.5-flash-lite"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024,"max":63999},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gpt-4o-mini-transcribe":{"id":"gpt-4o-mini-transcribe","name":"GPT-4o Mini Transcribe","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":1.25,"output":5}},"llama-3.2-3b-instruct":{"id":"llama-3.2-3b-instruct","name":"Llama 3.2 3B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2024-09-18","last_updated":"2024-09-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32000},"cost":{"input":0.03,"output":0.05}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}},"canonical_model_id":"alibaba/qwen3.6-plus"},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/mistral-small-2506"},"grok-4-20-reasoning":{"id":"grok-4-20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"grok-4-7":{"id":"grok-4-7","name":"Grok 4.7","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-5.6-terra"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":16384},"cost":{"input":0.26,"output":0.38,"cache_read":0.13}},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":10,"output":30},"canonical_model_id":"openai/gpt-4-turbo"},"atria-dawn-preview":{"id":"atria-dawn-preview","name":"Atria Dawn Preview","description":"Preview model for early access evaluation, prototyping, and compatibility testing","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-09-12","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0,"output":0}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"muse","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.2,"cache_read":0.002}},"glm-4.5-air":{"id":"glm-4.5-air","name":"GLM-4.5-Air","description":"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents","family":"glm-air","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":98304},"cost":{"input":0.13,"output":0.85,"cache_read":0.025,"cache_write":0},"canonical_model_id":"zhipuai/glm-4.5-air"},"qwen-plus-latest":{"id":"qwen-plus-latest","name":"Qwen Plus Latest","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-25","last_updated":"2025-01-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":8192},"cost":{"input":0.4,"output":1.2,"cache_read":0.08,"cache_write":0.5}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32766},"cost":{"input":0.032,"output":0.14,"cache_read":0.032}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex mini","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5.1-codex-mini"},"ministral-3b-2512":{"id":"ministral-3b-2512","name":"Ministral 3B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"mistral","attachment":true,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.1,"output":0.1}},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5},"canonical_model_id":"openai/o3"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.9,"output":3,"cache_read":0.15},"canonical_model_id":"zhipuai/glm-5.3"},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"glm-5.3-fast":{"id":"glm-5.3-fast","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":2.8,"output":8.8,"cache_read":0.56},"canonical_model_id":"zhipuai/glm-5.3"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":983616,"output":64000},"cost":{"input":0.4,"output":1.6,"cache_read":0.08,"cache_write":0.5},"canonical_model_id":"alibaba/qwen3.7-plus"},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"Earlier MiniMax agent model for practical coding and productivity tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.27,"output":1.1},"canonical_model_id":"minimax/MiniMax-M2.1"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"canonical_model_id":"openai/gpt-5.6-sol"},"auto":{"id":"auto","name":"Auto Route","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"llama-3.1-70b-instruct":{"id":"llama-3.1-70b-instruct","name":"Llama 3.1 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":2048},"status":"beta","cost":{"input":0.72,"output":0.72}},"minimax-m2":{"id":"minimax-m2","name":"MiniMax-M2","description":"Efficient open MiniMax model built for coding agents and tool-heavy workflows","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.2,"output":1,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2"},"custom":{"id":"custom","name":"Custom Model","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-01-01","last_updated":"2024-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0,"output":0}},"codestral-2508":{"id":"codestral-2508","name":"Codestral","description":"Mistral coding model for code completion, generation, and developer workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":false,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":0.9}},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1050000,"output":384000},"cost":{"input":0.065,"output":0.116,"cache_read":0.012},"canonical_model_id":"deepseek/deepseek-v4-flash"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"openai/gpt-6-sol"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":0.08333},"canonical_model_id":"google/gemini-3.1-flash-lite"}}},"sap-ai-core":{"id":"sap-ai-core","env":["AICORE_SERVICE_KEY"],"npm":"@jerome-benoit/sap-ai-provider-v2","name":"SAP AI Core","doc":"https://help.sap.com/docs/sap-ai-core","models":{"anthropic--claude-4-opus":{"id":"anthropic--claude-4-opus","name":"anthropic--claude-4-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-20250514"},"gpt-5.4":{"id":"gpt-5.4","name":"gpt-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"nvidia--llama-3.2-nv-embedqa-1b":{"id":"nvidia--llama-3.2-nv-embedqa-1b","name":"nvidia--llama-3.2-nv-embedqa-1b","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":4096},"cost":{"input":0.07,"output":0}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"sap-abap-1":{"id":"sap-abap-1","name":"sap-abap-1","description":"SAP-hosted model for ABAP code generation and enterprise development tasks","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-26","last_updated":"2025-11-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.48,"output":1.7}},"anthropic--claude-4.8-opus":{"id":"anthropic--claude-4.8-opus","name":"anthropic--claude-4.8-opus","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5-mini":{"id":"gpt-5-mini","name":"gpt-5-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025},"canonical_model_id":"openai/gpt-5-mini"},"anthropic--claude-3-haiku":{"id":"anthropic--claude-3-haiku","name":"anthropic--claude-3-haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-13","last_updated":"2024-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3},"canonical_model_id":"anthropic/claude-3-haiku-20240307"},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"gpt-4.1-nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.08,"output":0.26},"canonical_model_id":"openai/gpt-4.1-nano"},"gpt-5-nano":{"id":"gpt-5-nano","name":"gpt-5-nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005},"canonical_model_id":"openai/gpt-5-nano"},"anthropic--claude-4.5-haiku":{"id":"anthropic--claude-4.5-haiku","name":"anthropic--claude-4.5-haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic--claude-4.7-opus":{"id":"anthropic--claude-4.7-opus","name":"anthropic--claude-4.7-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"gemini-embedding":{"id":"gemini-embedding","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"canonical_model_id":"google/gemini-embedding-001"},"gemini-embedding-2":{"id":"gemini-embedding-2","name":"Gemini Embedding 2","description":"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space","family":"gemini","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-11","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":3072},"canonical_model_id":"google/gemini-embedding-2"},"amazon--nova-pro":{"id":"amazon--nova-pro","name":"amazon--nova-pro","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":8192},"cost":{"input":0.56,"output":2.13}},"amazon--nova-lite":{"id":"amazon--nova-lite","name":"amazon--nova-lite","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.3,"output":2.37}},"sonar-pro":{"id":"sonar-pro","name":"sonar-pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15},"canonical_model_id":"perplexity/sonar-pro"},"anthropic--claude-3.5-sonnet":{"id":"anthropic--claude-3.5-sonnet","name":"anthropic--claude-3.5-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04-30","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-3-5-sonnet-20241022"},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.09,"output":0}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-3.5-flash-lite"},"amazon--nova-micro":{"id":"amazon--nova-micro","name":"amazon--nova-micro","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"nova-micro","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.03,"output":0.1}},"anthropic--claude-4.5-opus":{"id":"anthropic--claude-4.5-opus","name":"anthropic--claude-4.5-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5"},"anthropic--claude-4-sonnet":{"id":"anthropic--claude-4-sonnet","name":"anthropic--claude-4-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"gemini-3.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"gemini-2.5-pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-03-25","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"google/gemini-2.5-pro"},"anthropic--claude-3-sonnet":{"id":"anthropic--claude-3-sonnet","name":"anthropic--claude-3-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-03-04","last_updated":"2024-03-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"sonar-deep-research":{"id":"sonar-deep-research","name":"sonar-deep-research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-02-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":8,"reasoning":3}},"mistralai--mistral-small":{"id":"mistralai--mistral-small","name":"mistralai--mistral-small","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.07,"output":0.28},"canonical_model_id":"mistral/mistral-small-2603"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"gemini-2.5-flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-04-17","last_updated":"2025-06-05","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1},"canonical_model_id":"google/gemini-2.5-flash"},"anthropic--claude-3.7-sonnet":{"id":"anthropic--claude-3.7-sonnet","name":"anthropic--claude-3.7-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2024-10-31","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-3-7-sonnet-20250219"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"gpt-5.6-luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"tiers":[{"input":2,"output":9,"cache_read":0.2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":2,"output":9,"cache_read":0.2}},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.2":{"id":"gpt-5.2","name":"gpt-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":9.44,"cache_read":0.12},"canonical_model_id":"openai/gpt-5.2"},"gpt-5.5":{"id":"gpt-5.5","name":"gpt-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"anthropic--claude-4.6-opus":{"id":"anthropic--claude-4.6-opus","name":"anthropic--claude-4.6-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"mistralai--mistral-medium-instruct":{"id":"mistralai--mistral-medium-instruct","name":"mistralai--mistral-medium-instruct","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.36,"output":1.22},"canonical_model_id":"mistral/mistral-medium-2505"},"gpt-4.1":{"id":"gpt-4.1","name":"gpt-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.32},"canonical_model_id":"openai/gpt-4.1"},"anthropic--claude-3-opus":{"id":"anthropic--claude-3-opus","name":"anthropic--claude-3-opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08-31","release_date":"2024-02-29","last_updated":"2024-02-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic--claude-4.6-sonnet":{"id":"anthropic--claude-4.6-sonnet","name":"anthropic--claude-4.6-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"sonar":{"id":"sonar","name":"sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-09-01","release_date":"2024-01-01","last_updated":"2025-09-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":1,"output":1},"canonical_model_id":"perplexity/sonar"},"amazon--titan-embed-text":{"id":"amazon--titan-embed-text","name":"amazon--titan-embed-text","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-04-30","last_updated":"2024-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.14,"output":0}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"gpt-4.1-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"canonical_model_id":"google/gemini-3.8-flash"},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"gemini-2.5-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"gpt-5.6-terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}},"canonical_model_id":"openai/gpt-5.6-terra"},"mistralai--mistral-medium":{"id":"mistralai--mistral-medium","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"canonical_model_id":"mistral/mistral-medium-2604"},"gpt-5":{"id":"gpt-5","name":"gpt-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"anthropic--claude-4.5-sonnet":{"id":"anthropic--claude-4.5-sonnet","name":"anthropic--claude-4.5-sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"gpt-5.6-sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.6-sol"},"cohere--command-a-reasoning":{"id":"cohere--command-a-reasoning","name":"cohere--command-a-reasoning","description":"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows","family":"command-a","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","minimal","low","medium","high"]},{"type":"budget_tokens","min":1}],"tool_call":true,"temperature":true,"knowledge":"2024-06-01","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":32000},"cost":{"input":0.63,"output":5.05},"canonical_model_id":"cohere/command-a-reasoning-08-2025"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"gemini-3.1-flash-lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"}}},"vivgrid":{"id":"vivgrid","env":["VIVGRID_API_KEY"],"npm":"@ai-sdk/openai","api":"https://api.vivgrid.com/v1","name":"Vivgrid","doc":"https://docs.vivgrid.com/models","models":{"viv-fast":{"id":"viv-fast","name":"Viv Fast","description":"Fast coding model","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-09","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":256000},"cost":{"input":0.13,"output":0.4,"cache_read":0.05},"canonical_model_id":"vivgrid/viv-fast"},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2.5,"output":15,"cache_read":0.25}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-01-14","last_updated":"2026-01-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.04},"canonical_model_id":"zhipuai/glm-5.3-flash"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.25,"output":2,"cache_read":0.03}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.31,"output":1.23,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-24","last_updated":"2026-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"claude-opus-5-5":{"id":"claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.5,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":10,"output":50,"cache_read":1.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.35,"output":3,"reasoning":3,"cache_read":0.05},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT 5.6 Luna","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":1,"output":6,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}},"canonical_model_id":"openai/gpt-5.5"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.75,"output":3.75,"cache_read":0.075},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.2,"cache_read":0.3},"canonical_model_id":"zhipuai/glm-5.2"},"claude-haiku-5-5":{"id":"claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.75,"output":3.75,"cache_read":0.15},"canonical_model_id":"google/gemini-3.8-flash"},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"claude-sonnet-5-5":{"id":"claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT 5.6 Terra","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":3.125},"canonical_model_id":"openai/gpt-5.6-terra"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek-V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.28,"output":0.42}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.2,"output":4.2,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"gemini-3.1-flash-lite-preview":{"id":"gemini-3.1-flash-lite-preview","name":"Gemini 3.1 Flash Lite Preview","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"provider":{"npm":"@ai-sdk/openai-compatible"},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"cache_write":1}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT 5.6 Sol","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"openai/gpt-5.6-sol"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.15,"output":0.3,"reasoning":0.3,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"}}},"klokintegration":{"id":"klokintegration","env":["KLOKINTEGRATION_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api-gw.klok.ipaas.se/proxy/kloker-key/v1","name":"klokintegration.se","doc":"https://klokintegration.se/docs/ai-api","models":{"Kloker-Integration-Developer":{"id":"Kloker-Integration-Developer","name":"Kloker Integration Developer","description":"Knows the customer integration environment and Klok best practices. Opinionated about implementation. The gateway runs ecosystem lookup tools server-side and appends a system-prompt injection. Client system prompts and OpenAI tool calls are preserved.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}},"Kloker":{"id":"Kloker","name":"Kloker","description":"Cheap general model with a clean context. Nothing from the customer environment is packed in. It tracks the current best open source model. The Klok team verifies it and upgrades it periodically.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}},"Kloker-Integration-Architect":{"id":"Kloker-Integration-Architect","name":"Kloker Integration Architect","description":"Knows the customer integration environment and Klok best practices. Opinionated about structure. The gateway runs ecosystem lookup tools server-side and appends a system-prompt injection (data contracts, CloudEvents, event-driven flows). Client system prompts and OpenAI tool calls are preserved.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2026-08-29","last_updated":"2026-08-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":50000},"status":"beta","cost":{"input":0.23,"output":1.16}}}},"google-vertex":{"id":"google-vertex","env":["GOOGLE_VERTEX_PROJECT","GOOGLE_VERTEX_LOCATION","GOOGLE_APPLICATION_CREDENTIALS"],"npm":"@ai-sdk/google-vertex","name":"Vertex","doc":"https://cloud.google.com/vertex-ai/generative-ai/docs/models","models":{"claude-opus-4-8@default":{"id":"claude-opus-4-8@default","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gemini-2.5-flash-tts":{"id":"gemini-2.5-flash-tts","name":"Gemini 2.5 Flash TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-flash","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-09-30","last_updated":"2025-12-10","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":32768,"input":8192,"output":16384},"cost":{"input":0.5,"output":10},"canonical_model_id":"google/gemini-2.5-flash-tts"},"claude-sonnet-4-5@20250929":{"id":"claude-sonnet-4-5@20250929","name":"Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-5-20250929"},"gemini-2.5-flash-image":{"id":"gemini-2.5-flash-image","name":"Nano Banana","description":"Nano Banana image model for fast generation, edits, and character-consistent assets","family":"gemini-flash","attachment":true,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-26","last_updated":"2025-08-26","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":30},"canonical_model_id":"google/gemini-2.5-flash-image"},"claude-opus-4-6@default":{"id":"claude-opus-4-6@default","name":"Claude Opus 4.6","description":"High-end Claude for difficult coding, planning, and slower expert reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-6"},"claude-opus-4@20250514":{"id":"claude-opus-4@20250514","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-20250514"},"claude-sonnet-5-5@default":{"id":"claude-sonnet-5-5@default","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"claude-opus-5-5@default":{"id":"claude-opus-5-5@default","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"claude-opus-5@default":{"id":"claude-opus-5@default","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"claude-sonnet-4-6@default":{"id":"claude-sonnet-4-6@default","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"claude-haiku-4-5@20251001":{"id":"claude-haiku-4-5@20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini-3.1-flash-image":{"id":"gemini-3.1-flash-image","name":"Nano Banana 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","video","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":0.5,"output":60,"cache_read":0.05},"canonical_model_id":"google/gemini-3.1-flash-image"},"codestral-2":{"id":"codestral-2","name":"Codestral 2","description":"Mistral code model for low-latency completion, fill-in-the-middle, and code generation","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"provider":{"npm":"@ai-sdk/mistral","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/publishers/mistralai/models"},"cost":{"input":0.3,"output":0.9},"canonical_model_id":"mistral/codestral-2508"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"beta","cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"claude-opus-4-1@20250805":{"id":"claude-opus-4-1@20250805","name":"Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75},"canonical_model_id":"anthropic/claude-opus-4-1-20250805"},"claude-opus-4-5@20251101":{"id":"claude-opus-4-5@20251101","name":"Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-5-20251101"},"claude-opus-4-7@default":{"id":"claude-opus-4-7@default","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"input_audio":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":1.25,"output":10,"cache_read":0.125,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25}},"canonical_model_id":"google/gemini-2.5-pro"},"gemini-3-pro-image":{"id":"gemini-3-pro-image","name":"Nano Banana Pro","description":"Nano Banana Pro for higher-fidelity image generation and design-heavy edits","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":32768},"cost":{"input":2,"output":120,"cache_read":0.2},"canonical_model_id":"google/gemini-3-pro-image"},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.3,"output":2.5,"cache_read":0.03,"input_audio":1}},"gemini-3.1-flash-lite-image":{"id":"gemini-3.1-flash-lite-image","name":"Nano Banana 2 Lite","description":"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":65536,"output":4096},"cost":{"input":0.25,"output":30,"cache_read":0.025},"canonical_model_id":"google/gemini-3.1-flash-lite-image"},"claude-fable-5-1@default":{"id":"claude-fable-5-1@default","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"mistral-medium-3":{"id":"mistral-medium-3","name":"Mistral Medium 3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-medium","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-07","last_updated":"2025-05-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"provider":{"npm":"@ai-sdk/mistral","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/publishers/mistralai/models"},"cost":{"input":0.4,"output":2},"canonical_model_id":"mistral/mistral-medium-2505"},"mistral-small-2503":{"id":"mistral-small-2503","name":"Mistral Small 3.1 24B","description":"Efficient multimodal model for instruction following, coding, reasoning, and function calling","family":"mistral-small","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-03-17","last_updated":"2025-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"provider":{"npm":"@ai-sdk/mistral","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/publishers/mistralai/models"},"cost":{"input":0.1,"output":0.3},"canonical_model_id":"mistral/mistral-small-3-1-24b-instruct-2503"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.7-flash"},"gemini-3.1-pro-preview-customtools":{"id":"gemini-3.1-pro-preview-customtools","name":"Gemini 3.1 Pro Preview Custom Tools","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"beta","cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"google/gemini-3.1-pro-preview-customtools"},"gemini-3-flash-preview":{"id":"gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"beta","cost":{"input":0.5,"output":3,"cache_read":0.05,"input_audio":1},"canonical_model_id":"google/gemini-3-flash-preview"},"claude-fable-5@default":{"id":"claude-fable-5@default","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"input_audio":0.75},"canonical_model_id":"google/gemini-3.8-flash"},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"status":"deprecated","cost":{"input":0.1,"output":0.4,"cache_read":0.01,"input_audio":0.3},"canonical_model_id":"google/gemini-2.5-flash-lite"},"claude-haiku-5-5@default":{"id":"claude-haiku-5-5@default","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"gemini-2.5-pro-tts":{"id":"gemini-2.5-pro-tts","name":"Gemini 2.5 Pro TTS","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"gemini-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-09-30","last_updated":"2025-12-10","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":32768,"input":8192,"output":16384},"cost":{"input":1,"output":20},"canonical_model_id":"google/gemini-2.5-pro-tts"},"gemini-embedding-001":{"id":"gemini-embedding-001","name":"Gemini Embedding 001","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"gemini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-05","release_date":"2025-05-20","last_updated":"2025-05-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":2048,"output":1},"cost":{"input":0.15,"output":0},"canonical_model_id":"google/gemini-embedding-001"},"claude-sonnet-4@20250514":{"id":"claude-sonnet-4@20250514","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":1024}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-20250514"},"gemini-nano-banana-2.1":{"id":"gemini-nano-banana-2.1","name":"Nano Banana 2.1","description":"Image model for prompt-driven generation, multi-turn editing, and visual design workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","medium","high"]}],"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image","video"],"output":["text","image"]},"open_weights":false,"limit":{"context":131072,"output":32768},"cost":{"input":1.5,"output":30,"cache_read":0.15},"canonical_model_id":"google/gemini-nano-banana-2.1"},"claude-sonnet-5@default":{"id":"claude-sonnet-5@default","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"provider":{"npm":"@ai-sdk/google-vertex/anthropic"},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.25,"output":1.5,"cache_read":0.025,"input_audio":0.5},"canonical_model_id":"google/gemini-3.1-flash-lite"},"meta/llama-4-maverick-17b-128e-instruct-maas":{"id":"meta/llama-4-maverick-17b-128e-instruct-maas","name":"Llama 4 Maverick 17B 128E Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":8192},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.35,"output":1.15}},"meta/llama-4-scout-17b-16e-instruct-maas":{"id":"meta/llama-4-scout-17b-16e-instruct-maas","name":"Llama 4 Scout 17B Instruct","description":"Open Llama with long-context vision for efficient multimodal agents","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2025-04-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1310720,"output":8192},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.25,"output":0.7},"canonical_model_id":"meta/llama-4-scout-17b-instruct"},"meta/llama-3.3-70b-instruct-maas":{"id":"meta/llama-3.3-70b-instruct-maas","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2025-04-29","last_updated":"2025-04-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":8192},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.72,"output":0.72}},"google/gemma-4-26b-a4b-it-maas":{"id":"google/gemma-4-26b-a4b-it-maas","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"status":"alpha","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.15,"output":0.6,"cache_read":0.015},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"xai/grok-4.20-reasoning":{"id":"xai/grok-4.20-reasoning","name":"Grok 4.20 (Reasoning)","description":"Reasoning Grok for document-heavy analysis and long-horizon tool use","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-reasoning"},"xai/grok-4.7":{"id":"xai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":500000},"status":"beta","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.7"},"xai/grok-4.20-non-reasoning":{"id":"xai/grok-4.20-non-reasoning","name":"Grok 4.20 (Non-Reasoning)","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-09","last_updated":"2026-03-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.20-0309-non-reasoning"},"xai/grok-4.1-fast-reasoning":{"id":"xai/grok-4.1-fast-reasoning","name":"Grok 4.1 Fast (Reasoning)","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":30000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"xai/grok-4.1-fast-reasoning"},"xai/grok-4.3":{"id":"xai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":30000},"status":"beta","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4}},"canonical_model_id":"xai/grok-4.3"},"xai/grok-4.1-fast-non-reasoning":{"id":"xai/grok-4.1-fast-non-reasoning","name":"Grok 4.1 Fast","description":"Fast Grok model for responsive chat, tool-assisted work, and low-latency responses","family":"grok","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-11-19","last_updated":"2025-11-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":30000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.2,"output":0.5,"cache_read":0.05},"canonical_model_id":"xai/grok-4.1-fast"},"xai/grok-4.6":{"id":"xai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":524288,"output":500000},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":2,"output":6,"cache_read":0.5,"tiers":[{"input":4,"output":12,"cache_read":1,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1}},"canonical_model_id":"xai/grok-4.6"},"deepseek-ai/deepseek-v3.1-maas":{"id":"deepseek-ai/deepseek-v3.1-maas","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-28","last_updated":"2025-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":32768},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":1.7,"cache_read":0.06}},"deepseek-ai/deepseek-v3.2-maas":{"id":"deepseek-ai/deepseek-v3.2-maas","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-17","last_updated":"2026-04-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.56,"output":1.68,"cache_read":0.056}},"moonshotai/kimi-k2-thinking-maas":{"id":"moonshotai/kimi-k2-thinking-maas","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":2.5,"cache_read":0.06}},"zai-org/glm-5-maas":{"id":"zai-org/glm-5-maas","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1,"output":3.2,"cache_read":0.1},"canonical_model_id":"zhipuai/glm-5"},"zai-org/glm-4.7-maas":{"id":"zai-org/glm-4.7-maas","name":"GLM-4.7","description":"GLM model for coding, tool use, and complex reasoning","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-06","last_updated":"2026-01-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.6,"output":2.2,"cache_read":0.06}},"zai-org/glm-5.2-maas":{"id":"zai-org/glm-5.2-maas","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":64000},"status":"beta","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":1.4,"output":4.4,"cache_read":0.14},"canonical_model_id":"zhipuai/glm-5.2"},"qwen/qwen3-235b-a22b-instruct-2507-maas":{"id":"qwen/qwen3-235b-a22b-instruct-2507-maas","name":"Qwen3 235B A22B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-13","last_updated":"2025-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.22,"output":0.88}},"openai/gpt-oss-20b-maas":{"id":"openai/gpt-oss-20b-maas","name":"GPT OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"status":"deprecated","provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.07,"output":0.25,"cache_read":0.007}},"openai/gpt-oss-120b-maas":{"id":"openai/gpt-oss-120b-maas","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"provider":{"npm":"@ai-sdk/openai-compatible","api":"https://${GOOGLE_VERTEX_ENDPOINT}/v1/projects/${GOOGLE_VERTEX_PROJECT}/locations/${GOOGLE_VERTEX_LOCATION}/endpoints/openapi"},"cost":{"input":0.09,"output":0.36},"canonical_model_id":"openai/gpt-oss-120b"}}},"evroc":{"id":"evroc","env":["EVROC_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://models.think.evroc.com/v1","name":"evroc","doc":"https://docs.evroc.com/products/think/overview.html","models":{"google/gemma-4-26B-A4B-it":{"id":"google/gemma-4-26B-A4B-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.144,"output":0.575},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"intfloat/multilingual-e5-large-instruct":{"id":"intfloat/multilingual-e5-large-instruct","name":"E5 Multi-Lingual Large Embeddings 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":512},"cost":{"input":0.114,"output":0.114}},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8-27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.87,"output":3.5},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3-Reranker-4B":{"id":"Qwen/Qwen3-Reranker-4B","name":"Qwen3 Reranker 4B","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.0575,"output":0}},"Qwen/Qwen3.6-35B-A3B":{"id":"Qwen/Qwen3.6-35B-A3B","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.345,"output":1.38},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"Qwen/Qwen3-Embedding-8B":{"id":"Qwen/Qwen3-Embedding-8B","name":"Qwen3 Embedding 8B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":40960,"output":4096},"cost":{"input":0.115,"output":0.115}},"mistralai/Mistral-Medium-3.5-128B":{"id":"mistralai/Mistral-Medium-3.5-128B","name":"Mistral Medium 3.5","description":"Balanced Mistral model for enterprise assistants, multilingual work, and tools","family":"mistral-medium","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-29","last_updated":"2026-04-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.725,"output":6.9},"canonical_model_id":"mistral/mistral-medium-2604"},"mistralai/Voxtral-Small-24B-2507":{"id":"mistralai/Voxtral-Small-24B-2507","name":"Voxtral Small 24B","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"voxtral","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["audio","text"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":32000},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":1.4375,"output":5.75},"canonical_model_id":"moonshotai/kimi-k2.6"},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":1.4375,"output":5.75},"canonical_model_id":"zhipuai/glm-5.2"},"nvidia/Llama-3.3-70B-Instruct-FP8":{"id":"nvidia/Llama-3.3-70B-Instruct-FP8","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":1.15,"output":1.15},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"KBLab/kb-whisper-large":{"id":"KBLab/kb-whisper-large","name":"KB Whisper","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3}},"evroc/roc":{"id":"evroc/roc","name":"roc","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2026-01","release_date":"2026-06-06","last_updated":"2026-06-06","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":2.875,"output":11.516}},"openai/whisper-large-v3":{"id":"openai/whisper-large-v3","name":"Whisper 3 Large","description":"Open Whisper checkpoint for robust multilingual transcription and captioning","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":4096},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3},"canonical_model_id":"openai/whisper-large-v3"},"openai/whisper-large-v3-turbo":{"id":"openai/whisper-large-v3-turbo","name":"Whisper Large v3 Turbo","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"whisper","attachment":false,"reasoning":false,"tool_call":false,"release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["audio"],"output":["text"]},"open_weights":true,"limit":{"context":448,"output":448},"cost":{"input":0.0023,"output":0.0023,"output_audio":2.3},"canonical_model_id":"openai/whisper-large-v3-turbo"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.23,"output":0.92}}}},"tokengo":{"id":"tokengo","env":["TOKENGO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.tokengo.com/v1","name":"TokenGo","doc":"https://www.tokengo.com/docs","models":{"deepseek/deepseek-v3.1":{"id":"deepseek/deepseek-v3.1","name":"DeepSeek-V3.1","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.19,"output":0.71,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v3.1"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v3.2":{"id":"deepseek/deepseek-v3.2","name":"DeepSeek V3.2","description":"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":64000},"cost":{"input":0.2174,"output":0.326,"cache_read":0.06},"canonical_model_id":"deepseek/deepseek-v3.2"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.098,"output":0.196,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":0.075,"output":0.025,"cache_read":0.015},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.89,"output":3.2647,"cache_read":0.2226},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshotai/kimi-k2.6":{"id":"moonshotai/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.16},"canonical_model_id":"moonshotai/kimi-k2.6"},"minimax/minimax-m2.5":{"id":"minimax/minimax-m2.5","name":"MiniMax-M2.5","description":"Prior MiniMax coding model for agent workflows, office edits, and automation","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.03},"canonical_model_id":"minimax/MiniMax-M2.5"},"qwen/qwen3.5-397b-a17b":{"id":"qwen/qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.4,"output":2.65,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"}}},"submodel":{"id":"submodel","env":["SUBMODEL_INSTAGEN_ACCESS_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://llm.submodel.ai/v1","name":"submodel","doc":"https://submodel.gitbook.io","models":{"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen3 235B A22B Thinking 2507","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3-235B-A22B-Instruct-2507":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507","name":"Qwen3 235B A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.2,"output":0.3}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8","name":"Qwen3 Coder 480B A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.2,"output":0.8}},"deepseek-ai/DeepSeek-V3.1":{"id":"deepseek-ai/DeepSeek-V3.1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.5,"output":2.15}},"deepseek-ai/DeepSeek-V3-0324":{"id":"deepseek-ai/DeepSeek-V3-0324","name":"DeepSeek V3 0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":75000,"output":163840},"cost":{"input":0.2,"output":0.8}},"zai-org/GLM-4.5-FP8":{"id":"zai-org/GLM-4.5-FP8","name":"GLM 4.5 FP8","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.2,"output":0.8}},"zai-org/GLM-4.5-Air":{"id":"zai-org/GLM-4.5-Air","name":"GLM 4.5 Air","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-air","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.1,"output":0.5}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-08-23","last_updated":"2025-08-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.1,"output":0.5}}}},"kosmik":{"id":"kosmik","env":["KOSMIK_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.koscompute.com/v1","name":"Kosmik Compute","doc":"https://api.koscompute.com/docs/","models":{"qwen/qwen3.8-27b":{"id":"qwen/qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.35,"output":2.2,"cache_read":0.09},"canonical_model_id":"alibaba/qwen3.8-27b"}}},"tencent-token-plan":{"id":"tencent-token-plan","env":["TENCENT_TOKEN_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.lkeap.cloud.tencent.com/plan/v3","name":"Tencent Token Plan","doc":"https://cloud.tencent.com/document/product/1823/130060","models":{"hy3":{"id":"hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":192000,"output":128000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"tencent/hy3"},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":64000},"cost":{"input":0.834,"output":2.501,"cache_read":0.042},"canonical_model_id":"tencent/hy4-preview"}}},"togetherai":{"id":"togetherai","env":["TOGETHER_API_KEY"],"npm":"@ai-sdk/togetherai","name":"Together AI","doc":"https://docs.together.ai/docs/serverless-models","models":{"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":1.04,"output":1.04}},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","description":"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio","family":"ling","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["max","xhigh","high","medium","low","none"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":131072},"cost":{"input":1,"output":4.05,"cache_read":0.17},"canonical_model_id":"thinkingmachines/inkling"},"essentialai/Rnj-1-Instruct":{"id":"essentialai/Rnj-1-Instruct","name":"Rnj-1 Instruct","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"rnj","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2025-12-05","last_updated":"2025-12-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"status":"deprecated","cost":{"input":0.15,"output":0.15}},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":500000},"cost":{"input":1.25,"output":3.75,"cache_read":0.125}},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"id":"Qwen/Qwen2.5-7B-Instruct-Turbo","name":"Qwen 2.5 7B Instruct Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.3,"output":0.3}},"Qwen/Qwen3-Coder-Next-FP8":{"id":"Qwen/Qwen3-Coder-Next-FP8","name":"Qwen3 Coder Next FP8","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2026-02-03","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.5,"output":1.2}},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-tput","name":"Qwen3 235B A22B Instruct 2507 FP8","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":0.2,"output":0.6}},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.17,"output":0.25}},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-02-16","last_updated":"2026-06-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":130000},"status":"deprecated","cost":{"input":0.6,"output":3.6,"cache_read":0.35}},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{"id":"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8","name":"Qwen3 Coder 480B A35B Instruct","description":"Legacy model retained for compatibility with older integrations","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"deprecated","cost":{"input":2,"output":2}},"Qwen/Qwen3.6-Plus":{"id":"Qwen/Qwen3.6-Plus","name":"Qwen3.6 Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":500000},"cost":{"input":0.5,"output":3}},"LiquidAI/LFM2-24B-A2B":{"id":"LiquidAI/LFM2-24B-A2B","name":"LFM2-24B-A2B","description":"Open-weight instruction model for adaptable chat and self-hosted production workloads","family":"liquid","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"release_date":"2026-02-25","last_updated":"2026-02-25","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.03,"output":0.12}},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-R1":{"id":"deepseek-ai/DeepSeek-R1","name":"DeepSeek-R1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163839,"output":163839},"status":"deprecated","cost":{"input":3,"output":7}},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.32,"output":3.96,"cache_read":0.13},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek-ai/DeepSeek-V4.1-Flash":{"id":"deepseek-ai/DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-ai/DeepSeek-V3-1":{"id":"deepseek-ai/DeepSeek-V3-1","name":"DeepSeek V3.1","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-21","last_updated":"2025-08-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":0.6,"output":1.7}},"deepseek-ai/DeepSeek-V3":{"id":"deepseek-ai/DeepSeek-V3","name":"DeepSeek-V3","description":"Legacy model retained for compatibility with older integrations","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2025-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"status":"deprecated","cost":{"input":1.25,"output":1.25}},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","description":"MiniMax multimodal coding model for long-context reasoning and agent tasks","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":524288,"output":250000},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"MiniMaxAI/MiniMax-M2.5":{"id":"MiniMaxAI/MiniMax-M2.5","name":"MiniMax-M2.5","description":"Legacy model retained for compatibility with older integrations","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"status":"deprecated","cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M2.7"},"moonshotai/Kimi-K3":{"id":"moonshotai/Kimi-K3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-11","release_date":"2026-04-07","last_updated":"2026-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"status":"deprecated","cost":{"input":1.4,"output":4.4,"cache_read":0.26}},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-16","last_updated":"2026-06-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":164000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":131072},"status":"deprecated","cost":{"input":1,"output":3.2},"canonical_model_id":"zhipuai/glm-5"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048575,"output":400000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"zai-org/GLM-5.3":{"id":"zai-org/GLM-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":262144},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","description":"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512300,"output":512300},"cost":{"input":0.6,"output":3.6,"cache_read":0.2},"canonical_model_id":"nvidia/nemotron-3-ultra-550b-a55b"},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.15,"output":0.6}}}},"helicone":{"id":"helicone","env":["HELICONE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://ai-gateway.helicone.ai/v1","name":"Helicone","doc":"https://helicone.ai/models","models":{"grok-4-1-fast-reasoning":{"id":"grok-4-1-fast-reasoning","name":"xAI Grok 4.1 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"grok-3":{"id":"grok-3","name":"xAI Grok 3","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.75}},"llama-4-scout":{"id":"llama-4-scout","name":"Meta Llama 4 Scout 17B 16E","description":"Open multimodal Llama model for long-context analysis and efficient agents","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.08,"output":0.3}},"llama-guard-4":{"id":"llama-guard-4","name":"Meta Llama Guard 4 12B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":1024},"cost":{"input":0.21,"output":0.21}},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral-Large","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-24","last_updated":"2024-07-24","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":2,"output":6}},"grok-4-1-fast-non-reasoning":{"id":"grok-4-1-fast-non-reasoning","name":"xAI Grok 4.1 Fast Non-Reasoning","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-17","last_updated":"2025-11-17","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":2000000,"output":30000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"qwen3-vl-235b-a22b-instruct":{"id":"qwen3-vl-235b-a22b-instruct","name":"Qwen3 VL 235B A22B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":16384},"cost":{"input":0.3,"output":1.5}},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16400},"cost":{"input":20,"output":40}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"OpenAI: GPT-5.1 Codex","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"gemini-3-pro-preview":{"id":"gemini-3-pro-preview","name":"Google Gemini 3 Pro Preview","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-18","last_updated":"2025-11-18","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.19999999999999998}},"gpt-4o":{"id":"gpt-4o","name":"OpenAI GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-4.1-mini-2025-04-14":{"id":"gpt-4.1-mini-2025-04-14","name":"OpenAI GPT-4.1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999}},"glm-4.6":{"id":"glm-4.6","name":"Zai GLM-4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.44999999999999996,"output":1.5}},"claude-3.5-haiku":{"id":"claude-3.5-haiku","name":"Anthropic: Claude 3.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":0.7999999999999999,"output":4,"cache_read":0.08,"cache_write":1}},"o1-mini":{"id":"o1-mini","name":"OpenAI: o1-mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":65536},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"grok-4":{"id":"grok-4","name":"xAI Grok 4","description":"Grok model for agentic tool use, reasoning, coding, and live assistance","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-09","last_updated":"2024-07-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":3,"output":15,"cache_read":0.75}},"gpt-5-codex":{"id":"gpt-5-codex","name":"OpenAI: GPT-5 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"llama-4-maverick":{"id":"llama-4-maverick","name":"Meta Llama 4 Maverick 17B 128E","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.15,"output":0.6}},"qwen3-coder":{"id":"qwen3-coder","name":"Qwen3 Coder 480B A35B Instruct Turbo","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.22,"output":0.95}},"gpt-5-mini":{"id":"gpt-5-mini","name":"OpenAI GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998}},"o4-mini":{"id":"o4-mini","name":"OpenAI o4 Mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"o3-mini":{"id":"o3-mini","name":"OpenAI o3 Mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2023-10","release_date":"2023-10-01","last_updated":"2023-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"kimi-k2-0711":{"id":"kimi-k2-0711","name":"Kimi K2 (07/11)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.5700000000000001,"output":2.3}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"OpenAI GPT-4.1 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998}},"grok-4-fast-reasoning":{"id":"grok-4-fast-reasoning","name":"xAI: Grok 4 Fast Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-01","last_updated":"2025-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-28","last_updated":"2025-04-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":40960},"cost":{"input":0.29,"output":0.59}},"gpt-5-nano":{"id":"gpt-5-nano","name":"OpenAI GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.049999999999999996,"output":0.39999999999999997,"cache_read":0.005}},"claude-3.5-sonnet-v2":{"id":"claude-3.5-sonnet-v2","name":"Anthropic: Claude 3.5 Sonnet v2","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-22","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"gpt-5.1-chat-latest":{"id":"gpt-5.1-chat-latest","name":"OpenAI GPT-5.1 Chat","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"claude-4.5-sonnet":{"id":"claude-4.5-sonnet","name":"Anthropic: Claude Sonnet 4.5","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"deepseek-tng-r1t2-chimera":{"id":"deepseek-tng-r1t2-chimera","name":"DeepSeek TNG R1T2 Chimera","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-02","last_updated":"2025-07-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":130000,"output":163840},"cost":{"input":0.3,"output":1.2}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8192},"cost":{"input":0.56,"output":1.68,"cache_read":0.07}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.03,"output":0.13}},"o1":{"id":"o1","name":"OpenAI: o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"mistral-small":{"id":"mistral-small","name":"Mistral Small 3.2","description":"Efficient Mistral model for fast chat, extraction, and production assistants","family":"mistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-03","release_date":"2025-06-20","last_updated":"2025-06-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.075,"output":0.2},"canonical_model_id":"mistral/mistral-small-2506"},"chatgpt-4o-latest":{"id":"chatgpt-4o-latest","name":"OpenAI ChatGPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-14","last_updated":"2024-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":5,"output":20,"cache_read":2.5}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3 Coder 30B A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-31","last_updated":"2025-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":262144},"cost":{"input":0.09999999999999999,"output":0.3}},"sonar-pro":{"id":"sonar-pro","name":"Perplexity Sonar Pro","description":"Advanced Sonar search model for deeper research and cited synthesis","family":"sonar-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":3,"output":15}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":262144},"cost":{"input":0.48,"output":2}},"grok-4-fast-non-reasoning":{"id":"grok-4-fast-non-reasoning","name":"xAI Grok 4 Fast Non-Reasoning","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-19","last_updated":"2025-09-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":2000000,"output":2000000},"cost":{"input":0.19999999999999998,"output":0.5,"cache_read":0.049999999999999996}},"claude-opus-4-1-20250805":{"id":"claude-opus-4-1-20250805","name":"Anthropic: Claude Opus 4.1 (20250805)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-5-pro":{"id":"gpt-5-pro","name":"OpenAI: GPT-5 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":32768},"cost":{"input":15,"output":120}},"gpt-5-chat-latest":{"id":"gpt-5-chat-latest","name":"OpenAI GPT-5 Chat Latest","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-09","release_date":"2024-09-30","last_updated":"2024-09-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"deepseek-v3.1-terminus":{"id":"deepseek-v3.1-terminus","name":"DeepSeek V3.1 Terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.27,"output":1,"cache_read":0.21600000000000003}},"claude-opus-4-1":{"id":"claude-opus-4-1","name":"Anthropic: Claude Opus 4.1","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"gpt-5.1":{"id":"gpt-5.1","name":"OpenAI GPT-5.1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"llama-3.3-70b-versatile":{"id":"llama-3.3-70b-versatile","name":"Meta Llama 3.3 70B Versatile","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32678},"cost":{"input":0.59,"output":0.7899999999999999}},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Meta Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16400},"cost":{"input":0.13,"output":0.39}},"grok-3-mini":{"id":"grok-3-mini","name":"xAI Grok 3 Mini","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.3,"output":0.5,"cache_read":0.075}},"gemma-3-12b-it":{"id":"gemma-3-12b-it","name":"Google Gemma 3 12B","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-12","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.049999999999999996,"output":0.09999999999999999}},"qwen2.5-coder-7b-fast":{"id":"qwen2.5-coder-7b-fast","name":"Qwen2.5 Coder 7B fast","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-15","last_updated":"2024-09-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":0.03,"output":0.09}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"OpenAI GPT-4o-mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3 Next 80B A3B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":16384},"cost":{"input":0.14,"output":1.4}},"o3-pro":{"id":"o3-pro","name":"OpenAI o3 Pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"OpenAI GPT-OSS 20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.049999999999999996,"output":0.19999999999999998}},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Google Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens","min":128,"max":32768}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.3125,"cache_write":1.25}},"sonar-deep-research":{"id":"sonar-deep-research","name":"Perplexity Sonar Deep Research","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar-deep-research","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Google Gemini 2.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":0,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.3,"output":2.5,"cache_read":0.075,"cache_write":0.3}},"claude-4.5-haiku":{"id":"claude-4.5-haiku","name":"Anthropic: Claude 4.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25}},"gemma2-9b-it":{"id":"gemma2-9b-it","name":"Google Gemma 2","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-25","last_updated":"2024-06-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"cost":{"input":0.01,"output":0.03}},"claude-3.7-sonnet":{"id":"claude-3.7-sonnet","name":"Anthropic: Claude 3.7 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-02","release_date":"2025-02-19","last_updated":"2025-02-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"hermes-2-pro-llama-3-8b":{"id":"hermes-2-pro-llama-3-8b","name":"Hermes 2 Pro Llama 3 8B","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-05-27","last_updated":"2024-05-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.14,"output":0.14}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Anthropic: Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"qwen3-235b-a22b-thinking":{"id":"qwen3-235b-a22b-thinking","name":"Qwen3 235B A22B Thinking","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-25","last_updated":"2025-07-25","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":81920},"cost":{"input":0.3,"output":2.9000000000000004}},"grok-code-fast-1":{"id":"grok-code-fast-1","name":"xAI Grok Code Fast 1","description":"Fast Grok model for responsive chat, reasoning, and tool-assisted work","family":"grok","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-08-25","last_updated":"2024-08-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":10000},"cost":{"input":0.19999999999999998,"output":1.5,"cache_read":0.02}},"claude-sonnet-4-5-20250929":{"id":"claude-sonnet-4-5-20250929","name":"Anthropic: Claude Sonnet 4.5 (20250929)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.30000000000000004,"cache_write":3.75}},"gpt-4.1":{"id":"gpt-4.1","name":"OpenAI GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"qwen3-30b-a3b":{"id":"qwen3-30b-a3b","name":"Qwen3 30B A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-06","release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":41000,"output":41000},"cost":{"input":0.08,"output":0.29}},"kimi-k2-0905":{"id":"kimi-k2-0905","name":"Kimi K2 (09/05)","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-05","last_updated":"2025-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":16384},"cost":{"input":0.5,"output":2,"cache_read":0.39999999999999997}},"llama-3.1-8b-instruct":{"id":"llama-3.1-8b-instruct","name":"Meta Llama 3.1 8B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":16384},"cost":{"input":0.02,"output":0.049999999999999996}},"llama-3.1-8b-instruct-turbo":{"id":"llama-3.1-8b-instruct-turbo","name":"Meta Llama 3.1 8B Instruct Turbo","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.02,"output":0.03}},"llama-prompt-guard-2-86m":{"id":"llama-prompt-guard-2-86m","name":"Meta Llama Prompt Guard 2 86M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01}},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Anthropic: Claude 4.5 Haiku (20251001)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-10","release_date":"2025-10-01","last_updated":"2025-10-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.09999999999999999,"cache_write":1.25}},"sonar":{"id":"sonar","name":"Perplexity Sonar","description":"Sonar search model for current answers, retrieval, and citation-backed chat","family":"sonar","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":1,"output":1}},"deepseek-reasoner":{"id":"deepseek-reasoner","name":"DeepSeek Reasoner","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":64000},"cost":{"input":0.56,"output":1.68,"cache_read":0.07}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"OpenAI GPT-4.1 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.39999999999999997,"output":1.5999999999999999,"cache_read":0.09999999999999999}},"ernie-4.5-21b-a3b-thinking":{"id":"ernie-4.5-21b-a3b-thinking","name":"Baidu Ernie 4.5 21B A3B Thinking","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","family":"ernie","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-03","release_date":"2025-03-16","last_updated":"2025-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":8000},"cost":{"input":0.07,"output":0.28}},"claude-4.5-opus":{"id":"claude-4.5-opus","name":"Anthropic: Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":63999}],"tool_call":true,"temperature":true,"knowledge":"2025-11","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"gemini-2.5-flash-lite":{"id":"gemini-2.5-flash-lite","name":"Google Gemini 2.5 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":512,"max":24576}],"tool_call":true,"temperature":true,"knowledge":"2025-07","release_date":"2025-07-22","last_updated":"2025-07-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.09999999999999999,"output":0.39999999999999997,"cache_read":0.024999999999999998,"cache_write":0.09999999999999999}},"claude-3-haiku-20240307":{"id":"claude-3-haiku-20240307","name":"Anthropic: Claude 3 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-03","release_date":"2024-03-07","last_updated":"2024-03-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.25,"output":1.25,"cache_read":0.03,"cache_write":0.3}},"sonar-reasoning-pro":{"id":"sonar-reasoning-pro","name":"Perplexity Sonar Reasoning Pro","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":2,"output":8}},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-09","release_date":"2025-09-22","last_updated":"2025-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.41}},"llama-prompt-guard-2-22m":{"id":"llama-prompt-guard-2-22m","name":"Meta Llama Prompt Guard 2 22M","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"llama","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-10","release_date":"2024-10-01","last_updated":"2024-10-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":512,"output":2},"cost":{"input":0.01,"output":0.01}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"OpenAI GPT-OSS 120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.04,"output":0.16}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"OpenAI: GPT-5.1 Codex Mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-codex","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.024999999999999998}},"o3":{"id":"o3","name":"OpenAI o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2024-06","release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-5":{"id":"gpt-5","name":"OpenAI GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":false,"reasoning":false,"tool_call":true,"temperature":false,"knowledge":"2025-01","release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.12500000000000003}},"llama-3.1-8b-instant":{"id":"llama-3.1-8b-instant","name":"Meta Llama 3.1 8B Instant","description":"Compact Llama instruction model for fast chat and local deployment","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":32678},"cost":{"input":0.049999999999999996,"output":0.08}},"sonar-reasoning":{"id":"sonar-reasoning","name":"Perplexity Sonar Reasoning","description":"Web-grounded reasoning model for multi-step research and cited answers","family":"sonar-reasoning","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":false,"temperature":true,"knowledge":"2025-01","release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":4096},"cost":{"input":1,"output":5}},"claude-opus-4":{"id":"claude-opus-4","name":"Anthropic: Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024,"max":31999}],"tool_call":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-05-14","last_updated":"2025-05-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}}}},"cortecs":{"id":"cortecs","env":["CORTECS_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.cortecs.ai/v1","name":"Cortecs","doc":"https://api.cortecs.ai/v1/models","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":2.898,"output":15.453,"cache_read":0.242},"canonical_model_id":"openai/gpt-5.4"},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":0.996,"output":4.982,"cache_read":0.099,"cache_write":1.186},"canonical_model_id":"anthropic/claude-haiku-4-5"},"gpt-oss-safeguard-120b":{"id":"gpt-oss-safeguard-120b","name":"GPT OSS Safeguard 120B","description":"Safety model for policy screening, moderation, and risk-aware routing workflows","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-10-29","last_updated":"2025-10-29","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.179,"output":0.697},"canonical_model_id":"openai/gpt-oss-safeguard-120b"},"gemma-4-31b-it":{"id":"gemma-4-31b-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.223,"output":0.39},"canonical_model_id":"google/gemma-4-31b-it"},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":500000},"cost":{"input":0.1,"output":0.4,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.8-27b"},"gemma-3-27b-it":{"id":"gemma-3-27b-it","name":"Gemma 3 27B IT","description":"Gemma 3 is a family of lightweight, multimodal models from Google, supporting text and image inputs, multilingual capabilities, and a 131K context window.","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"knowledge":"2024-08","release_date":"2025-03-12","last_updated":"2025-03-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":110000},"cost":{"input":0.099,"output":0.299},"canonical_model_id":"google/gemma-3-27b-it"},"qwen3.8-2.4t-a95b":{"id":"qwen3.8-2.4t-a95b","name":"Qwen3.8 2.4T A95B","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":2.5,"output":6,"cache_read":0.625},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"mistral-large-2402":{"id":"mistral-large-2402","name":"mistral-large-2402","description":"Mistral Large (24.02) is Mistral AI’s most advanced language model, built for complex multilingual reasoning, code generation, and deep text understanding.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":4.284,"output":12.952}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":2.659,"output":10.635,"cache_read":1.33},"canonical_model_id":"openai/gpt-4o"},"qwen3guard-gen-8b":{"id":"qwen3guard-gen-8b","name":"qwen3guard-gen-8b","description":"Qwen3Guard-Gen-8B is a large-scale multilingual safety moderation model designed for high-accuracy prompt and response classification.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.1,"output":0.35,"cache_read":0.018},"canonical_model_id":"zhipuai/glm-5.3-flash"},"ministral-8b-2512":{"id":"ministral-8b-2512","name":"ministral-8b-2512","description":"Ministral 3 8B is a balanced, efficient multimodal model offering strong text and vision capabilities, optimized for edge and local deployment.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.179,"output":0.179,"cache_read":0.017}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.09,"output":0.17,"cache_read":0.014},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"mistral-7b-instruct-v0.2":{"id":"mistral-7b-instruct-v0.2","name":"mistral-7b-instruct-v0.2","description":"Mistral 7B Instruct is a compact, 7B parameter model optimized for fast and efficient text and code generation with a 32K token context window.","attachment":true,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":8192},"cost":{"input":0.159,"output":0.219}},"qwen3-235b-a22b-instruct-2507":{"id":"qwen3-235b-a22b-instruct-2507","name":"Qwen3 235B-A22B Instruct 2507","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-21","last_updated":"2025-07-21","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.199,"output":0.598,"cache_read":0.018},"canonical_model_id":"alibaba/qwen3-235b-a22b-instruct-2507"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":14.999},"canonical_model_id":"moonshotai/kimi-k3"},"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-09","release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.167,"output":0.891},"canonical_model_id":"alibaba/qwen3-coder-next"},"nova-lite-v1":{"id":"nova-lite-v1","name":"nova-lite-v1","description":"Nova Lite is a fast, low-cost multimodal foundation model capable of reasoning over text, images, and video in 200+ languages.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.069,"output":0.275}},"claude-haiku-5.5":{"id":"claude-haiku-5.5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.113,"output":0.563,"cache_read":0.011,"cache_write":0.14},"canonical_model_id":"anthropic/claude-haiku-5-5"},"apertus-70b":{"id":"apertus-70b","name":"Apertus 70B","description":"Apertus 70B is an open, multilingual language model designed for research, long-context reasoning, and sovereignty-focused AI systems.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-09","release_date":"2025-09-02","last_updated":"2025-09-02","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":16384},"cost":{"input":1.393,"output":2.228},"canonical_model_id":"swiss-ai/apertus-70b"},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.279,"output":2.192,"cache_read":0.056},"canonical_model_id":"openai/gpt-5-mini"},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.201,"output":0.6,"cache_read":0.004},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.111,"output":0.434,"cache_read":0.056},"canonical_model_id":"openai/gpt-4.1-nano"},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":196000},"cost":{"input":0.348,"output":1.39,"cache_read":0.075},"canonical_model_id":"minimax/MiniMax-M2.5"},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":16384,"output":16384},"cost":{"input":0.179,"output":0.697},"canonical_model_id":"alibaba/qwen3-32b"},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"mistral-medium-3.5","description":"Mistral Medium 3.5 is a frontier multimodal 128B model combining reasoning, coding, and instruction-following with strong agentic performance and efficient deployment.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-04-30","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1.532,"output":7.843,"cache_read":0.154}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.06,"output":0.439,"cache_read":0.019},"canonical_model_id":"openai/gpt-5-nano"},"claude-4-6-sonnet":{"id":"claude-4-6-sonnet","name":"Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3.196,"output":15.94,"cache_read":0.32,"cache_write":3.999},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.475,"output":2.97,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.6"},"claude-4-5-sonnet":{"id":"claude-4-5-sonnet","name":"Claude Sonnet 4.5 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":2.989,"output":14.945,"cache_read":0.326,"cache_write":4.078},"canonical_model_id":"anthropic/claude-sonnet-4-5"},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-12","release_date":"2025-12-09","last_updated":"2025-12-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.478,"output":2.392,"cache_read":0.045},"canonical_model_id":"mistral/devstral-2512"},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038},"canonical_model_id":"google/gemini-3.6-flash"},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"mistral-7b-instruct-v0.3","description":"Mistral-7B-Instruct-v0.3 model is a fine-tuned version of the Mistral 7B base model, optimized for instruction-following tasks. Released in 2023, it is intended for demonstration purposes and does not include built-in guardrails or moderation features.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":127000,"output":127000},"cost":{"input":0.111,"output":0.111}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Smaller Qwen coder for efficient local agents and repo-level fixes","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.179,"output":0.697,"cache_read":0.014},"canonical_model_id":"alibaba/qwen3-coder-30b-a3b-instruct"},"mixtral-8x7B-instruct-v0.1":{"id":"mixtral-8x7B-instruct-v0.1","name":"Mixtral 8x7B Instruct v0.1","description":"Reasoning model for deliberate analysis, multi-step problem solving, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2023-12-11","last_updated":"2023-12-11","modalities":{"input":["text","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.488,"output":0.758}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.4,"output":11.999,"cache_read":0.12,"cache_write":3},"canonical_model_id":"openai/gpt-6.1-sol"},"gemma-4-26b-a4b-it":{"id":"gemma-4-26b-a4b-it","name":"Gemma 4 26B A4B IT","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":81920},"cost":{"input":0.111,"output":0.557},"canonical_model_id":"google/gemma-4-26b-a4b-it"},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.33,"output":2.749,"cache_read":0.033,"cache_write":0.082},"canonical_model_id":"google/gemini-3.5-flash-lite"},"voxtral-small-2507":{"id":"voxtral-small-2507","name":"voxtral-small-2507","description":"Voxtral Small is a multimodal model with audio input, combining advanced speech capabilities with strong text performance for transcription, translation, and audio understanding.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-02-02","last_updated":"2026-02-02","modalities":{"input":["text","audio"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.123,"output":0.368,"cache_read":0.012}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156},"canonical_model_id":"openai/gpt-5.1"},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.5,"output":27.498,"cache_read":0.55,"cache_write":6.874},"canonical_model_id":"anthropic/claude-opus-5"},"llama-3.3-70b-instruct":{"id":"llama-3.3-70b-instruct","name":"Llama-3.3-70B-Instruct","description":"Popular open Llama workhorse for multilingual chat, coding, and self-hosting","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.724,"output":0.724},"canonical_model_id":"meta/llama-3.3-70b-instruct"},"qwen3guard-gen-0.6b":{"id":"qwen3guard-gen-0.6b","name":"qwen3guard-gen-0.6b","description":"Qwen3Guard-Gen-0.6B is a lightweight multilingual safety moderation model that classifies prompts and responses into safe, controversial, or unsafe categories.","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":false,"release_date":"2026-02-04","last_updated":"2026-02-04","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0,"output":0}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16000},"cost":{"input":0.159,"output":0.638,"cache_read":0.081},"canonical_model_id":"openai/gpt-4o-mini"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":32768},"cost":{"input":0.167,"output":0.557},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"pixtral-12b-2409":{"id":"pixtral-12b-2409","name":"pixtral-12b-2409","description":"Pixtral 2409 12B is a state-of-the-art multimodal model with 12B parameters and a 400M vision encoder, natively trained on interleaved text and image data. It excels in tasks spanning vision-language reasoning, instruction following, and pure text understanding, making it highly effective for real-world multimodal applications.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-11-09","last_updated":"2024-11-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.223,"output":0.223}},"claude-sonnet-5.5":{"id":"claude-sonnet-5.5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.25,"output":11.249,"cache_read":0.225,"cache_write":2.813},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.045,"output":0.167},"canonical_model_id":"openai/gpt-oss-20b"},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.649,"output":9.899,"cache_read":0.165,"cache_write":1},"canonical_model_id":"google/gemini-3.5-flash"},"gemini-2.5-pro":{"id":"gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Advanced Gemini model for complex reasoning, coding, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":1.495,"output":9.964,"cache_read":0.242,"cache_write":0.434},"canonical_model_id":"google/gemini-2.5-pro"},"hermes-4-405b":{"id":"hermes-4-405b","name":"hermes-4-405b","description":"Hermes 4 405B is a frontier hybrid-mode reasoning model built on Llama 3.1, optimized for advanced logic, math, coding, and structured output generation.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-08-13","last_updated":"2024-08-13","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.996,"output":2.989}},"gemini-2.5-flash":{"id":"gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.299,"output":2.491,"cache_read":0.029,"cache_write":0.097},"canonical_model_id":"google/gemini-2.5-flash"},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"qwen3-vl-235b-a22b","description":"Qwen3 VL 235B A22B is a 235B-parameter MoE vision-language flagship model (≈22B active) designed for frontier-level multimodal understanding across text, images, documents, and long videos.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-01-13","last_updated":"2026-01-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.617,"output":3.119,"cache_read":0.052}},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":64000},"cost":{"input":2,"output":3.999,"cache_read":0.5},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"glm-4.7-flash":{"id":"glm-4.7-flash","name":"GLM-4.7-Flash","description":"Efficient GLM model for fast reasoning, coding, and agent workflows","family":"glm-flash","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-19","last_updated":"2026-01-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":203000,"output":203000},"cost":{"input":0.08,"output":0.478},"canonical_model_id":"zhipuai/glm-4.7-flash"},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.111,"output":0.167},"canonical_model_id":"alibaba/qwen3.5-9b"},"claude-opus4-6":{"id":"claude-opus4-6","name":"Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.313,"output":26.561,"cache_read":0.531,"cache_write":6.645},"canonical_model_id":"anthropic/claude-opus-4-6"},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4 (latest)","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":65000},"cost":{"input":2.989,"output":14.945,"cache_read":0.296,"cache_write":3.707},"canonical_model_id":"anthropic/claude-sonnet-4-0"},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2,"cache_read":0.06},"canonical_model_id":"minimax/MiniMax-M3"},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.219,"output":1.32,"cache_read":0.022,"cache_write":0.275},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3.8-flash-next":{"id":"qwen3.8-flash-next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":64000},"cost":{"input":0.201,"output":0.5,"cache_read":0.05},"canonical_model_id":"alibaba/qwen3.8-flash-next"},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":256000},"cost":{"input":0.156,"output":0.625,"cache_read":0.016},"canonical_model_id":"mistral/mistral-small-2603"},"nemotron-nano-v2-12b":{"id":"nemotron-nano-v2-12b","name":"nemotron-nano-v2-12b","description":"NVIDIA Nemotron Nano v2 12B is a 12-billion-parameter multimodal reasoning model designed for advanced video understanding, document intelligence, and visual reasoning, built with a hybrid Transformer-Mamba architecture for high efficiency and low latency.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-10-31","last_updated":"2025-10-31","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.24,"output":0.707}},"mistral-small-2503":{"id":"mistral-small-2503","name":"mistral-small-2503","description":"Combines advanced text and vision capabilities with 24 billion parameters, supporting multilingual tasks and long contexts up to 131k tokens, making it versatile for various applications without sacrificing performance.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-03-20","last_updated":"2025-03-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.111,"output":0.334}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2.192,"output":8.769,"cache_read":0.546},"canonical_model_id":"openai/gpt-4.1"},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2.2,"output":11,"cache_read":0.219,"cache_write":2.749},"canonical_model_id":"anthropic/claude-sonnet-5"},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-02-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.668,"output":4.01},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.038},"canonical_model_id":"google/gemini-3.7-flash"},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1000000},"cost":{"input":0.9,"output":3.24,"cache_read":0.189},"canonical_model_id":"zhipuai/glm-5.2"},"pixtral-large-2502":{"id":"pixtral-large-2502","name":"Pixtral Large (25.02)","description":"Pixtral Large (25.02) is a 124B open-weight multimodal model built on Mistral Large 2, offering advanced image understanding and strong performance across text and code tasks.","family":"pixtral","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-08","last_updated":"2025-04-08","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":1.993,"output":5.978},"canonical_model_id":"mistral/pixtral-large-2502"},"claude-opus4-7":{"id":"claude-opus4-7","name":"Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797},"canonical_model_id":"anthropic/claude-opus-4-7"},"minicpm-v-4.5":{"id":"minicpm-v-4.5","name":"minicpm-v-4.5","description":"MiniCPM-V 4.5 is a compact, high-performance vision-language model excelling in video understanding, OCR, and multimodal reasoning with efficient deployment.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.651,"output":1.097}},"llama-3.1-8b-instruct":{"id":"llama-3.1-8b-instruct","name":"Llama-3.1-8B-Instruct","description":"Optimized for dialogue, this LLM by Meta outperforms other open-source chat models in benchmarks while prioritizing helpfulness and safety.","family":"llama","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":128000},"cost":{"input":0.167,"output":0.167},"canonical_model_id":"meta/llama-3.1-8b-instruct"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":202752},"cost":{"input":1.384,"output":4.348,"cache_read":0.346},"canonical_model_id":"zhipuai/glm-5.1"},"qwen3-30b-a3b-instruct-2507":{"id":"qwen3-30b-a3b-instruct-2507","name":"qwen3-30b-a3b-instruct-2507","description":"Qwen3-30B-A3B-Instruct-2507 is an advanced Mixture-of-Experts model optimized for reasoning, coding, and multilingual instruction following.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262000,"output":262000},"cost":{"input":0.099,"output":0.299}},"qwen2.5-vl-72b-instruct":{"id":"qwen2.5-vl-72b-instruct","name":"qwen2.5-vl-72b-instruct","description":"Qwen2.5-VL is a powerful vision-language model with advanced capabilities in visual understanding, long video reasoning, and structured output generation.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":false,"structured_output":true,"temperature":false,"release_date":"2025-01-27","last_updated":"2025-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":1.014,"output":1.014}},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","description":"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning","family":"mistral-large","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-12-02","last_updated":"2025-12-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":256000},"cost":{"input":0.613,"output":1.838,"cache_read":0.061},"canonical_model_id":"mistral/mistral-large-2512"},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.434,"output":1.704,"cache_read":0.134},"canonical_model_id":"openai/gpt-4.1-mini"},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.825,"output":4.125,"cache_read":0.082,"cache_write":0.084},"canonical_model_id":"google/gemini-3.8-flash"},"ministral-14b-2512":{"id":"ministral-14b-2512","name":"ministral-14b-2512","description":"Ministral 3 14B is a frontier-level 14B multimodal model optimized for local deployment, delivering state-of-the-art text and vision reasoning with a 256K context window and strong agentic capabilities.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.24,"output":0.24,"cache_read":0.022}},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.12,"output":0.6,"cache_read":0.012,"cache_write":0.15},"canonical_model_id":"openai/gpt-6-luna"},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.7,"output":3.4,"cache_read":0.15},"canonical_model_id":"deepseek/deepseek-v4-pro"},"mistral-large-4-0":{"id":"mistral-large-4-0","name":"Mistral Large 4","description":"Mistral's 1T-parameter multimodal MoE for reasoning, coding, and agentic work","family":"mistral-large","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-10-06","last_updated":"2026-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":0.765,"output":2.351,"cache_read":0.079},"canonical_model_id":"mistral/mistral-large-4"},"claude-opus-5.5":{"id":"claude-opus-5.5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4.399,"output":21.998,"cache_read":0.219,"cache_write":5.5},"canonical_model_id":"anthropic/claude-opus-5-5"},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":0.446,"output":3.008},"canonical_model_id":"alibaba/qwen3.6-27b"},"claude-opus4-8":{"id":"claude-opus4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5.437,"output":27.186,"cache_read":0.544,"cache_write":6.797},"canonical_model_id":"anthropic/claude-opus-4-8"},"mistral-small-3.2-24b-instruct-2506":{"id":"mistral-small-3.2-24b-instruct-2506","name":"mistral-small-3.2-24b-instruct-2506","description":"Mistral-Small-3.2-24B-Instruct-2506 is a 24B parameter instruction-tuned model with enhanced long-context support (128k) and state-of-the-art vision understanding.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-05-26","last_updated":"2025-05-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131000,"output":131000},"cost":{"input":0.1,"output":0.312}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.2,"output":13.199,"cache_read":0.219,"cache_write":2.749},"canonical_model_id":"openai/gpt-5.6-terra"},"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-12-01","last_updated":"2025-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":65536},"cost":{"input":0.5,"output":1.499,"cache_read":0.15},"canonical_model_id":"deepseek/deepseek-v3.2"},"nova-2-lite":{"id":"nova-2-lite","name":"Nova 2 Lite","description":"Nova 2 Lite is an advanced multimodal reasoning model that combines efficiency and performance, delivering reliable AI for agentic workflows and enterprise applications.","family":"nova","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-10","release_date":"2025-12-02","last_updated":"2025-12-01","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65535},"cost":{"input":0.373,"output":3.144},"canonical_model_id":"amazon/nova-2-lite"},"nova-pro-v1":{"id":"nova-pro-v1","name":"Nova Pro 1.0","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"nova-pro","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12-03","last_updated":"2024-12-03","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":300000,"output":10000},"cost":{"input":0.918,"output":3.671}},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131000,"output":131000},"cost":{"input":0.089,"output":0.446,"cache_read":0.01},"canonical_model_id":"openai/gpt-oss-120b"},"ministral-3b-2512":{"id":"ministral-3b-2512","name":"ministral-3b-2512","description":"Ministral 3 3B is a compact, efficient multimodal model with strong language, vision capabilities, and ideal for custom fine-tuning.","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.123,"output":0.123,"cache_read":0.012}},"claude-opus4-5":{"id":"claude-opus4-5","name":"Claude Opus 4.5 (latest)","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":5.313,"output":26.568,"cache_read":0.531,"cache_write":6.645},"canonical_model_id":"anthropic/claude-opus-4-5"},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.873,"output":3.306,"cache_read":0.221},"canonical_model_id":"zhipuai/glm-5.3"},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.656,"output":3.3,"cache_read":0.18},"canonical_model_id":"moonshotai/kimi-k2.7-code"},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":1.375,"output":10.96,"cache_read":0.156},"canonical_model_id":"openai/gpt-5"},"minimax-m2.1":{"id":"minimax-m2.1","name":"MiniMax-M2.1","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-12-23","last_updated":"2025-12-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196000,"output":196000},"cost":{"input":0.359,"output":1.435},"canonical_model_id":"minimax/MiniMax-M2.1"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4.399,"output":21.998,"cache_read":0.44,"cache_write":5.5},"canonical_model_id":"openai/gpt-5.6-sol"},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"mistral-nemo-instruct-2407","description":"A 12B parameter, instruct-tuned language model by Mistral AI and NVIDIA, designed for advanced instruction following, multi-turn conversations, and generating text and code across multiple languages.","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2024-08-07","last_updated":"2024-08-07","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":128000},"cost":{"input":0.145,"output":0.145,"cache_read":0.014}},"minimax-m2":{"id":"minimax-m2","name":"MiniMax-M2","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-10-27","last_updated":"2025-10-27","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":400000,"output":196000},"cost":{"input":0.349,"output":1.405},"canonical_model_id":"minimax/MiniMax-M2"},"nova-micro-v1":{"id":"nova-micro-v1","name":"nova-micro-v1","description":"Nova Micro is a multilingual text-to-text foundation model with strong reasoning capabilities and broad language coverage across 200+ languages.","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":10000},"cost":{"input":0.04,"output":0.159}},"codestral-2508":{"id":"codestral-2508","name":"Codestral 25.08","description":"Mistral coding model for code completion, generation, and developer workflows","family":"codestral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-07-30","last_updated":"2025-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.368,"output":1.103,"cache_read":0.037},"canonical_model_id":"mistral/codestral-2508"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.4,"output":11.999,"cache_read":0.24,"cache_write":3},"canonical_model_id":"openai/gpt-6-sol"},"nvidia-nemotron-3-nano-30b-a3b":{"id":"nvidia-nemotron-3-nano-30b-a3b","name":"nvidia-nemotron-3-nano-30b-a3b","description":"Nemotron-Nano-3-30B-A3B is a compact Mixture-of-Experts model optimized for efficient reasoning, chat, and coding, with strong multilingual support and long-context RAG and agent workflows.","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-01-12","last_updated":"2026-01-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":0.06,"output":0.24}},"gemini-3.1-flash-lite":{"id":"gemini-3.1-flash-lite","name":"Gemini 3.1 Flash Lite","description":"Low-latency Gemini model for high-volume multimodal and agent workloads","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-07","last_updated":"2026-05-07","modalities":{"input":["text","image","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65535},"cost":{"input":0.272,"output":1.631,"cache_read":0.025,"cache_write":0.082},"canonical_model_id":"google/gemini-3.1-flash-lite"}}},"agnes":{"id":"agnes","env":["AGNES_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://apihub.agnes-ai.com/v1","name":"Agnes AI","doc":"https://agnes-ai.com/doc","models":{"agnes-2.5-pro-alpha":{"id":"agnes-2.5-pro-alpha","name":"Agnes 2.5 Pro Alpha","description":"Paid reasoning model for advanced coding, scientific reasoning, long-context analysis, agentic workflows, and multimodal understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0.45,"output":0.9,"cache_read":0.0038}},"agnes-2.0-flash":{"id":"agnes-2.0-flash","name":"Agnes 2.0 Flash","description":"Fast and efficient model for agent workflows, tool calling, coding, and image understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-05-25","last_updated":"2026-05-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0}},"agnes-2.5-flash":{"id":"agnes-2.5-flash","name":"Agnes 2.5 Flash","description":"Upgraded model with improved coding, agent workflows, tool calling, and multimodal understanding.","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07","last_updated":"2026-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":512000,"output":65536},"cost":{"input":0,"output":0}}}},"daoxe":{"id":"daoxe","env":["DAOXE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://daoxe.com/v1","name":"DaoXE","doc":"https://daoxe.com/pricing","models":{"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25},"canonical_model_id":"openai/gpt-5.4"},"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":30000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2},"canonical_model_id":"xai/grok-4.3"},"gemini-3.1-pro-preview":{"id":"gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","video","audio","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2},"canonical_model_id":"google/gemini-3.1-pro-preview"},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5},"canonical_model_id":"xai/grok-4.5"},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Earlier Kimi frontier model for long-context agents, coding, and multimodal work","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1},"canonical_model_id":"moonshotai/kimi-k2.5"},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5},"canonical_model_id":"openai/gpt-5.5"},"claude-haiku-4-5-20251001":{"id":"claude-haiku-4-5-20251001","name":"Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":5},"canonical_model_id":"anthropic/claude-haiku-4-5-20251001"},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"}}},"morph":{"id":"morph","env":["MORPH_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.morphllm.com/v1","name":"Morph","doc":"https://docs.morphllm.com/api-reference/introduction","models":{"morph-v3-large":{"id":"morph-v3-large","name":"Morph v3 Large","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.9,"output":1.9}},"morph-v3-fast":{"id":"morph-v3-fast","name":"Morph v3 Fast","description":"Efficient model for low-latency assistance, extraction, and routine automation","family":"morph","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-15","last_updated":"2024-08-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16000,"output":16000},"cost":{"input":0.8,"output":1.2}},"auto":{"id":"auto","name":"Auto","description":"Automatic model router for matching prompts to suitable backends and budgets","family":"auto","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-06-01","last_updated":"2024-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32000,"output":32000},"cost":{"input":0.85,"output":1.55}}}},"openai":{"id":"openai","env":["OPENAI_API_KEY"],"npm":"@ai-sdk/openai","name":"OpenAI","doc":"https://platform.openai.com/docs/models","models":{"chatgpt-image-latest":{"id":"chatgpt-image-latest","name":"chatgpt-image-latest","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-12-16","last_updated":"2025-12-16","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":5,"output":30,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","description":"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"gpt-3.5-turbo":{"id":"gpt-3.5-turbo","name":"GPT-3.5-turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":false,"reasoning":false,"tool_call":false,"structured_output":false,"temperature":true,"knowledge":"2021-09-01","release_date":"2023-03-01","last_updated":"2023-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16385,"output":4096},"status":"deprecated","cost":{"input":0.5,"output":1.5,"cache_read":0}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"text-embedding-3-small":{"id":"text-embedding-3-small","name":"text-embedding-3-small","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-01","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":1536},"cost":{"input":0.02,"output":0}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"flex":{"cost":{"input":0.1,"output":0.625,"cache_read":0.01},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"gpt-realtime-2.1":{"id":"gpt-realtime-2.1","name":"GPT-Realtime-2.1","description":"Realtime speech-to-speech model with configurable reasoning, tool use, and robust voice-agent behavior","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2024-09-30","release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text","audio","image"],"output":["text","audio"]},"open_weights":false,"limit":{"context":128000,"input":96000,"output":32000},"cost":{"input":4,"output":24,"cache_read":0.4,"input_audio":32,"output_audio":64},"canonical_model_id":"openai/gpt-realtime-2.1"},"gpt-4o-2024-05-13":{"id":"gpt-4o-2024-05-13","name":"GPT-4o (2024-05-13)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-05-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","experimental":{"modes":{"fast":{"cost":{"input":8.75,"output":26.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":15}},"gpt-4o":{"id":"gpt-4o","name":"GPT-4o","description":"Omni-era GPT for multimodal chat, practical coding, and general assistants","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"experimental":{"modes":{"fast":{"cost":{"input":4.25,"output":17,"cache_read":2.125},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","description":"Small GPT-5 for responsive agents, coding help, and everyday automation","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":0.45,"output":3.6,"cache_read":0.045},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.125,"output":1,"cache_read":0.0125},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"gpt-image-2":{"id":"gpt-image-2","name":"gpt-image-2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0},"cost":{"input":5,"output":30,"cache_read":1.25},"canonical_model_id":"openai/gpt-image-2"},"gpt-5.2-pro":{"id":"gpt-5.2-pro","name":"GPT-5.2 Pro","description":"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":false,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":21,"output":168}},"o4-mini":{"id":"o4-mini","name":"o4-mini","description":"Fast o-series model for compact reasoning, coding, and tool use","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","experimental":{"modes":{"fast":{"cost":{"input":2,"output":8,"cache_read":0.5},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.55,"output":2.2,"cache_read":0.138},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.1,"output":4.4,"cache_read":0.275}},"o3-mini":{"id":"o3-mini","name":"o3-mini","description":"Smaller o-series reasoner for economical coding, math, and planning tasks","family":"o-mini","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"text-embedding-ada-002":{"id":"text-embedding-ada-002","name":"text-embedding-ada-002","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2022-12","release_date":"2022-12-15","last_updated":"2022-12-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1536},"cost":{"input":0.1,"output":0}},"gpt-4":{"id":"gpt-4","name":"GPT-4","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-11","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":8192},"status":"deprecated","cost":{"input":30,"output":60}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":28,"cache_read":0.35},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-4.1-nano":{"id":"gpt-4.1-nano","name":"GPT-4.1 nano","description":"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks","family":"gpt-nano","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"status":"deprecated","experimental":{"modes":{"fast":{"cost":{"input":0.2,"output":0.8,"cache_read":0.05},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.1,"output":0.4,"cache_read":0.025}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","description":"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"flex":{"cost":{"input":0.025,"output":0.2,"cache_read":0.0025},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"gpt-5.6":{"id":"gpt-5.6","name":"GPT-5.6","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-5.2-chat-latest":{"id":"gpt-5.2-chat-latest","name":"GPT-5.2 Chat","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":1.75,"output":14,"cache_read":0.175}},"o1":{"id":"o1","name":"o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":15,"output":60,"cache_read":7.5}},"gpt-5-pro":{"id":"gpt-5-pro","name":"GPT-5 Pro","description":"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-10-06","last_updated":"2025-10-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":272000},"cost":{"input":15,"output":120}},"gpt-5.3-codex-spark":{"id":"gpt-5.3-codex-spark","name":"GPT-5.3 Codex Spark","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex-spark","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"input":100000,"output":32000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-6.1-sol":{"id":"gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}},"ultrafast":{"cost":{"input":12,"output":60,"cache_read":0.6,"cache_write":15},"provider":{"body":{"service_tier":"ultrafast"}}}}},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"text-embedding-3-large":{"id":"text-embedding-3-large","name":"text-embedding-3-large","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-01","release_date":"2024-01-25","last_updated":"2024-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8191,"output":3072},"cost":{"input":0.13,"output":0}},"gpt-4o-2024-08-06":{"id":"gpt-4o-2024-08-06","name":"GPT-4o (2024-08-06)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-08-06","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":20,"output":100,"cache_read":2,"cache_write":25},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}},"ultrafast":{"cost":{"input":60,"output":300,"cache_read":6,"cache_write":75},"provider":{"body":{"service_tier":"ultrafast"}}}}},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","description":"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":2.5,"output":20,"cache_read":0.25},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.625,"output":5,"cache_read":0.0625},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"gpt-4o-mini":{"id":"gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"experimental":{"modes":{"fast":{"cost":{"input":0.25,"output":1,"cache_read":0.125},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"o3-pro":{"id":"o3-pro","name":"o3-pro","description":"High-effort o3 tier for difficult technical reasoning and careful answers","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-06-10","last_updated":"2025-06-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":20,"output":80}},"gpt-image-1":{"id":"gpt-image-1","name":"gpt-image-1","description":"OpenAI image model for production generation, edits, and brand-safe visual workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0},"status":"deprecated","canonical_model_id":"openai/gpt-image-1"},"gpt-daybreak-blue-latest":{"id":"gpt-daybreak-blue-latest","name":"Daybreak Blue","description":"Alias for flagship general-purpose models with safeguards for defensive cybersecurity work","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":1.5,"output":9,"cache_read":0.15},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.375,"output":2.25,"cache_read":0.0375},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":0.4,"output":2.4,"cache_read":0.04,"cache_write":0.5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","description":"Reliable GPT generation for broad coding, writing, and tool-assisted product work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":28,"cache_read":0.35},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.875,"output":7,"cache_read":0.0875},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":12.5,"output":75,"cache_read":1.25},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"gpt-4.1":{"id":"gpt-4.1","name":"GPT-4.1","description":"Long-lived GPT workhorse for coding, instruction following, and production apps","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":14,"cache_read":0.875},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-4o-2024-11-20":{"id":"gpt-4o-2024-11-20","name":"GPT-4o (2024-11-20)","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-11-20","last_updated":"2024-11-20","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"gpt-4.1-mini":{"id":"gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"experimental":{"modes":{"fast":{"cost":{"input":0.7,"output":2.8,"cache_read":0.175},"provider":{"body":{"service_tier":"priority"}}}}},"cost":{"input":0.4,"output":1.6,"cache_read":0.1}},"gpt-6-luna":{"id":"gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":0.2,"output":1,"cache_read":0.02,"cache_write":0.25},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"gpt-5.3-chat-latest":{"id":"gpt-5.3-chat-latest","name":"GPT-5.3 Chat (latest)","description":"Chat-tuned GPT model for conversational assistance, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-03","last_updated":"2026-03-03","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":1.75,"output":14,"cache_read":0.175}},"gpt-image-1-mini":{"id":"gpt-image-1-mini","name":"gpt-image-1-mini","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-09-26","last_updated":"2025-09-26","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0}},"gpt-image-1.5":{"id":"gpt-image-1.5","name":"gpt-image-1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["text","image"]},"open_weights":false,"limit":{"context":0,"input":0,"output":0},"canonical_model_id":"openai/gpt-image-1.5"},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":24,"cache_read":0.4,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"gpt-4-turbo":{"id":"gpt-4-turbo","name":"GPT-4 Turbo","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"knowledge":"2023-12","release_date":"2023-11-06","last_updated":"2024-04-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"status":"deprecated","cost":{"input":10,"output":30}},"gpt-daybreak-red-latest":{"id":"gpt-daybreak-red-latest","name":"Daybreak Red","description":"Alias for advanced cybersecurity models for authorized vulnerability research and security testing","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-08-07","last_updated":"2026-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":12.5,"output":75,"cache_read":1.25,"cache_write":15.625},"canonical_model_id":"openai/gpt-5.6-cyber"},"o3":{"id":"o3","name":"o3","description":"Deliberate o-series reasoner for hard math, coding, and multi-step analysis","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"experimental":{"modes":{"fast":{"cost":{"input":3.5,"output":14,"cache_read":0.875},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":1,"output":4,"cache_read":0.25},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":2,"output":8,"cache_read":0.5}},"gpt-5":{"id":"gpt-5","name":"GPT-5","description":"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":2.5,"output":20,"cache_read":0.25},"provider":{"body":{"service_tier":"priority"}}},"flex":{"cost":{"input":0.625,"output":5,"cache_read":0.0625},"provider":{"body":{"service_tier":"flex"}}}}},"cost":{"input":1.25,"output":10,"cache_read":0.125},"canonical_model_id":"openai/gpt-5"},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":8,"output":40,"cache_read":0.8,"cache_write":10},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"gpt-6-sol":{"id":"gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"experimental":{"modes":{"fast":{"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5},"provider":{"body":{"service_tier":"priority"}}},"pro":{"provider":{"body":{"reasoning":{"mode":"pro"}}}}}},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"o1-pro":{"id":"o1-pro","name":"o1-pro","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2025-03-19","last_updated":"2025-03-19","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"status":"deprecated","cost":{"input":150,"output":600}}}},"alibaba-coding-plan-cn":{"id":"alibaba-coding-plan-cn","env":["ALIBABA_CODING_PLAN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://coding.dashscope.aliyuncs.com/v1","name":"Alibaba Coding Plan (China)","doc":"https://help.aliyun.com/zh/model-studio/coding-plan","models":{"qwen3-coder-next":{"id":"qwen3-coder-next","name":"Qwen3 Coder Next","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-03","last_updated":"2026-02-03","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-max-2026-01-23":{"id":"qwen3-max-2026-01-23","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-23","last_updated":"2026-01-23","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2025-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":196608,"output":24576},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"glm-4.7":{"id":"glm-4.7","name":"GLM-4.7","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":16384},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0}},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0,"output":0,"cache_read":0,"cache_write":0},"canonical_model_id":"alibaba/qwen3.7-plus"}}},"io-net":{"id":"io-net","env":["IOINTELLIGENCE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.intelligence.io.solutions/api/v1","name":"IO.NET","doc":"https://io.net/docs/guides/intelligence/io-intelligence","models":{"meta-llama/Llama-3.2-90B-Vision-Instruct":{"id":"meta-llama/Llama-3.2-90B-Vision-Instruct","name":"Llama 3.2 90B Vision Instruct","description":"Open Llama multimodal model for image understanding and text reasoning","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-09-25","last_updated":"2024-09-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":16000,"output":4096},"cost":{"input":0.35,"output":0.4,"cache_read":0.175,"cache_write":0.7}},"meta-llama/Llama-3.3-70B-Instruct":{"id":"meta-llama/Llama-3.3-70B-Instruct","name":"Llama 3.3 70B Instruct","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.13,"output":0.38,"cache_read":0.065,"cache_write":0.26}},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{"id":"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8","name":"Llama 4 Maverick 17B 128E Instruct","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":430000,"output":4096},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.3}},"Qwen/Qwen3-Next-80B-A3B-Instruct":{"id":"Qwen/Qwen3-Next-80B-A3B-Instruct","name":"Qwen 3 Next 80B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-10","last_updated":"2025-01-10","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.1,"output":0.8,"cache_read":0.05,"cache_write":0.2}},"Qwen/Qwen3-235B-A22B-Thinking-2507":{"id":"Qwen/Qwen3-235B-A22B-Thinking-2507","name":"Qwen 3 235B Thinking","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-07-01","last_updated":"2025-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":4096},"cost":{"input":0.11,"output":0.6,"cache_read":0.055,"cache_write":0.22}},"Qwen/Qwen2.5-VL-32B-Instruct":{"id":"Qwen/Qwen2.5-VL-32B-Instruct","name":"Qwen 2.5 VL 32B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":32000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1}},"deepseek-ai/DeepSeek-R1-0528":{"id":"deepseek-ai/DeepSeek-R1-0528","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2025-01-20","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":8.75,"cache_read":1,"cache_write":4}},"mistralai/Mistral-Nemo-Instruct-2407":{"id":"mistralai/Mistral-Nemo-Instruct-2407","name":"Mistral Nemo Instruct 2407","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral-nemo","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-05","release_date":"2024-07-01","last_updated":"2024-07-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.02,"output":0.04,"cache_read":0.01,"cache_write":0.04}},"mistralai/Magistral-Small-2506":{"id":"mistralai/Magistral-Small-2506","name":"Magistral Small 2506","description":"Mistral reasoning model for transparent analysis, math, and complex decisions","family":"magistral-small","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-01","last_updated":"2025-06-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.5,"output":1.5,"cache_read":0.25,"cache_write":1}},"mistralai/Devstral-Small-2505":{"id":"mistralai/Devstral-Small-2505","name":"Devstral Small 2505","description":"Mistral coding agent model for repository tasks and software engineering workflows","family":"devstral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-05-01","last_updated":"2025-05-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.22,"cache_read":0.025,"cache_write":0.1}},"mistralai/Mistral-Large-Instruct-2411":{"id":"mistralai/Mistral-Large-Instruct-2411","name":"Mistral Large Instruct 2411","description":"Flagship Mistral model for advanced reasoning, coding, and multilingual work","family":"mistral-large","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":4096},"cost":{"input":2,"output":6,"cache_read":1,"cache_write":4}},"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{"id":"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar","name":"Qwen 3 Coder 480B","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-12","release_date":"2025-01-15","last_updated":"2025-01-15","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":106000,"output":4096},"cost":{"input":0.22,"output":0.95,"cache_read":0.11,"cache_write":0.44}},"moonshotai/Kimi-K2-Thinking":{"id":"moonshotai/Kimi-K2-Thinking","name":"Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-11-01","last_updated":"2024-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.55,"output":2.25,"cache_read":0.275,"cache_write":1.1}},"moonshotai/Kimi-K2-Instruct-0905":{"id":"moonshotai/Kimi-K2-Instruct-0905","name":"Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-08","release_date":"2024-09-05","last_updated":"2024-09-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.39,"output":1.9,"cache_read":0.195,"cache_write":0.78}},"zai-org/GLM-4.6":{"id":"zai-org/GLM-4.6","name":"GLM 4.6","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-11-15","last_updated":"2024-11-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"cost":{"input":0.4,"output":1.75,"cache_read":0.2,"cache_write":0.8}},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT-OSS 20B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":4096},"cost":{"input":0.03,"output":0.14,"cache_read":0.015,"cache_write":0.06}},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT-OSS 120B","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-10","release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":4096},"cost":{"input":0.04,"output":0.4,"cache_read":0.02,"cache_write":0.08}}}},"infomaniak":{"id":"infomaniak","env":["INFOMANIAK_API_KEY","INFOMANIAK_PRODUCT_ID"],"npm":"@ai-sdk/openai-compatible","api":"https://api.infomaniak.com/2/ai/${INFOMANIAK_PRODUCT_ID}/openai/v1","name":"Infomaniak","doc":"https://www.infomaniak.com/en/hosting/ai-services/open-source-models","models":{"mini_lm_l12_v2":{"id":"mini_lm_l12_v2","name":"All-MiniLM-L12-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128,"input":128,"output":384},"cost":{"input":0,"output":0}},"bge_multilingual_gemma2":{"id":"bge_multilingual_gemma2","name":"BGE Multilingual Gemma2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-07-25","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"input":8000,"output":3584},"cost":{"input":0.08,"output":0}},"swiss-ai/Apertus-v1.5-70B":{"id":"swiss-ai/Apertus-v1.5-70B","name":"Apertus v1.5 70B","description":"Open, ethically-sourced Swiss AI model for multilingual, multimodal chat and instruction following","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-07-24","last_updated":"2026-08-01","modalities":{"input":["text","image","audio"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":8192},"status":"beta","cost":{"input":0.87,"output":3.1}},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":32768},"cost":{"input":0.25,"output":0.5},"canonical_model_id":"google/gemma-4-31b-it"},"Qwen/Qwen3.5-122B-A10B-FP8":{"id":"Qwen/Qwen3.5-122B-A10B-FP8","name":"Qwen3.5 122B-A10B FP8","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65536},"cost":{"input":0.5,"output":3.97},"canonical_model_id":"alibaba/qwen3.5-122b-a10b"},"Qwen/Qwen3.5-397B-A17B-FP8":{"id":"Qwen/Qwen3.5-397B-A17B-FP8","name":"Qwen3.5 397B-A17B FP8","description":"Large open Qwen multimodal MoE for visual agents and long technical tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"input":200000,"output":65536},"status":"beta","cost":{"input":0.99,"output":4.46},"canonical_model_id":"alibaba/qwen3.5-397b-a17b"},"mistralai/Mistral-Small-4-119B-2603":{"id":"mistralai/Mistral-Small-4-119B-2603","name":"Mistral Small 4","description":"Fast Mistral production model for chat, extraction, and cost-sensitive agents","family":"mistral-small","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":true,"temperature":true,"knowledge":"2025-06","release_date":"2026-03-16","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"cost":{"input":0.25,"output":0.93},"canonical_model_id":"mistral/mistral-small-2603"},"mistralai/Ministral-3-14B-Instruct-2512":{"id":"mistralai/Ministral-3-14B-Instruct-2512","name":"Ministral 3 14B Instruct","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-02","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":100000,"input":100000,"output":25600},"status":"beta","cost":{"input":0.37,"output":0.5}},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-08-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"input":256000,"output":256000},"status":"beta","cost":{"input":0.74,"output":3.72},"canonical_model_id":"moonshotai/kimi-k2.6"},"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8":{"id":"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8","name":"Nemotron 3 Nano 30B A3B FP8","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-08-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"input":1000000,"output":262144},"status":"beta","cost":{"input":0.06,"output":0.25},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"}}},"llmtech":{"id":"llmtech","env":["LLMTECH_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.llmtech.eu/v1","name":"LLM Tech","doc":"https://llmtech.eu/models/qwen3.8-27b","models":{"nvidia/Qwen3.8-27B-NVFP4":{"id":"nvidia/Qwen3.8-27B-NVFP4","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.25,"output":2.09,"cache_read":0.04},"canonical_model_id":"alibaba/qwen3.8-27b"}}},"crossmodel":{"id":"crossmodel","env":["CROSSMODEL_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.crossmodel.ai/v1","name":"CrossModel","doc":"https://www.crossmodel.ai/docs","models":{"anthropic/claude-haiku-4-5":{"id":"anthropic/claude-haiku-4-5","name":"Claude Haiku 4.5 (latest)","description":"Fast Claude lane for lightweight agents, office tasks, and responsive chat","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25},"canonical_model_id":"anthropic/claude-haiku-4-5"},"anthropic/claude-opus-5-5":{"id":"anthropic/claude-opus-5-5","name":"Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5},"canonical_model_id":"anthropic/claude-opus-5-5"},"anthropic/claude-fable-5-1":{"id":"anthropic/claude-fable-5-1","name":"Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"anthropic/claude-opus-5":{"id":"anthropic/claude-opus-5","name":"Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"anthropic/claude-fable-5":{"id":"anthropic/claude-fable-5","name":"Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-09","last_updated":"2026-06-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5"},"anthropic/claude-opus-4-8":{"id":"anthropic/claude-opus-4-8","name":"Claude Opus 4.8","description":"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01","release_date":"2026-05-28","last_updated":"2026-05-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-8"},"anthropic/claude-sonnet-5":{"id":"anthropic/claude-sonnet-5","name":"Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"anthropic/claude-haiku-5-5":{"id":"anthropic/claude-haiku-5-5","name":"Claude Haiku 5.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.5,"output":2.5,"cache_read":0.05,"cache_write":0.625,"tier":{"type":"context","size":100000}}]},"canonical_model_id":"anthropic/claude-haiku-5-5"},"anthropic/claude-sonnet-4-6":{"id":"anthropic/claude-sonnet-4-6","name":"Claude Sonnet 4.6","description":"Claude workhorse for coding agents, careful analysis, and production cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","max"]},{"type":"budget_tokens","min":1024}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75},"canonical_model_id":"anthropic/claude-sonnet-4-6"},"anthropic/claude-sonnet-5-5":{"id":"anthropic/claude-sonnet-5-5","name":"Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"anthropic/claude-opus-4-7":{"id":"anthropic/claude-opus-4-7","name":"Claude Opus 4.7","description":"Stronger Opus tier for advanced software work and high-stakes reasoning","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-4-7"},"deepseek/deepseek-v4.1-flash":{"id":"deepseek/deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek/deepseek-v4-flash-vision-exp":{"id":"deepseek/deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":1.35,"output":4.05,"cache_read":0.045,"cache_write":1.35},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash":{"id":"deepseek/deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.3,"output":1.2,"cache_read":0.006,"cache_write":0.3},"canonical_model_id":"deepseek/deepseek-v4-flash"},"tencent/hy3":{"id":"tencent/hy3","name":"Hy3","description":"Tencent Hy reasoning model for coding, instruction following, and agent tasks","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-06","last_updated":"2026-07-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"input":192000,"output":131072},"cost":{"input":0.16,"output":0.64,"cache_read":0.04,"cache_write":0.16},"canonical_model_id":"tencent/hy3"},"tencent/hy4-preview":{"id":"tencent/hy4-preview","name":"Hy4 preview","description":"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.","family":"Hy","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-28","last_updated":"2026-08-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0.96,"output":2.88,"cache_read":0.048,"cache_write":0.96},"canonical_model_id":"tencent/hy4-preview"},"z-ai/glm-5.3-flash":{"id":"z-ai/glm-5.3-flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.15,"output":0.5,"cache_read":0.03,"cache_write":0.15},"canonical_model_id":"zhipuai/glm-5.3-flash"},"z-ai/glm-5":{"id":"z-ai/glm-5","name":"GLM-5","description":"General GLM flagship for coding, analysis, and tool-heavy engineering workflows","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.6,"output":3,"cache_read":0.16,"cache_write":0.6,"tiers":[{"input":0.8,"output":3.4,"cache_read":0.2,"cache_write":0.8,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5"},"z-ai/glm-4.7":{"id":"z-ai/glm-4.7","name":"GLM-4.7","description":"Mature GLM model for dependable coding, reasoning, and structured agent tasks","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-12-22","last_updated":"2025-12-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":0.47,"output":2.16,"cache_read":0.1,"cache_write":0.47,"tiers":[{"input":0.62,"output":2.47,"cache_read":0.13,"cache_write":0.62,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-4.7"},"z-ai/glm-5.2":{"id":"z-ai/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2},"canonical_model_id":"zhipuai/glm-5.2"},"z-ai/glm-5.1":{"id":"z-ai/glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":200000,"output":128000},"cost":{"input":1,"output":3.8,"cache_read":0.2,"cache_write":1,"tiers":[{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5.1"},"z-ai/glm-5-turbo":{"id":"z-ai/glm-5-turbo","name":"GLM-5-Turbo","description":"Faster GLM-5 lane for coding agents that need lower latency","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-16","last_updated":"2026-03-16","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":128000},"cost":{"input":0.9,"output":3.7,"cache_read":0.18,"cache_write":0.9,"tiers":[{"input":1.1,"output":4.3,"cache_read":0.27,"cache_write":1.1,"tier":{"type":"context","size":32000}}]},"canonical_model_id":"zhipuai/glm-5-turbo"},"z-ai/glm-5.3":{"id":"z-ai/glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.2,"output":4.4,"cache_read":0.3,"cache_write":1.2},"canonical_model_id":"zhipuai/glm-5.3"},"x-ai/grok-4.7":{"id":"x-ai/grok-4.7","name":"Grok 4.7","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-05","release_date":"2026-09-21","last_updated":"2026-09-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}},"canonical_model_id":"xai/grok-4.7"},"x-ai/grok-4.3":{"id":"x-ai/grok-4.3","name":"Grok 4.3","description":"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":1000000},"cost":{"input":1.25,"output":2.5,"cache_read":0.2,"cache_write":1.25,"tiers":[{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":5,"cache_read":0.4,"cache_write":2.5}},"canonical_model_id":"xai/grok-4.3"},"x-ai/grok-4.5":{"id":"x-ai/grok-4.5","name":"Grok 4.5","description":"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-08","last_updated":"2026-07-08","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.3,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":0.6,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":0.6,"cache_write":4}},"canonical_model_id":"xai/grok-4.5"},"x-ai/grok-build-0.1":{"id":"x-ai/grok-build-0.1","name":"Grok Build 0.1","description":"Fast Grok coding model tuned for agentic engineering and iterative edits","family":"grok-build","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":256000},"cost":{"input":1,"output":2,"cache_read":0.2,"cache_write":1,"tiers":[{"input":2,"output":4,"cache_read":0.4,"cache_write":2,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2,"output":4,"cache_read":0.4,"cache_write":2}},"canonical_model_id":"xai/grok-build-0.1"},"x-ai/grok-4.6":{"id":"x-ai/grok-4.6","name":"Grok 4.6","description":"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects","family":"grok","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-02-01","release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":500000,"output":500000},"cost":{"input":2,"output":6,"cache_read":0.5,"cache_write":2,"tiers":[{"input":4,"output":12,"cache_read":1,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":12,"cache_read":1,"cache_write":4}},"canonical_model_id":"xai/grok-4.6"},"xiaomi/mimo-v2.6-pro":{"id":"xiaomi/mimo-v2.6-pro","name":"MiMo-V2.6-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.47,"output":0.94,"cache_read":0.005,"cache_write":0.47},"canonical_model_id":"xiaomi/mimo-v2.6-pro"},"xiaomi/mimo-v2.5":{"id":"xiaomi/mimo-v2.5","name":"MiMo-V2.5","description":"Open MiMo model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.16,"output":0.32,"cache_read":0.004,"cache_write":0.16},"canonical_model_id":"xiaomi/mimo-v2.5"},"xiaomi/mimo-v2.5-pro":{"id":"xiaomi/mimo-v2.5-pro","name":"MiMo-V2.5-Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":0.47,"output":0.94,"cache_read":0.005,"cache_write":0.47},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"xiaomi/mimo-v2.6-flash":{"id":"xiaomi/mimo-v2.6-flash","name":"MiMo-V2.6-Flash","description":"MiMo Flash model for multimodal coding agents and long-context automation","family":"mimo","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.16,"output":0.32,"cache_read":0.004,"cache_write":0.16},"canonical_model_id":"xiaomi/mimo-v2.6-flash"},"minimax/minimax-m2.7":{"id":"minimax/minimax-m2.7","name":"MiniMax-M2.7","description":"Open MiniMax flagship for coding agents, office automation, and complex environments","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.42},"canonical_model_id":"minimax/MiniMax-M2.7"},"minimax/minimax-m3":{"id":"minimax/minimax-m3","name":"MiniMax-M3","description":"MiniMax multimodal model for long-context coding, perception, and agent planning","family":"minimax","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-06-01","last_updated":"2026-06-01","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1024000,"output":512000},"cost":{"input":0.33,"output":1.32,"cache_read":0.066,"cache_write":0.33,"tiers":[{"input":0.66,"output":2.63,"cache_read":0.132,"cache_write":0.66,"tier":{"type":"context","size":512000}}],"context_over_200k":{"input":0.66,"output":2.63,"cache_read":0.132,"cache_write":0.66}},"canonical_model_id":"minimax/MiniMax-M3"},"gemini/gemini-3.6-flash":{"id":"gemini/gemini-3.6-flash","name":"Gemini 3.6 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"google/gemini-3.6-flash"},"gemini/gemini-3.5-flash-lite":{"id":"gemini/gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-07-21","last_updated":"2026-07-21","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"canonical_model_id":"google/gemini-3.5-flash-lite"},"gemini/gemini-3.1-pro-preview":{"id":"gemini/gemini-3.1-pro-preview","name":"Gemini 3.1 Pro Preview","description":"Reasoning-first Gemini preview for agentic coding and complex problem solving","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-02-19","last_updated":"2026-02-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":4,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":4}},"canonical_model_id":"google/gemini-3.1-pro-preview"},"gemini/gemini-3.5-flash":{"id":"gemini/gemini-3.5-flash","name":"Gemini 3.5 Flash","description":"Fast Gemini model balancing multimodal reasoning, tool use, and cost","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-05-19","last_updated":"2026-05-19","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.5,"output":9,"cache_read":0.15,"cache_write":1.5},"canonical_model_id":"google/gemini-3.5-flash"},"gemini/gemini-2.5-pro":{"id":"gemini/gemini-2.5-pro","name":"Gemini 2.5 Pro","description":"Google's proven reasoning model for coding, math, and multimodal analysis","family":"gemini-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":1.25,"output":10,"cache_read":0.125,"cache_write":1.25,"tiers":[{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5}},"canonical_model_id":"google/gemini-2.5-pro"},"gemini/gemini-2.5-flash":{"id":"gemini/gemini-2.5-flash","name":"Gemini 2.5 Flash","description":"Fast Gemini workhorse for multimodal apps where latency and price matter","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.3,"output":2.5,"cache_read":0.03,"cache_write":0.3},"canonical_model_id":"google/gemini-2.5-flash"},"gemini/gemini-3.7-flash":{"id":"gemini/gemini-3.7-flash","name":"Gemini 3.7 Flash","description":"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2026-03","release_date":"2026-08-13","last_updated":"2026-08-13","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"google/gemini-3.7-flash"},"gemini/gemini-3-flash-preview":{"id":"gemini/gemini-3-flash-preview","name":"Gemini 3 Flash Preview","description":"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-12-17","last_updated":"2025-12-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.5},"canonical_model_id":"google/gemini-3-flash-preview"},"gemini/gemini-3.8-flash":{"id":"gemini/gemini-3.8-flash","name":"Gemini 3.8 Flash","description":"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows","family":"gemini-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-09-02","last_updated":"2026-09-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"google/gemini-3.8-flash"},"gemini/gemini-2.5-flash-lite":{"id":"gemini/gemini-2.5-flash-lite","name":"Gemini 2.5 Flash-Lite","description":"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents","family":"gemini-flash-lite","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2025-06-17","last_updated":"2025-06-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":65536},"cost":{"input":0.1,"output":0.4,"cache_read":0.01,"cache_write":0.1},"canonical_model_id":"google/gemini-2.5-flash-lite"},"qwen/qwen3.7-max":{"id":"qwen/qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":1.88,"output":5.63,"cache_read":0.375,"cache_write":2.35},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen/qwen3.8-max":{"id":"qwen/qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.88,"output":5.63,"cache_read":0.23,"cache_write":2.35},"canonical_model_id":"alibaba/qwen3.8-max"},"qwen/qwen3.7-flash":{"id":"qwen/qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":65536},"cost":{"input":0.04,"output":0.13,"cache_read":0.01,"cache_write":0.04,"tiers":[{"input":0.1,"output":0.37,"cache_read":0.02,"cache_write":0.12,"tier":{"type":"context","size":32000}},{"input":0.19,"output":0.74,"cache_read":0.04,"cache_write":0.24,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"qwen/qwen3.8-omni-flash":{"id":"qwen/qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens"}],"tool_call":true,"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.13,"output":0.43,"cache_read":0.016,"cache_write":0.13},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qwen/qwen3.6-flash":{"id":"qwen/qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.19,"output":1.13,"cache_read":0.019,"cache_write":0.24,"tiers":[{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.94,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.94}},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen/qwen3.8-flash":{"id":"qwen/qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.13,"output":0.43,"cache_read":0.016,"cache_write":0.2},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen/qwen3.6-plus":{"id":"qwen/qwen3.6-plus","name":"Qwen3.6 Plus","description":"Earlier Qwen multimodal workhorse for million-token agent and document tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.32,"output":1.88,"cache_read":0.032,"cache_write":0.4,"tiers":[{"input":1.25,"output":7.5,"cache_read":0.124,"cache_write":1.57,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":1.25,"output":7.5,"cache_read":0.124,"cache_write":1.57}},"canonical_model_id":"alibaba/qwen3.6-plus"},"qwen/qwen3.7-plus":{"id":"qwen/qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.32,"output":1.25,"cache_read":0.032,"cache_write":0.4,"tiers":[{"input":0.96,"output":3.75,"cache_read":0.096,"cache_write":1.2,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":0.96,"output":3.75,"cache_read":0.096,"cache_write":1.2}},"canonical_model_id":"alibaba/qwen3.7-plus"},"openai/gpt-5.4":{"id":"openai/gpt-5.4","name":"GPT-5.4","description":"Agent-ready GPT for coding and computer-use workflows at a lower cost","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"cache_write":2.5,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5,"cache_write":5}},"canonical_model_id":"openai/gpt-5.4"},"openai/gpt-5.5-pro":{"id":"openai/gpt-5.5-pro","name":"GPT-5.5 Pro","description":"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}},"canonical_model_id":"openai/gpt-5.5-pro"},"openai/gpt-5.4-nano":{"id":"openai/gpt-5.4-nano","name":"GPT-5.4 nano","description":"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02,"cache_write":0.2},"canonical_model_id":"openai/gpt-5.4-nano"},"openai/gpt-6.1-sol":{"id":"openai/gpt-6.1-sol","name":"GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.2,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2,"cache_write":5}},"canonical_model_id":"openai/gpt-6.1-sol"},"openai/gpt-6-astra":{"id":"openai/gpt-6-astra","name":"GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5,"tiers":[{"input":20,"output":75,"cache_read":2,"cache_write":25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2,"cache_write":25}},"canonical_model_id":"openai/gpt-6-astra"},"openai/gpt-4o-mini":{"id":"openai/gpt-4o-mini","name":"GPT-4o mini","description":"Small omni GPT for cheap multimodal assistance and production-scale traffic","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075,"cache_write":0.15},"canonical_model_id":"openai/gpt-4o-mini"},"openai/gpt-5.4-mini":{"id":"openai/gpt-5.4-mini","name":"GPT-5.4 mini","description":"Strong small GPT for coding subagents, quick tool use, and high-volume work","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"input":272000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"canonical_model_id":"openai/gpt-5.4-mini"},"openai/gpt-5.6-luna":{"id":"openai/gpt-5.6-luna","name":"GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"cache_write":0.25,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04,"cache_write":0.5}},"canonical_model_id":"openai/gpt-5.6-luna"},"openai/gpt-5.5":{"id":"openai/gpt-5.5","name":"GPT-5.5","description":"Default frontier GPT for coding, computer use, research, and knowledge work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"cache_write":5,"tiers":[{"input":10,"output":45,"cache_read":1,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1,"cache_write":10}},"canonical_model_id":"openai/gpt-5.5"},"openai/gpt-6-luna":{"id":"openai/gpt-6-luna","name":"GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02,"cache_write":0.25}},"canonical_model_id":"openai/gpt-6-luna"},"openai/gpt-5.6-terra":{"id":"openai/gpt-5.6-terra","name":"GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":18,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-5.6-terra"},"openai/gpt-5.6-sol":{"id":"openai/gpt-5.6-sol","name":"GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.8,"cache_write":10,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8,"cache_write":10}},"canonical_model_id":"openai/gpt-5.6-sol"},"openai/gpt-6-sol":{"id":"openai/gpt-6-sol","name":"GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5,"tiers":[{"input":4,"output":15,"cache_read":0.4,"cache_write":5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4,"cache_write":5}},"canonical_model_id":"openai/gpt-6-sol"},"moonshot/kimi-k3":{"id":"moonshot/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3},"canonical_model_id":"moonshotai/kimi-k3"},"moonshot/kimi-k2.6":{"id":"moonshot/kimi-k2.6","name":"Kimi K2.6","description":"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1},"canonical_model_id":"moonshotai/kimi-k2.6"},"moonshot/kimi-k2.7-code":{"id":"moonshot/kimi-k2.7-code","name":"Kimi K2.7 Code","description":"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-06-12","last_updated":"2026-06-12","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262000,"output":262000},"cost":{"input":1,"output":4.16,"cache_read":0.18,"cache_write":1},"canonical_model_id":"moonshotai/kimi-k2.7-code"}}},"arcee":{"id":"arcee","env":["ARCEE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.arcee.ai/api/v1","name":"Arcee","doc":"https://docs.arcee.ai","models":{"trinity-large-thinking":{"id":"trinity-large-thinking","name":"Trinity Large Thinking","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0.25,"output":0.8,"cache_read":0.06},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"deepseek/deepseek-v4-pro-0813":{"id":"deepseek/deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"status":"beta","cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"deepseek/deepseek-v4-pro":{"id":"deepseek/deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512000,"output":384000},"status":"beta","cost":{"input":1.74,"output":3.48,"cache_read":0.2},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek/deepseek-v4-flash-latest":{"id":"deepseek/deepseek-v4-flash-latest","name":"DeepSeek V4 Flash Latest","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"status":"beta","cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"thinkingmachines/inkling-small":{"id":"thinkingmachines/inkling-small","name":"Inkling Small","description":"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio","family":"ling","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-07-30","last_updated":"2026-07-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0.5,"output":1.2,"cache_read":0.1},"canonical_model_id":"thinkingmachines/inkling-small"},"moonshotai/kimi-k3":{"id":"moonshotai/kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"status":"beta","cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"zai-org/glm-5.2":{"id":"zai-org/glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"status":"beta","cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.2"}}},"drun":{"id":"drun","env":["DRUN_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://chat.d.run/v1","name":"D.Run (China)","doc":"https://www.d.run","models":{"public/deepseek-v3":{"id":"public/deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2024-12-26","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.28,"output":1.1}},"public/minimax-m25":{"id":"public/minimax-m25","name":"MiniMax M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_details"},"temperature":true,"release_date":"2025-03-01","last_updated":"2025-03-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":204800,"output":131072},"cost":{"input":0.29,"output":1.16}},"public/deepseek-r1":{"id":"public/deepseek-r1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-01-20","last_updated":"2025-01-20","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32000},"cost":{"input":0.55,"output":2.2}}}},"amd":{"id":"amd","env":["AMD_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://developer.amd.com.cn/radeon/api/v1","name":"AMD","doc":"https://developer.amd.com.cn/radeon/tokenfactory","models":{"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.8-27b"},"DeepSeek-V4.1-Flash":{"id":"DeepSeek-V4.1-Flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"DeepSeek-V4-Flash":{"id":"DeepSeek-V4-Flash","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"Qwen3.8-Flash-Next":{"id":"Qwen3.8-Flash-Next","name":"Qwen3.8 Flash Next","description":"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-27","last_updated":"2026-08-27","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":0.15,"output":0.47,"cache_read":0.016},"canonical_model_id":"alibaba/qwen3.8-flash-next"},"MiniCPM5-2B":{"id":"MiniCPM5-2B","name":"MiniCPM5-2B","description":"Dense 2B-class open-source model for on-device and resource-constrained use, with native long-context support, tool calling, and agentic tasks","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-09-06","last_updated":"2026-09-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.124,"output":0.7425,"cache_read":0.124},"canonical_model_id":"openbmb/minicpm5-2b"},"DeepSeek-V4-Flash-Vision-Exp":{"id":"DeepSeek-V4-Flash-Vision-Exp","name":"DeepSeek V4 Flash Vision Exp","description":"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","minimal","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-21","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash-vision-exp"}}},"qvac":{"id":"qvac","env":["QVAC_API_KEY"],"npm":"@qvac/ai-sdk-provider","name":"QVAC","doc":"https://www.npmjs.com/package/@qvac/ai-sdk-provider","models":{"qwen3.5-0.8b":{"id":"qwen3.5-0.8b","name":"Qwen3.5 0.8B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gemma4-31b":{"id":"gemma4-31b","name":"Gemma 4 31B IT","description":"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning","family":"gemma","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"google/gemma-4-31b-it"},"qwen3.6-35b-a3b":{"id":"qwen3.6-35b-a3b","name":"Qwen3.6 35B-A3B","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"},"qwen3.5-2b":{"id":"qwen3.5-2b","name":"Qwen3.5 2B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"gpt-oss-20b":{"id":"gpt-oss-20b","name":"GPT OSS 20B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-oss-20b"},"qwen3.5-9b":{"id":"qwen3.5-9b","name":"Qwen3.5 9B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-23","last_updated":"2026-02-23","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.5-9b"},"qwen3.5-4b":{"id":"qwen3.5-4b","name":"Qwen3.5 4B","description":"Qwen instruction model for multilingual chat and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-11-01","last_updated":"2025-11-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":8192},"cost":{"input":0,"output":0}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text","image","video","audio"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0,"output":0},"canonical_model_id":"alibaba/qwen3.6-27b"},"gpt-oss-120b":{"id":"gpt-oss-120b","name":"GPT OSS 120B","description":"Open GPT reasoning model for self-hosted agents and controllable deployments","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0,"output":0},"canonical_model_id":"openai/gpt-oss-120b"}}},"claudinio":{"id":"claudinio","env":["CLAUDINIO_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.claudin.io/v1","name":"Claudinio","doc":"https://claudin.io","models":{"claudinio":{"id":"claudinio","name":"Claudinio","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2026-05","release_date":"2026-05-12","last_updated":"2026-06-02","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":0.5,"output":2,"cache_read":0.15}},"claudius":{"id":"claudius","name":"Claudius","description":"Multimodal reasoning model for visual analysis, planning, and tool use","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"knowledge":"2026-05","release_date":"2026-05-12","last_updated":"2026-05-12","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":256000,"output":64000},"cost":{"input":3,"output":8,"cache_read":0.9}}}},"runinfra":{"id":"runinfra","env":["RUNINFRA_GATEWAY_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.runinfra.ai/v1","name":"RunInfra","doc":"https://runinfra.ai/docs","models":{"Inferact/Qwen3.8-2.4T-A95B-NVFP4":{"id":"Inferact/Qwen3.8-2.4T-A95B-NVFP4","name":"Qwen3.8 2.4T A95B (NVFP4)","description":"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-2.4t-a95b"},"Qwen/Qwen3.8-27B":{"id":"Qwen/Qwen3.8-27B","name":"Qwen3.8 27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"alibaba/qwen3.8-27b"},"deepseek-ai/DeepSeek-V4-Flash-0731":{"id":"deepseek-ai/DeepSeek-V4-Flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.13,"output":0.27,"cache_read":0.01},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"deepseek-ai/DeepSeek-V4-Pro-0813":{"id":"deepseek-ai/DeepSeek-V4-Pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.6,"output":1.9,"cache_read":0.03},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"zai-org/GLM-5.3-Flash":{"id":"zai-org/GLM-5.3-Flash","name":"GLM-5.3-Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"zhipuai/glm-5.3-flash"},"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{"id":"nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16","name":"Nemotron 3.5 Lightning 30B A3B","description":"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-11","last_updated":"2026-08-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.05,"output":0.15,"cache_read":0.01},"canonical_model_id":"nvidia/nemotron-3.5-lightning"},"ornith-ai/Ornith-1.5-35B-A3B":{"id":"ornith-ai/Ornith-1.5-35B-A3B","name":"Ornith 1.5 35B A3B","description":"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding","family":"ornith","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-18","last_updated":"2026-08-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.1,"output":0.4,"cache_read":0.01},"canonical_model_id":"deepreinforce/ornith-1.5-35b-a3b"}}},"hetzner":{"id":"hetzner","env":["HETZNER_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.hetzner.com/api/v1","name":"Hetzner","doc":"https://experiments.hetzner.com/docs/inference","models":{"Qwen3.8-27B":{"id":"Qwen3.8-27B","name":"Qwen3.8-27B","description":"Dense 27B vision-language model for coding, agent tasks, and image and video understanding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"alibaba/qwen3.8-27b"},"Qwen/Qwen3.6-35B-A3B-FP8":{"id":"Qwen/Qwen3.6-35B-A3B-FP8","name":"Qwen3.6 35B A3B FP8","description":"Open multimodal Qwen MoE for local agents that need vision, audio, and code","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-17","last_updated":"2026-04-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"status":"beta","cost":{"input":0,"output":0,"cache_read":0},"canonical_model_id":"alibaba/qwen3.6-35b-a3b"}}},"digitalocean":{"id":"digitalocean","env":["DIGITALOCEAN_ACCESS_TOKEN"],"npm":"@ai-sdk/openai-compatible","api":"https://inference.do-ai.run/v1","name":"DigitalOcean","doc":"https://docs.digitalocean.com/products/gradient-ai-platform/details/models/","models":{"deepseek-3.2":{"id":"deepseek-3.2","name":"Deepseek 3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2025-12-02","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":0.5,"output":1.6,"cache_read":0.15}},"openai-gpt-5.5":{"id":"openai-gpt-5.5","name":"OpenAI GPT-5.5","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-12-01","release_date":"2026-04-23","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":30,"cache_read":0.5,"tiers":[{"input":10,"output":45,"cache_read":1,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":10,"output":45,"cache_read":1}}},"openai-gpt-5.2-pro":{"id":"openai-gpt-5.2-pro","name":"OpenAI GPT-5.2 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":21,"output":168}},"all-mini-lm-l6-v2":{"id":"all-mini-lm-l6-v2","name":"All-MiniLM-L6-v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":256,"output":384},"cost":{"input":0.009,"output":0}},"multi-qa-mpnet-base-dot-v1":{"id":"multi-qa-mpnet-base-dot-v1","name":"Multi-QA-mpnet-base-dot-v1","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2021-08-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":768},"cost":{"input":0.009,"output":0}},"openai-gpt-image-1":{"id":"openai-gpt-image-1","name":"GPT Image 1","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image"]},"open_weights":false,"limit":{"context":0,"output":0},"cost":{"input":5,"output":40,"cache_read":1.25}},"anthropic-claude-3-opus":{"id":"anthropic-claude-3-opus","name":"Claude 3 Opus","description":"Legacy model retained for compatibility with older integrations","family":"claude-opus","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-08","release_date":"2024-02-29","last_updated":"2024-02-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":4096},"status":"deprecated","cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic-claude-4.6-sonnet":{"id":"anthropic-claude-4.6-sonnet","name":"Anthropic Claude Sonnet 4.6","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08-31","release_date":"2026-02-17","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"anthropic-claude-haiku-4.5":{"id":"anthropic-claude-haiku-4.5","name":"Anthropic Claude Haiku 4.5","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-02-28","release_date":"2025-10-15","last_updated":"2025-10-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":1,"output":5,"cache_read":0.1,"cache_write":1.25}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM5.3 Flash","description":"Native multimodal GLM model for efficient coding and long-horizon agent tasks","family":"glm-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":0.15,"output":0.5,"cache_read":0.03},"canonical_model_id":"zhipuai/glm-5.3-flash"},"openai-o1":{"id":"openai-o1","name":"OpenAI o1","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2023-09","release_date":"2024-12-05","last_updated":"2024-12-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":15,"output":60,"cache_read":7.5}},"deepseek-v4-flash-0731":{"id":"deepseek-v4-flash-0731","name":"DeepSeek V4 Flash 0731","description":"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-07-31","last_updated":"2026-07-31","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.14,"output":0.28,"cache_read":0.028},"canonical_model_id":"deepseek/deepseek-v4-flash-0731"},"anthropic-claude-opus-4.7":{"id":"anthropic-claude-opus-4.7","name":"Anthropic Claude Opus 4.7","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-04-16","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"stable-diffusion-3.5-large":{"id":"stable-diffusion-3.5-large","name":"Stable Diffusion 3.5 Large","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-10-22","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":256,"output":1},"cost":{"input":0.08,"output":0}},"openai-gpt-6-luna":{"id":"openai-gpt-6-luna","name":"OpenAI GPT-6 Luna","description":"OpenAI's most efficient model for focused, high-volume tasks","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-05-18","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"tiers":[{"input":0.2,"output":0.75,"cache_read":0.02,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.2,"output":0.75,"cache_read":0.02}},"canonical_model_id":"openai/gpt-6-luna"},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8-Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":262144},"cost":{"input":2,"output":6,"cache_read":0.2},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":131072},"cost":{"input":3,"output":15,"cache_read":0.3},"canonical_model_id":"moonshotai/kimi-k3"},"anthropic-claude-opus-5.5":{"id":"anthropic-claude-opus-5.5","name":"Anthropic Claude Opus 5.5","description":"Claude model for long-running agentic coding and knowledge work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.2,"cache_write":5,"tiers":[{"input":8,"output":30,"cache_read":0.4,"cache_write":10,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.4,"cache_write":10}},"canonical_model_id":"anthropic/claude-opus-5-5"},"openai-gpt-6-1-sol":{"id":"openai-gpt-6-1-sol","name":"OpenAI GPT-6.1 Sol","description":"Near-Astra performance for complex coding, computer use, and professional work at a lower cost.","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-29","last_updated":"2026-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.1,"tiers":[{"input":4,"output":15,"cache_read":0.2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.2}},"canonical_model_id":"openai/gpt-6.1-sol"},"llama-4-maverick":{"id":"llama-4-maverick","name":"Llama 4 Maverick","description":"Open multimodal Llama model for strong reasoning and fast responses","family":"llama","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-08","release_date":"2025-04-05","last_updated":"2026-04-30","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.25,"output":0.87,"cache_read":0.05}},"openai-o3-mini":{"id":"openai-o3-mini","name":"OpenAI o3 mini","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2024-12-20","last_updated":"2025-01-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":1.1,"output":4.4,"cache_read":0.55}},"glm-5":{"id":"glm-5","name":"GLM 5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":64000,"output":64000},"cost":{"input":1,"output":3.2,"cache_read":0.2}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":0.3,"output":1.2,"cache_read":0.006},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax M2.5 (Public Preview)","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax-m2.5","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-08","release_date":"2026-02-12","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.3,"output":1.2,"cache_read":0.06}},"anthropic-claude-4.1-opus":{"id":"anthropic-claude-4.1-opus","name":"Anthropic Claude 4.1 Opus","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-08-05","last_updated":"2025-08-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"anthropic-claude-sonnet-5.5":{"id":"anthropic-claude-sonnet-5.5","name":"Anthropic Claude Sonnet 5.5","description":"Fast Claude model for everyday coding, agents, and knowledge work","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-28","last_updated":"2026-09-28","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5-5"},"wan2-2-t2v-a14b":{"id":"wan2-2-t2v-a14b","name":"Wan2.2-T2V-A14B","description":"Video model for prompt-guided generation, editing, and motion workflows","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-07-28","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["video"]},"open_weights":true,"limit":{"context":100,"output":1},"cost":{"input":0.6,"output":0}},"openai-gpt-4o":{"id":"openai-gpt-4o","name":"OpenAI GPT-4o","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-05-13","last_updated":"2024-08-06","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":2.5,"output":10,"cache_read":1.25}},"anthropic-claude-fable-5.1":{"id":"anthropic-claude-fable-5.1","name":"Anthropic Claude Fable 5.1","description":"Claude model for demanding reasoning and long-horizon agentic work","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-09-01","last_updated":"2026-09-01","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":0.25,"cache_write":12.5},"canonical_model_id":"anthropic/claude-fable-5-1"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.95,"output":4,"cache_read":0.19}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-12-26","last_updated":"2025-03-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":131072}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-01-30","last_updated":"2025-01-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32678,"output":8192},"cost":{"input":0.99,"output":0.99}},"openai-gpt-5-nano":{"id":"openai-gpt-5-nano","name":"OpenAI GPT-5 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.05,"output":0.4,"cache_read":0.005}},"qwen3-embedding-0.6b":{"id":"qwen3-embedding-0.6b","name":"Qwen3 Embedding 0.6B","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-06-03","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8000,"output":1024},"status":"beta","cost":{"input":0.04,"output":0}},"mistral-7b-instruct-v0.3":{"id":"mistral-7b-instruct-v0.3","name":"Mistral 7B Instruct v0.3","description":"Mistral model for multilingual chat, reasoning, and tool-assisted workflows","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-05-22","last_updated":"2024-05-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768}},"anthropic-claude-5.5-haiku":{"id":"anthropic-claude-5.5-haiku","name":"Anthropic Claude 5.5 Haiku","description":"Fast Claude model for responsive assistance, classification, and lightweight agents","family":"claude-haiku","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-06","release_date":"2026-10-07","last_updated":"2026-10-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":0.1,"output":0.5,"cache_read":0.01,"cache_write":0.125},"canonical_model_id":"anthropic/claude-haiku-5-5"},"qwen-2.5-14b-instruct":{"id":"qwen-2.5-14b-instruct","name":"Qwen 2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-09","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072}},"openai-o3":{"id":"openai-o3","name":"OpenAI o3","description":"O-series reasoning model for hard analysis, math, coding, and planning","family":"o","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05","release_date":"2025-04-16","last_updated":"2025-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":100000},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai-gpt-5":{"id":"openai-gpt-5","name":"OpenAI GPT-5","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"openai-gpt-4.1":{"id":"openai-gpt-4.1","name":"OpenAI GPT-4.1","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":2,"output":8,"cache_read":0.5}},"openai-gpt-5.1-codex-max":{"id":"openai-gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-09-30","release_date":"2025-11-13","last_updated":"2025-11-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.25,"output":10,"cache_read":0.125}},"anthropic-claude-3.5-haiku":{"id":"anthropic-claude-3.5-haiku","name":"Claude 3.5 Haiku","description":"Legacy model retained for compatibility with older integrations","family":"claude-haiku","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-07","release_date":"2024-11-05","last_updated":"2024-11-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":0.8,"output":4,"cache_read":0.08,"cache_write":1}},"anthropic-claude-3.5-sonnet":{"id":"anthropic-claude-3.5-sonnet","name":"Claude 3.5 Sonnet","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-06-20","last_updated":"2024-10-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01","last_updated":"2026-04-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.5,"output":2.7,"cache_read":0.203}},"anthropic-claude-opus-4":{"id":"anthropic-claude-opus-4","name":"Claude Opus 4","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":32000},"cost":{"input":15,"output":75,"cache_read":1.5,"cache_write":18.75}},"openai-gpt-6-astra":{"id":"openai-gpt-6-astra","name":"OpenAI GPT-6 Astra","description":"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.","family":"gpt-astra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-30","release_date":"2026-09-04","last_updated":"2026-09-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"tiers":[{"input":20,"output":75,"cache_read":2,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":20,"output":75,"cache_read":2}},"canonical_model_id":"openai/gpt-6-astra"},"openai-gpt-image-2":{"id":"openai-gpt-image-2","name":"OpenAI GPT Image 2","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-04-24","last_updated":"2025-04-24","modalities":{"input":["text","image"],"output":["image","text"]},"open_weights":false,"limit":{"context":0,"output":16384},"cost":{"input":8,"output":30}},"openai-gpt-image-1.5":{"id":"openai-gpt-image-1.5","name":"OpenAI GPT Image 1.5","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"gpt-image","attachment":true,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-11-25","last_updated":"2025-11-25","modalities":{"input":["text","image"],"output":["image","text"]},"open_weights":false,"limit":{"context":0,"output":16384},"cost":{"input":5,"output":10,"cache_read":1}},"openai-gpt-4o-mini":{"id":"openai-gpt-4o-mini","name":"OpenAI GPT-4o mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2023-09","release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":128000,"output":16384},"cost":{"input":0.15,"output":0.6,"cache_read":0.075}},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.45,"output":1.7,"cache_read":0.09}},"deepseek-4-flash":{"id":"deepseek-4-flash","name":"Deepseek V4 Flash","description":"Fast DeepSeek model for efficient chat, coding help, and agent loops","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-05-27","last_updated":"2026-05-29","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1048576,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.028}},"nemotron-3-ultra-550b":{"id":"nemotron-3-ultra-550b","name":"Nemotron 3 Ultra","description":"Flagship Nemotron model for high-throughput reasoning and complex agents","family":"nemotron","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2026-06-04","last_updated":"2026-06-12","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":131072},"cost":{"input":0.9,"output":1.7,"cache_read":0.18}},"openai-gpt-5.2":{"id":"openai-gpt-5.2","name":"OpenAI GPT-5.2","description":"GPT model for general reasoning, writing, coding, and tool-assisted tasks","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2025-12-11","last_updated":"2025-12-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"nvidia-nemotron-3-super-120b":{"id":"nvidia-nemotron-3-super-120b","name":"NVIDIA Nemotron 3 Super 120B (Public Preview)","description":"Nemotron middle tier for collaborative agents and high-volume reasoning workloads","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-03-11","last_updated":"2026-03-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":32768},"cost":{"input":0.3,"output":0.65,"cache_read":0.06},"canonical_model_id":"nvidia/nemotron-3-super-120b-a12b"},"deepseek-v4-pro-0813":{"id":"deepseek-v4-pro-0813","name":"DeepSeek V4 Pro 0813","description":"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-12","last_updated":"2026-08-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":1.32,"output":3.96,"cache_read":0.044},"canonical_model_id":"deepseek/deepseek-v4-pro-0813"},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","description":"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution","family":"mimo","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"knowledge":"2024-12","release_date":"2026-04-22","last_updated":"2026-04-22","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.8,"output":3,"cache_read":0.16},"canonical_model_id":"xiaomi/mimo-v2.5-pro"},"mistral-3-14B":{"id":"mistral-3-14B","name":"Ministral 3 14B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":128000},"cost":{"input":0.2,"output":0.2,"cache_read":0.04}},"anthropic-claude-opus-5":{"id":"anthropic-claude-opus-5","name":"Anthropic Claude Opus 5","description":"Strongest Claude Opus model for coding, agents, and professional work","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"knowledge":"2026-05","release_date":"2026-07-24","last_updated":"2026-07-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25},"canonical_model_id":"anthropic/claude-opus-5"},"nemotron-3-nano-omni":{"id":"nemotron-3-nano-omni","name":"Nemotron 3 Nano Omni","description":"Open Nemotron omni model combining reasoning with text, vision, and audio","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-28","last_updated":"2026-04-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":65536,"output":65536},"cost":{"input":0.5,"output":0.9,"cache_read":0.1},"canonical_model_id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"},"nemotron-3-nano-30b":{"id":"nemotron-3-nano-30b","name":"Nemotron 3 Nano 30B A3B","description":"Small Nemotron 3 MoE for efficient coding, math, and long-context agents","family":"nemotron","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"canonical_model_id":"nvidia/nemotron-3-nano-30b-a3b"},"arcee-trinity-large-thinking":{"id":"arcee-trinity-large-thinking","name":"Arcee Trinity Large Thinking (Public Preview)","description":"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use","family":"trinity","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"release_date":"2026-04-01","last_updated":"2026-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":32000},"cost":{"input":0.25,"output":0.9,"cache_read":0.06},"canonical_model_id":"arcee-ai/trinity-large-thinking"},"anthropic-claude-5-sonnet":{"id":"anthropic-claude-5-sonnet","name":"Anthropic Claude Sonnet 5","description":"Everyday Claude agent model for coding, planning, browsing, and general work","family":"claude-sonnet","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2026-01-31","release_date":"2026-06-30","last_updated":"2026-06-30","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"cache_write":2.5},"canonical_model_id":"anthropic/claude-sonnet-5"},"openai-gpt-5.4-pro":{"id":"openai-gpt-5.4-pro","name":"OpenAI GPT-5.4 Pro","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt-pro","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"output":128000},"cost":{"input":30,"output":180,"tiers":[{"input":60,"output":270,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":60,"output":270}}},"llama3-8b-instruct":{"id":"llama3-8b-instruct","name":"Llama 3.1 Instruct (8B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-07-23","last_updated":"2024-07-23","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.198,"output":0.198}},"llama3.3-70b-instruct":{"id":"llama3.3-70b-instruct","name":"Llama 3.3 Instruct (70B)","description":"Open Llama instruction model for multilingual chat, reasoning, and coding","family":"llama","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2023-12","release_date":"2024-12-06","last_updated":"2024-12-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.65,"output":0.65}},"openai-gpt-oss-120b":{"id":"openai-gpt-oss-120b","name":"OpenAI GPT-oss-120b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.1,"output":0.7,"cache_read":0.02}},"alibaba-qwen3-32b":{"id":"alibaba-qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-04-30","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":32768,"output":32768},"cost":{"input":0.25,"output":0.55}},"openai-gpt-5.3-codex":{"id":"openai-gpt-5.3-codex","name":"OpenAI GPT-5.3 Codex","description":"Coding-optimized GPT model for repository edits, reviews, and agentic software work","family":"gpt-codex","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-02-05","last_updated":"2026-02-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":1.75,"output":14,"cache_read":0.175}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen 3.5 397B A17B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen3.5","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-02-15","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":131072},"cost":{"input":0.55,"output":3.5,"cache_read":0.111}},"anthropic-claude-3.7-sonnet":{"id":"anthropic-claude-3.7-sonnet","name":"Claude 3.7 Sonnet","description":"Legacy model retained for compatibility with older integrations","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2024-11","release_date":"2025-02-24","last_updated":"2025-02-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"status":"deprecated","cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75}},"anthropic-claude-opus-4.8":{"id":"anthropic-claude-opus-4.8","name":"Anthropic Claude Opus 4.8","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2026-05-28","last_updated":"2026-05-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"openai-gpt-5.6-luna":{"id":"openai-gpt-5.6-luna","name":"OpenAI GPT-5.6 Luna","description":"Cost-efficient GPT-5.6 model for fast, high-volume workloads","family":"gpt-luna","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":0.2,"output":1.2,"cache_read":0.02,"tiers":[{"input":0.4,"output":1.8,"cache_read":0.04,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":0.4,"output":1.8,"cache_read":0.04}},"canonical_model_id":"openai/gpt-5.6-luna"},"qwen3-tts-voicedesign":{"id":"qwen3-tts-voicedesign","name":"Qwen3 TTS VoiceDesign","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2026-04-21","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["audio"]},"open_weights":true,"limit":{"context":32768,"output":1}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":131072},"cost":{"input":1.4,"output":4.4,"cache_read":0.21},"canonical_model_id":"zhipuai/glm-5.2"},"openai-gpt-6-sol":{"id":"openai-gpt-6-sol","name":"OpenAI GPT-6 Sol","description":"OpenAI model for complex coding and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-04-20","release_date":"2026-09-22","last_updated":"2026-09-22","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":10,"cache_read":0.2,"tiers":[{"input":4,"output":15,"cache_read":0.4,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":15,"cache_read":0.4}},"canonical_model_id":"openai/gpt-6-sol"},"anthropic-claude-4.5-sonnet":{"id":"anthropic-claude-4.5-sonnet","name":"Anthropic Claude 4.5 Sonnet","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-07-31","release_date":"2025-09-29","last_updated":"2025-09-29","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.6,"cache_write":7.5}}},"bge-m3":{"id":"bge-m3","name":"BGE M3","description":"Flagship model for demanding analysis, coding, and production agent workflows","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-01-30","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0.02,"output":0}},"ministral-3-8b-instruct-2512":{"id":"ministral-3-8b-instruct-2512","name":"Ministral 3 8B","description":"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads","family":"ministral","attachment":true,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-12-15","last_updated":"2025-12-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144}},"openai-gpt-5.6-sol":{"id":"openai-gpt-5.6-sol","name":"OpenAI GPT-5.6 Sol","description":"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows","family":"gpt-sol","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":4,"output":20,"cache_read":0.4,"tiers":[{"input":8,"output":30,"cache_read":0.8,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":8,"output":30,"cache_read":0.8}},"canonical_model_id":"openai/gpt-5.6-sol"},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Strong GLM coding model for agentic engineering, terminals, and repository generation","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-07","last_updated":"2026-04-07","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":163840,"output":163840},"cost":{"input":1.3,"output":4.3,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.1"},"openai-gpt-5.4-nano":{"id":"openai-gpt-5.4-nano","name":"OpenAI GPT-5.4 Nano","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-nano","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.2,"output":1.25,"cache_read":0.02}},"bge-reranker-v2-m3":{"id":"bge-reranker-v2-m3","name":"BGE Reranker v2 M3","description":"Reranking model for improving retrieval quality in search and recommendation systems","family":"bge","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-12","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1},"cost":{"input":0.01,"output":0}},"nemotron-nano-12b-v2-vl":{"id":"nemotron-nano-12b-v2-vl","name":"Nemotron-nano 12b v2-vl","description":"Nemotron multimodal model for visual reasoning and agentic AI workflows","family":"nemotron","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","max"]}],"tool_call":true,"temperature":true,"release_date":"2025-10-28","last_updated":"2025-10-28","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"cost":{"input":0.2,"output":0.6,"cache_read":0.04},"canonical_model_id":"nvidia/nemotron-nano-12b-v2-vl"},"openai-gpt-5.4-mini":{"id":"openai-gpt-5.4-mini","name":"OpenAI GPT-5.4 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-17","last_updated":"2026-03-17","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.75,"output":4.5,"cache_read":0.075}},"openai-gpt-5-mini":{"id":"openai-gpt-5-mini","name":"OpenAI GPT-5 Mini","description":"Compact GPT model for low-latency assistance and high-volume workloads","family":"gpt-mini","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["minimal","low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2024-05-30","release_date":"2025-08-07","last_updated":"2025-08-07","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":0.25,"output":2,"cache_read":0.025}},"anthropic-claude-opus-4.6":{"id":"anthropic-claude-opus-4.6","name":"Anthropic Claude Opus 4.6","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-05-31","release_date":"2026-02-05","last_updated":"2026-03-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25,"tiers":[{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":10,"output":37.5,"cache_read":1,"cache_write":12.5}}},"e5-large-v2":{"id":"e5-large-v2","name":"E5 Large v2","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-05-19","last_updated":"2026-04-30","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":512,"output":1024},"cost":{"input":0.02,"output":0}},"anthropic-claude-opus-4.5":{"id":"anthropic-claude-opus-4.5","name":"Anthropic Claude Opus 4.5","description":"Flagship Claude model for deep reasoning, coding, and long-horizon agents","family":"claude-opus","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","max"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-11-24","last_updated":"2025-11-24","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":200000,"output":8192},"cost":{"input":5,"output":25,"cache_read":0.5,"cache_write":6.25}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"Deepseek V4 Pro","description":"Flagship DeepSeek model for coding, reasoning, and agentic work","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":384000},"cost":{"input":1.74,"output":3.48,"cache_read":0.348}},"gemma-4-31B-it":{"id":"gemma-4-31B-it","name":"Gemma 4","description":"Open Gemma instruction model for efficient chat and self-hosted deployments","family":"gemma","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-22","last_updated":"2026-04-30","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":256000,"output":8192},"cost":{"input":0.18,"output":0.5,"cache_read":0.036}},"openai-gpt-5.6-terra":{"id":"openai-gpt-5.6-terra","name":"OpenAI GPT-5.6 Terra","description":"Balanced GPT-5.6 model for capable, cost-efficient everyday work","family":"gpt-terra","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh","max"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2026-02-16","release_date":"2026-07-09","last_updated":"2026-07-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1050000,"input":922000,"output":128000},"cost":{"input":2,"output":12,"cache_read":0.2,"tiers":[{"input":4,"output":18,"cache_read":0.4,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":4,"output":18,"cache_read":0.4}},"canonical_model_id":"openai/gpt-5.6-terra"},"glm-5.3":{"id":"glm-5.3","name":"GLM5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":128000},"cost":{"input":1.4,"output":4.4,"cache_read":0.26},"canonical_model_id":"zhipuai/glm-5.3"},"gte-large-en-v1.5":{"id":"gte-large-en-v1.5","name":"GTE Large (v1.5)","description":"Embedding model for semantic search, retrieval, clustering, and ranking pipelines","family":"text-embedding","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-03-27","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":8192,"output":1024},"cost":{"input":0.09,"output":0}},"anthropic-claude-fable-5":{"id":"anthropic-claude-fable-5","name":"Anthropic Claude Fable 5","description":"Claude model for creative writing, analysis, and controlled agent workflows","family":"claude-fable","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high","xhigh","max"]}],"tool_call":true,"temperature":false,"release_date":"2026-06-09","last_updated":"2026-06-12","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":128000},"cost":{"input":10,"output":50,"cache_read":1,"cache_write":12.5}},"openai-gpt-oss-20b":{"id":"openai-gpt-oss-20b","name":"OpenAI GPT-oss-20b","description":"Open-weight GPT model for self-hosted reasoning and instruction-following workloads","family":"gpt-oss","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-06","release_date":"2025-08-05","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":4096},"cost":{"input":0.05,"output":0.45,"cache_read":0.01}},"openai-gpt-5.4":{"id":"openai-gpt-5.4","name":"OpenAI GPT-5.4","description":"Frontier GPT model for professional reasoning, coding, and multimodal work","family":"gpt","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","high","xhigh"]}],"tool_call":true,"structured_output":true,"temperature":false,"knowledge":"2025-08-31","release_date":"2026-03-05","last_updated":"2026-03-05","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":400000,"output":128000},"cost":{"input":2.5,"output":15,"cache_read":0.25,"tiers":[{"input":5,"output":22.5,"cache_read":0.5,"tier":{"type":"context","size":272000}}],"context_over_200k":{"input":5,"output":22.5,"cache_read":0.5}}},"mistral-nemo-instruct-2407":{"id":"mistral-nemo-instruct-2407","name":"Mistral Nemo Instruct","description":"Legacy model retained for compatibility with older integrations","family":"mistral","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-07-18","last_updated":"2024-07-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":128000,"output":16384},"status":"deprecated","cost":{"input":0.3,"output":0.3}},"anthropic-claude-sonnet-4":{"id":"anthropic-claude-sonnet-4","name":"Claude Sonnet 4","description":"Balanced Claude model for coding, analysis, agent workflows, and cost control","family":"claude-sonnet","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","medium","high"]}],"tool_call":true,"temperature":true,"knowledge":"2025-03-31","release_date":"2025-05-22","last_updated":"2025-05-22","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":3,"output":15,"cache_read":0.3,"cache_write":3.75,"tiers":[{"input":6,"output":22.5,"cache_read":0.3,"cache_write":3.75,"tier":{"type":"context","size":200000}}],"context_over_200k":{"input":6,"output":22.5,"cache_read":0.3,"cache_write":3.75}}},"fal-ai/fast-sdxl":{"id":"fal-ai/fast-sdxl","name":"Fast SDXL","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"stable-diffusion","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-07-26","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":0,"output":0}},"fal-ai/elevenlabs/tts/multilingual-v2":{"id":"fal-ai/elevenlabs/tts/multilingual-v2","name":"ElevenLabs Multilingual TTS v2","description":"Speech generation model for controllable voice, narration, and audio delivery","family":"elevenlabs","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2023-08-22","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}},"fal-ai/flux/schnell":{"id":"fal-ai/flux/schnell","name":"FLUX.1 [schnell]","description":"Image model for prompt-driven generation, editing, and visual design workflows","family":"flux","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2024-08-01","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["image"]},"open_weights":true,"limit":{"context":0,"output":0}},"fal-ai/stable-audio-25/text-to-audio":{"id":"fal-ai/stable-audio-25/text-to-audio","name":"Stable Audio 2.5 (Text-to-Audio)","description":"Speech generation model for controllable voice, narration, and audio delivery","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"release_date":"2025-10-08","last_updated":"2026-04-16","modalities":{"input":["text"],"output":["audio"]},"open_weights":false,"limit":{"context":0,"output":0}}}},"aixy":{"id":"aixy","env":["AIXY_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://api.aixy-gateway.com/v1","name":"Aixy","doc":"https://docs.aixy-gateway.com/integrations/overview","models":{"openai/gpt-4.1-mini":{"id":"openai/gpt-4.1-mini","name":"GPT-4.1 mini","description":"Affordable GPT-4.1 lane for fast coding help and structured extraction","family":"gpt-mini","attachment":true,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-04-14","last_updated":"2025-04-14","modalities":{"input":["text","image","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1047576,"output":32768},"cost":{"input":0.4,"output":1.6,"cache_read":0.1},"canonical_model_id":"openai/gpt-4.1-mini"}}},"alibaba-cn":{"id":"alibaba-cn","env":["DASHSCOPE_API_KEY"],"npm":"@ai-sdk/openai-compatible","api":"https://dashscope.aliyuncs.com/compatible-mode/v1","name":"Alibaba (China)","doc":"https://www.alibabacloud.com/help/en/model-studio/models","models":{"qwen-flash":{"id":"qwen-flash","name":"Qwen Flash","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.022,"output":0.216}},"qwen3.5-flash":{"id":"qwen3.5-flash","name":"Qwen3.5 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-23","last_updated":"2026-09-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.029,"output":0.287,"reasoning":0.287,"tiers":[{"input":0.115,"output":1.147,"reasoning":1.147,"tier":{"type":"context","size":128000}},{"input":0.172,"output":1.72,"reasoning":1.72,"tier":{"type":"context","size":256000}}]}},"qwen2-5-coder-32b-instruct":{"id":"qwen2-5-coder-32b-instruct","name":"Qwen2.5-Coder 32B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11","last_updated":"2024-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"deepseek-v3-2-exp":{"id":"deepseek-v3-2-exp","name":"DeepSeek V3.2 Exp","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.287,"output":0.431}},"deepseek-r1-distill-qwen-14b":{"id":"deepseek-r1-distill-qwen-14b","name":"DeepSeek R1 Distill Qwen 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.144,"output":0.431}},"qwen-math-plus":{"id":"qwen-math-plus","name":"Qwen Math Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-08-16","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721}},"qwen-deep-research":{"id":"qwen-deep-research","name":"Qwen Deep Research","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":7.742,"output":23.367}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","description":"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"release_date":"2026-05-21","last_updated":"2026-05-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":2.5,"output":7.5,"cache_read":0.5,"cache_write":3.125},"canonical_model_id":"alibaba/qwen3.7-max"},"qwen2-5-32b-instruct":{"id":"qwen2-5-32b-instruct","name":"Qwen2.5 32B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"qwq-plus":{"id":"qwq-plus","name":"QwQ Plus","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-05","last_updated":"2025-03-05","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574}},"qwq-32b":{"id":"qwq-32b","name":"QwQ 32B","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.861}},"qwen2-5-vl-72b-instruct":{"id":"qwen2-5-vl-72b-instruct","name":"Qwen2.5-VL 72B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":2.294,"output":6.881}},"deepseek-v3-1":{"id":"deepseek-v3-1","name":"DeepSeek V3.1","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":65536},"cost":{"input":0.574,"output":1.721}},"qwen3-vl-plus":{"id":"qwen3-vl-plus","name":"Qwen3-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09-23","last_updated":"2025-09-23","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":32768},"cost":{"input":0.143353,"output":1.433525,"reasoning":4.300576}},"qwen-plus-character":{"id":"qwen-plus-character","name":"Qwen Plus Character","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":4096},"cost":{"input":0.115,"output":0.287}},"qwen-max":{"id":"qwen-max","name":"Qwen Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-03","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.345,"output":1.377}},"qwen3-next-80b-a3b-thinking":{"id":"qwen3-next-80b-a3b-thinking","name":"Qwen3-Next 80B-A3B (Thinking)","description":"Qwen reasoning model for deliberate problem solving, math, and coding","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":1.434}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","description":"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","min":0,"max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-03","last_updated":"2026-08-03","modalities":{"input":["text","image","video","pdf"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":1.77744,"output":5.33231,"cache_read":0.22218,"cache_write":2.22179},"canonical_model_id":"alibaba/qwen3.8-max"},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","description":"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work","family":"kimi-k3","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"release_date":"2026-07-16","last_updated":"2026-07-16","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":1048576},"cost":{"input":2.827,"output":14.133,"cache_read":0.283},"canonical_model_id":"moonshotai/kimi-k3"},"qwen2-5-math-7b-instruct":{"id":"qwen2-5-math-7b-instruct","name":"Qwen2.5-Math 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3072},"cost":{"input":0.144,"output":0.287}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-09-22","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.115,"output":0.688,"reasoning":0.688,"tiers":[{"input":0.287,"output":1.72,"reasoning":1.72,"tier":{"type":"context","size":128000}},{"input":0.573,"output":3.44,"reasoning":3.44,"tier":{"type":"context","size":256000}}]}},"qwen2-5-72b-instruct":{"id":"qwen2-5-72b-instruct","name":"Qwen2.5 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":1.721}},"glm-5":{"id":"glm-5","name":"GLM-5","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":32768}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-11","last_updated":"2026-02-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":202752,"output":16384},"cost":{"input":0.573,"output":2.58,"tiers":[{"input":0.86,"output":3.154,"tier":{"type":"context","size":32000}}]}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","description":"DeepSeek V4.1 Flash model for reasoning and agentic coding","family":"deepseek-flash","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-09-10","last_updated":"2026-09-10","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.29754,"output":1.19015,"cache_read":0.01488},"canonical_model_id":"deepseek/deepseek-v4.1-flash"},"deepseek-r1-distill-llama-8b":{"id":"deepseek-r1-distill-llama-8b","name":"DeepSeek R1 Distill Llama 8B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"qwen3-32b":{"id":"qwen3-32b","name":"Qwen3 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868}},"qwen2-5-coder-7b-instruct":{"id":"qwen2-5-coder-7b-instruct","name":"Qwen2.5-Coder 7B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11","last_updated":"2024-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.287}},"qwen-plus":{"id":"qwen-plus","name":"Qwen Plus","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":32768},"cost":{"input":0.115,"output":0.287,"reasoning":1.147,"cache_read":0.012,"cache_write":0.144}},"qwen3.7-flash":{"id":"qwen3.7-flash","name":"Qwen3.7 Flash","description":"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-07-15","last_updated":"2026-07-15","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"input":991808,"output":131072},"cost":{"input":0.02962,"output":0.1185,"cache_read":0.002962,"cache_write":0.03703,"tiers":[{"input":0.08887,"output":0.35549,"cache_read":0.008887,"cache_write":0.11109,"tier":{"type":"context","size":32000}},{"input":0.17774,"output":0.71098,"cache_read":0.017774,"cache_write":0.22218,"tier":{"type":"context","size":256000}}]},"canonical_model_id":"alibaba/qwen3.7-flash"},"kimi-k2.6":{"id":"kimi-k2.6","name":"Moonshot Kimi K2.6","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-04-21","last_updated":"2026-04-21","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.929,"output":3.858}},"qwen3-max":{"id":"qwen3-max","name":"Qwen3 Max","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-01-23","last_updated":"2026-09-22","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":262144,"output":65536},"cost":{"input":0.359,"output":1.434,"reasoning":1.434,"tiers":[{"input":0.574,"output":2.294,"reasoning":2.294,"tier":{"type":"context","size":32000}},{"input":1.004,"output":4.014,"reasoning":4.014,"tier":{"type":"context","size":128000}}]}},"qwen-omni-turbo-realtime":{"id":"qwen-omni-turbo-realtime","name":"Qwen-Omni Turbo Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-05-08","last_updated":"2025-05-08","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.23,"output":0.918,"input_audio":3.584,"output_audio":7.168}},"deepseek-v3":{"id":"deepseek-v3","name":"DeepSeek V3","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"release_date":"2024-12-01","last_updated":"2024-12-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":65536,"output":8192},"cost":{"input":0.287,"output":1.147}},"deepseek-r1-distill-llama-70b":{"id":"deepseek-r1-distill-llama-70b","name":"DeepSeek R1 Distill Llama 70B","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861}},"qwen3-coder-480b-a35b-instruct":{"id":"qwen3-coder-480b-a35b-instruct","name":"Qwen3-Coder 480B-A35B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.861,"output":3.441,"tiers":[{"input":1.291,"output":5.161,"tier":{"type":"context","size":32000}},{"input":2.151,"output":8.602,"tier":{"type":"context","size":128000}}]}},"qwen-turbo":{"id":"qwen-turbo","name":"Qwen Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-11-01","last_updated":"2025-07-15","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":16384},"cost":{"input":0.044,"output":0.087,"reasoning":0.431}},"deepseek-r1-distill-qwen-7b":{"id":"deepseek-r1-distill-qwen-7b","name":"DeepSeek R1 Distill Qwen 7B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.072,"output":0.144}},"qwen2-5-math-72b-instruct":{"id":"qwen2-5-math-72b-instruct","name":"Qwen2.5-Math 72B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":4096,"output":3072},"cost":{"input":0.574,"output":1.721}},"qwen3-coder-30b-a3b-instruct":{"id":"qwen3-coder-30b-a3b-instruct","name":"Qwen3-Coder 30B-A3B Instruct","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.216,"output":0.861,"tiers":[{"input":0.323,"output":1.291,"tier":{"type":"context","size":32000}},{"input":0.538,"output":2.151,"tier":{"type":"context","size":128000}}]}},"qwen-doc-turbo":{"id":"qwen-doc-turbo","name":"Qwen Doc Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.087,"output":0.144}},"kimi-k2-thinking":{"id":"kimi-k2-thinking","name":"Moonshot Kimi K2 Thinking","description":"Kimi reasoning model for long-horizon research, planning, and tool use","family":"kimi-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"budget_tokens"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2025-11-06","last_updated":"2025-11-06","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":16384},"cost":{"input":0.574,"output":2.294}},"qwen3.8-omni-flash":{"id":"qwen3.8-omni-flash","name":"Qwen3.8 Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"effort","values":["none","low","medium","xhigh"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-09-17","last_updated":"2026-09-17","modalities":{"input":["text","image","audio","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.113,"output":0.382,"cache_read":0.014},"canonical_model_id":"alibaba/qwen3.8-omni-flash"},"qvq-max":{"id":"qvq-max","name":"QVQ Max","description":"Multimodal reasoning model for visual analysis, planning, and tool use","family":"qvq","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-03-25","last_updated":"2025-03-25","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":1.147,"output":4.588}},"qwen2-5-7b-instruct":{"id":"qwen2-5-7b-instruct","name":"Qwen2.5 7B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.144}},"qwen3-omni-flash":{"id":"qwen3-omni-flash","name":"Qwen3-Omni Flash","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.058,"output":0.23,"input_audio":3.584,"output_audio":7.168}},"qwen-vl-max":{"id":"qwen-vl-max","name":"Qwen-VL Max","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-04-08","last_updated":"2025-08-13","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.23,"output":0.574}},"qwen3-235b-a22b":{"id":"qwen3-235b-a22b","name":"Qwen3 235B-A22B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":16384},"cost":{"input":0.287,"output":1.147,"reasoning":2.868}},"qwen3-vl-30b-a3b":{"id":"qwen3-vl-30b-a3b","name":"Qwen3-VL 30B-A3B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.108,"output":0.431,"reasoning":1.076}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Moonshot Kimi K2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":false,"temperature":true,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":32768},"cost":{"input":0.574,"output":2.411}},"qwen3-next-80b-a3b-instruct":{"id":"qwen3-next-80b-a3b-instruct","name":"Qwen3-Next 80B-A3B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-09","last_updated":"2025-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.144,"output":0.574}},"qwen-vl-plus":{"id":"qwen-vl-plus","name":"Qwen-VL Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-01-25","last_updated":"2025-08-15","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":8192},"cost":{"input":0.115,"output":0.287}},"deepseek-r1-distill-qwen-1-5b":{"id":"deepseek-r1-distill-qwen-1-5b","name":"DeepSeek R1 Distill Qwen 1.5B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0,"output":0}},"qwen3.6-flash":{"id":"qwen3.6-flash","name":"Qwen3.6 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen3.6","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-27","last_updated":"2026-04-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.1875,"output":1.125,"cache_write":0.234375},"canonical_model_id":"alibaba/qwen3.6-flash"},"qwen3-coder-flash":{"id":"qwen3-coder-flash","name":"Qwen3 Coder Flash","description":"Qwen coding model for software agents, repository edits, and code reasoning","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-28","last_updated":"2025-07-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.144,"output":0.574}},"qwen2-5-omni-7b":{"id":"qwen2-5-omni-7b","name":"Qwen2.5-Omni 7B","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-12","last_updated":"2024-12","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":true,"limit":{"context":32768,"output":2048},"cost":{"input":0.087,"output":0.345,"input_audio":5.448}},"qwen-mt-plus":{"id":"qwen-mt-plus","name":"Qwen-MT Plus","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.259,"output":0.775}},"tongyi-intent-detect-v3":{"id":"tongyi-intent-detect-v3","name":"Tongyi Intent Detect V3","description":"General-purpose chat model for instruction following, writing, and analysis","family":"yi","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-01","last_updated":"2024-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":8192,"output":1024},"cost":{"input":0.058,"output":0.144}},"qwen3-vl-235b-a22b":{"id":"qwen3-vl-235b-a22b","name":"Qwen3-VL 235B-A22B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":32768},"cost":{"input":0.286705,"output":1.14682,"reasoning":2.867051}},"qwen3-coder-plus":{"id":"qwen3-coder-plus","name":"Qwen3 Coder Plus","description":"Hosted Qwen coder for software agents, repo edits, and long-context code","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-07-23","last_updated":"2026-09-11","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1048576,"output":65536},"cost":{"input":0.574,"output":2.296,"tiers":[{"input":0.861,"output":3.444,"tier":{"type":"context","size":32000}},{"input":1.435,"output":5.74,"tier":{"type":"context","size":128000}},{"input":2.87,"output":28.7,"tier":{"type":"context","size":256000}}]}},"moonshot-kimi-k2-instruct":{"id":"moonshot-kimi-k2-instruct","name":"Moonshot Kimi K2 Instruct","description":"Kimi model for long-context chat, coding, and agentic reasoning","family":"kimi-k2","attachment":false,"reasoning":false,"tool_call":true,"structured_output":false,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.574,"output":2.294}},"MiniMax-M2.5":{"id":"MiniMax-M2.5","name":"MiniMax-M2.5","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"temperature":true,"release_date":"2026-02-12","last_updated":"2026-02-12","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2}},"qwen2-5-14b-instruct":{"id":"qwen2-5-14b-instruct","name":"Qwen2.5 14B Instruct","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.431}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["low","medium","xhigh"]},{"type":"budget_tokens","max":262144}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"release_date":"2026-08-26","last_updated":"2026-08-26","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":131072},"cost":{"input":0.11875,"output":0.40073,"cache_read":0.01187,"cache_write":0.14844},"canonical_model_id":"alibaba/qwen3.8-flash"},"qwen2-5-vl-7b-instruct":{"id":"qwen2-5-vl-7b-instruct","name":"Qwen2.5-VL 7B Instruct","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09","last_updated":"2024-09","modalities":{"input":["text","image"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.287,"output":0.717}},"qwen-math-turbo":{"id":"qwen-math-turbo","name":"Qwen Math Turbo","description":"Efficient Qwen model for fast chat, extraction, and high-volume workloads","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2024-09-19","last_updated":"2024-09-19","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":4096,"output":3072},"cost":{"input":0.287,"output":0.861}},"qwen-long":{"id":"qwen-long","name":"Qwen Long","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-25","last_updated":"2025-01-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":10000000,"output":8192},"cost":{"input":0.072,"output":0.287}},"qwen3.6-max-preview":{"id":"qwen3.6-max-preview","name":"Qwen3.6 Max Preview","description":"Flagship Qwen model for complex reasoning, coding, and agentic workflows","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2026-04-20","last_updated":"2026-04-21","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":245800,"output":65536},"cost":{"input":1.32,"output":7.9,"cache_read":0.132}},"qwen-mt-turbo":{"id":"qwen-mt-turbo","name":"Qwen-MT Turbo","description":"Translation model for multilingual conversion, localization, and cross-language workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2025-01","last_updated":"2025-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":16384,"output":8192},"cost":{"input":0.101,"output":0.28}},"qwen3.5-397b-a17b":{"id":"qwen3.5-397b-a17b","name":"Qwen3.5 397B-A17B","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-02-16","last_updated":"2026-02-16","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":65536},"cost":{"input":0.172,"output":1.032,"reasoning":1.032,"tiers":[{"input":0.43,"output":2.58,"reasoning":2.58,"tier":{"type":"context","size":128000}}]}},"qwen3-8b":{"id":"qwen3-8b","name":"Qwen3 8B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.072,"output":0.287,"reasoning":0.717}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","description":"Open flagship GLM for long-horizon coding agents and million-token context work","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-06-13","last_updated":"2026-06-13","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":128000},"cost":{"input":1.1,"output":3.851,"cache_read":0.275,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.2"},"qwen-omni-turbo":{"id":"qwen-omni-turbo","name":"Qwen-Omni Turbo","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-01-19","last_updated":"2025-03-26","modalities":{"input":["text","image","audio","video"],"output":["text","audio"]},"open_weights":false,"limit":{"context":32768,"output":2048},"cost":{"input":0.058,"output":0.23,"input_audio":3.584,"output_audio":7.168}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","description":"Flagship GLM model for hybrid reasoning, coding, and agentic engineering","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":131072}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-04-14","last_updated":"2026-04-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":202752,"output":128000},"cost":{"input":0.825,"output":3.301,"cache_read":0.17,"tiers":[{"input":1.1,"output":3.851,"tier":{"type":"context","size":32000}}]}},"qwen3-omni-flash-realtime":{"id":"qwen3-omni-flash-realtime","name":"Qwen3-Omni Flash Realtime","description":"Qwen omni model for text, vision, audio, and multimodal agent tasks","family":"qwen","attachment":false,"reasoning":false,"tool_call":true,"temperature":true,"knowledge":"2024-04","release_date":"2025-09-15","last_updated":"2025-09-15","modalities":{"input":["text","image","audio"],"output":["text","audio"]},"open_weights":false,"limit":{"context":65536,"output":16384},"cost":{"input":0.23,"output":0.918,"input_audio":3.584,"output_audio":7.168}},"qwen3-asr-flash":{"id":"qwen3-asr-flash","name":"Qwen3-ASR Flash","description":"Speech transcription model for accurate audio-to-text and captioning workflows","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":false,"knowledge":"2024-04","release_date":"2025-09-08","last_updated":"2025-09-08","modalities":{"input":["audio"],"output":["text"]},"open_weights":false,"limit":{"context":53248,"output":4096},"cost":{"input":0.032,"output":0.032}},"deepseek-r1-distill-qwen-32b":{"id":"deepseek-r1-distill-qwen-32b","name":"DeepSeek R1 Distill Qwen 32B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":32768,"output":16384},"cost":{"input":0.287,"output":0.861}},"deepseek-r1":{"id":"deepseek-r1","name":"DeepSeek R1","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-01-01","last_updated":"2025-01-01","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","description":"Open MoE flagship with million-token context for coding and long agent runs","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.435,"output":0.87,"cache_read":0.003625},"canonical_model_id":"deepseek/deepseek-v4-pro"},"deepseek-r1-0528":{"id":"deepseek-r1-0528","name":"DeepSeek R1 0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-05-28","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":131072,"output":16384},"cost":{"input":0.574,"output":2.294}},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","description":"Qwen vision-language model for visual reasoning, documents, and agent tasks","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":81920}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-04-02","last_updated":"2026-04-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":65536},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":256000}}],"context_over_200k":{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5}}},"qwen3-14b":{"id":"qwen3-14b","name":"Qwen3 14B","description":"Qwen instruction model for multilingual chat, reasoning, and tool use","family":"qwen","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":38912}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2025-04","last_updated":"2025-04","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":131072,"output":8192},"cost":{"input":0.144,"output":0.574,"reasoning":1.434}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","description":"Flagship GLM model for long-horizon coding, agents, and complex project delivery","family":"glm","attachment":false,"reasoning":true,"reasoning_options":[{"type":"effort","values":["low","high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"release_date":"2026-08-14","last_updated":"2026-08-14","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":131072},"cost":{"input":1.1,"output":3.851,"cache_read":0.275,"cache_write":0},"canonical_model_id":"zhipuai/glm-5.3"},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","description":"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding","family":"qwen","attachment":true,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"budget_tokens","max":262144}],"tool_call":true,"temperature":true,"knowledge":"2025-04","release_date":"2026-06-02","last_updated":"2026-06-02","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":false,"limit":{"context":1000000,"output":64000},"cost":{"input":0.5,"output":3,"cache_read":0.05,"cache_write":0.625,"tiers":[{"input":2,"output":6,"cache_read":0.2,"cache_write":2.5,"tier":{"type":"context","size":128000}}]},"canonical_model_id":"alibaba/qwen3.7-plus"},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","description":"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work","family":"deepseek-flash","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"},{"type":"effort","values":["high","max"]}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":true,"knowledge":"2025-05","release_date":"2026-04-24","last_updated":"2026-04-24","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":1000000,"output":384000},"cost":{"input":0.14,"output":0.28,"cache_read":0.0028},"canonical_model_id":"deepseek/deepseek-v4-flash"},"qwen-vl-ocr":{"id":"qwen-vl-ocr","name":"Qwen-VL OCR","description":"OCR model for extracting structured text from documents and screenshots","family":"qwen","attachment":false,"reasoning":false,"tool_call":false,"temperature":true,"knowledge":"2024-04","release_date":"2024-10-28","last_updated":"2026-09-11","modalities":{"input":["text","image"],"output":["text"]},"open_weights":false,"limit":{"context":34096,"output":4096},"cost":{"input":0.043,"output":0.072}},"siliconflow/deepseek-v3-0324":{"id":"siliconflow/deepseek-v3-0324","name":"siliconflow/deepseek-v3-0324","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":false,"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2024-12-26","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":163840},"cost":{"input":0.25,"output":1}},"siliconflow/deepseek-v3.1-terminus":{"id":"siliconflow/deepseek-v3.1-terminus","name":"siliconflow/deepseek-v3.1-terminus","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-09-29","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":1}},"siliconflow/deepseek-r1-0528":{"id":"siliconflow/deepseek-r1-0528","name":"siliconflow/deepseek-r1-0528","description":"DeepSeek reasoning model for multi-step analysis, math, coding, and tools","family":"deepseek-thinking","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-05-28","last_updated":"2025-11-25","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":32768},"cost":{"input":0.5,"output":2.18}},"siliconflow/deepseek-v3.2":{"id":"siliconflow/deepseek-v3.2","name":"siliconflow/deepseek-v3.2","description":"DeepSeek chat model for instruction following, coding, and analysis","family":"deepseek","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"structured_output":true,"temperature":true,"release_date":"2025-12-03","last_updated":"2025-12-03","modalities":{"input":["text"],"output":["text"]},"open_weights":false,"limit":{"context":163840,"output":65536},"cost":{"input":0.27,"output":0.42}},"kimi/kimi-k2.5":{"id":"kimi/kimi-k2.5","name":"kimi/kimi-k2.5","description":"Kimi multimodal agent model for visual understanding, coding, and planning","family":"kimi-k2","attachment":false,"reasoning":true,"reasoning_options":[{"type":"toggle"}],"tool_call":true,"interleaved":{"field":"reasoning_content"},"structured_output":true,"temperature":false,"knowledge":"2025-01","release_date":"2026-01-27","last_updated":"2026-01-27","modalities":{"input":["text","image","video"],"output":["text"]},"open_weights":true,"limit":{"context":262144,"output":262144},"cost":{"input":0.6,"output":3,"cache_read":0.1}},"MiniMax/MiniMax-M2.7":{"id":"MiniMax/MiniMax-M2.7","name":"MiniMax-M2.7","description":"MiniMax model for chat, coding, office work, and agentic tasks","family":"minimax","attachment":false,"reasoning":true,"reasoning_options":[],"tool_call":true,"temperature":true,"release_date":"2026-03-18","last_updated":"2026-03-18","modalities":{"input":["text"],"output":["text"]},"open_weights":true,"limit":{"context":204800,"output":131072},"cost":{"input":0.3,"output":1.2,"cache_read":0.06,"cache_write":0.375}}}}} as const diff --git a/packages/opencode/src/provider/output-token-budget.ts b/packages/opencode/src/provider/output-token-budget.ts index 24700e9731..16d736468c 100644 --- a/packages/opencode/src/provider/output-token-budget.ts +++ b/packages/opencode/src/provider/output-token-budget.ts @@ -2,6 +2,7 @@ import type { Provider } from "./provider" import { Log } from "@/util/log" import { Token } from "@/util/token" +import { bigintReplacer } from "@/altimate/util/json" const log = Log.create({ service: "provider.output-token-budget" }) @@ -321,7 +322,7 @@ function serializeForEstimate( mediaTokens += mediaContainers?.get(child) ?? 0 ancestors.push(child) } - return child + return bigintReplacer(key, child) }) ?? "" return { text, mediaTokens } } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 3115c1164a..2a16d829e4 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -138,46 +138,218 @@ export namespace Provider { return Number(match[1]) >= 5 && !modelID.startsWith("gpt-5-mini") } - function wrapSSE(res: Response, ms: number, ctl: AbortController) { - if (typeof ms !== "number" || ms <= 0) return res - if (!res.body) return res - if (!res.headers.get("content-type")?.includes("text/event-stream")) return res + // altimate_change start — one provider-agnostic idle watchdog, including Bedrock event streams + function modelOutputDetector(contentType: string) { + const decoder = new TextDecoder() + let prefix = "" + let prefixBytes = 0 + let truncated = false + let firstChar = true + let carriageReturn = false + let data = false + let ping = false + let otherData = false + let eventOutput: boolean | undefined + let pending: Uint8Array = new Uint8Array() + let headersLength: number | undefined + let remaining = 0 + let frameOutput = false + return (chunk: Uint8Array) => { + let output = false + if (contentType.includes("text/event-stream")) { + // SSE fields apply to the whole block, even when event follows data. + // Ignore leading value whitespace and retain at most 64 bytes per line. + // Beyond that prefix, only remember whether non-whitespace arrived. + for (const char of decoder.decode(chunk, { stream: true })) { + if (firstChar) { + firstChar = false + if (char === "\uFEFF") continue + } + if (carriageReturn && char === "\n") { + carriageReturn = false + continue + } + carriageReturn = char === "\r" + if (char === "\n" || char === "\r") { + if (!prefix) { + if (data && (eventOutput ?? (!ping || otherData))) output = true + data = ping = otherData = false + eventOutput = undefined + } else if (prefix === "data" || prefix.startsWith("data:")) { + const value = prefix.slice(5).trim() + data = true + // Multiple nonempty data lines cannot be exactly one ping object. + otherData ||= truncated || (value !== "" && (value !== '{"type":"ping"}' || ping)) + ping ||= value === '{"type":"ping"}' + } else if (prefix === "event" || prefix.startsWith("event:")) { + eventOutput = truncated || !/^(ping|keepalive|heartbeat)$/i.test(prefix.slice(6).trim()) + } + prefix = "" + prefixBytes = 0 + truncated = false + } else if ((prefix === "data:" || prefix === "event:") && !char.trim()) { + continue + } else if (prefixBytes < 64) { + const code = char.codePointAt(0)! + prefixBytes += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4 + if (prefixBytes <= 64) prefix += char + else truncated ||= !!char.trim() + } else { + truncated ||= !!char.trim() + } + } + return output + } + + let offset = 0 + while (offset < chunk.length) { + if (headersLength === undefined && remaining > 0) { + // Skip payload and CRC bytes without retaining or decoding them. + const count = Math.min(remaining, chunk.length - offset) + remaining -= count + offset += count + if (frameOutput) output = true + continue + } + const length = headersLength ?? 12 + const count = Math.min(length - pending.length, chunk.length - offset) + const bytes = new Uint8Array(pending.length + count) + bytes.set(pending) + bytes.set(chunk.subarray(offset, offset + count), pending.length) + pending = bytes + offset += count + if (pending.length < length) break + if (headersLength === undefined) { + const prelude = new DataView(pending.buffer, pending.byteOffset, pending.byteLength) + const total = prelude.getUint32(0) + const headers = prelude.getUint32(4) + if (total < 16 || headers > total - 16) { + // Framing is unknown: let the SDK handle it and conservatively count output. + pending = new Uint8Array() + return true + } + headersLength = headers + remaining = total - 12 - headers + } else { + frameOutput = eventStreamFrameHasOutput(pending) + if (frameOutput) output = true + headersLength = undefined + } + pending = new Uint8Array() + } + return output + } + } + + function eventStreamFrameHasOutput(headers: Uint8Array) { + const view = new DataView(headers.buffer, headers.byteOffset, headers.byteLength) + const decoder = new TextDecoder("utf-8", { fatal: true }) + let offset = 0 + let eventType: string | undefined + try { + while (offset < headers.length) { + const nameLength = view.getUint8(offset++) + if (!nameLength || offset + nameLength >= headers.length) return true + const name = decoder.decode(headers.subarray(offset, offset + nameLength)) + offset += nameLength + const type = view.getUint8(offset++) + let length: number + if (type === 6 || type === 7) { + length = view.getUint16(offset) + offset += 2 + } else { + const fixed = [0, 0, 1, 2, 4, 8, undefined, undefined, 8, 16][type] + if (fixed === undefined) return true + length = fixed + } + if (offset + length > headers.length) return true + if (name === ":event-type") { + if (type !== 7 || eventType !== undefined) return true + eventType = decoder.decode(headers.subarray(offset, offset + length)) + } + offset += length + } + } catch { + return true + } + return !/^(heartbeat|ping|keepalive|metadata)$/i.test(eventType ?? "") + } + + function wrapModelStream(res: Response, ms: number, ctl: AbortController, signal: AbortSignal | null) { + if (typeof ms !== "number" || ms <= 0 || !res.body) return res + const contentType = (res.headers.get("content-type") ?? "").toLowerCase() + if (!contentType.includes("text/event-stream") && !contentType.includes("application/vnd.amazon.eventstream")) + return res const reader = res.body.getReader() + const hasModelOutput = modelOutputDetector(contentType) + let deadline: number | undefined + let cancelled = false + // Once bytes reach the SDK, they may emit text, reasoning, or execute a tool. + // Be conservative even for protocol-only chunks: replay is no longer safe. + let emitted = false + let cancelPending: (() => void) | undefined + const cancelReader = (reason: unknown) => reader.cancel(reason).catch(() => {}) const body = new ReadableStream({ async pull(ctrl) { + const remaining = deadline === undefined ? ms : deadline - performance.now() + deadline ??= performance.now() + ms const part = await new Promise>>((resolve, reject) => { - const id = setTimeout(() => { - // altimate_change start — surface stalled SSE reads as ProviderError.ResponseStreamError - const err = new ProviderError.ResponseStreamError("SSE read timed out") - // altimate_change end - ctl.abort(err) - void reader.cancel(err) - reject(err) - }, ms) - - reader.read().then( - (part) => { - clearTimeout(id) - resolve(part) - }, - (err) => { - clearTimeout(id) - reject(err) - }, - ) + const cleanup = () => { + clearTimeout(id) + signal?.removeEventListener("abort", abort) + cancelPending = undefined + } + const fail = (error: unknown) => { + cleanup() + reject(error) + } + const abort = () => { + fail(signal?.reason) + void cancelReader(signal?.reason) + } + const expire = () => { + const error = new ProviderError.StreamIdleTimeoutError(ms, emitted) + // Preserve the timeout cause and replay safety before aborting the underlying fetch. + fail(error) + ctl.abort(error) + void cancelReader(error) + } + const id = setTimeout(expire, Math.max(0, remaining)) + cancelPending = () => { + cleanup() + resolve({ done: true, value: undefined }) + } + signal?.addEventListener("abort", abort, { once: true }) + if (signal?.aborted) { + abort() + return + } + // Already-buffered protocol traffic must not starve a zero-delay timer. + if (remaining <= 0) { + expire() + return + } + reader.read().then((part) => { + cleanup() + resolve(part) + }, fail) }) + if (cancelled) return if (part.done) { ctrl.close() return } - + if (part.value.byteLength > 0) emitted = true + if (hasModelOutput(part.value)) deadline = performance.now() + ms ctrl.enqueue(part.value) }, async cancel(reason) { + cancelled = true + cancelPending?.() ctl.abort(reason) - await reader.cancel(reason) + await cancelReader(reason) }, }) @@ -187,6 +359,7 @@ export namespace Provider { statusText: res.statusText, }) } + // altimate_change end // altimate_change start — abort fetches when response headers do not arrive in time function timeoutController(ms: number) { @@ -1963,8 +2136,17 @@ export namespace Provider { if (existing) return existing const customFetch = options["fetch"] - const chunkTimeout = options["chunkTimeout"] || DEFAULT_CHUNK_TIMEOUT + // altimate_change start — environment override controls the single stream watchdog (0 disables) + // Precedence: valid ALTIMATE_STREAM_IDLE_TIMEOUT_MS (0 disables), provider chunkTimeout, then 300000ms. + const idleOverride = Env.get("ALTIMATE_STREAM_IDLE_TIMEOUT_MS")?.trim() + const parsedIdle = idleOverride ? Number(idleOverride) : NaN + const chunkTimeout = Number.isFinite(parsedIdle) && parsedIdle >= 0 && parsedIdle <= 2_147_483_647 + ? parsedIdle === 0 ? 0 : Math.max(1, Math.floor(parsedIdle)) + : options["chunkTimeout"] || DEFAULT_CHUNK_TIMEOUT + // altimate_change end + // altimate_change start — first-byte deadlines are opt-in unless the provider supplies a default const headerTimeout = options["headerTimeout"] + // altimate_change end delete options["chunkTimeout"] delete options["headerTimeout"] @@ -2014,15 +2196,34 @@ export namespace Provider { } } - const res = await (async () => - fetchFn(input, { - ...opts, - // @ts-ignore see here: https://github.com/oven-sh/bun/issues/16682 - timeout: false, - }))().finally(() => headerTimeoutCtl?.clear()) + // altimate_change start — hooks may ignore cancellation while refreshing authentication + const res = await new Promise((resolve, reject) => { + const abort = () => reject(combined?.reason) + if (combined?.aborted) { + abort() + return + } + combined?.addEventListener("abort", abort, { once: true }) + void Promise.resolve() + .then(() => + fetchFn(input, { + ...opts, + // @ts-ignore see here: https://github.com/oven-sh/bun/issues/16682 + timeout: false, + }), + ) + .then((response) => { + if (combined?.aborted) void response.body?.cancel(combined.reason).catch(() => {}) + resolve(response) + }, reject) + .finally(() => combined?.removeEventListener("abort", abort)) + }).finally(() => headerTimeoutCtl?.clear()) + // altimate_change end if (!chunkAbortCtl) return res - return wrapSSE(res, chunkTimeout, chunkAbortCtl) + // altimate_change start — streaming provider response bodies share the same idle watchdog + return wrapModelStream(res, chunkTimeout, chunkAbortCtl, combined) + // altimate_change end } const bundledFn = BUNDLED_PROVIDERS[model.api.npm] @@ -2094,8 +2295,61 @@ export namespace Provider { const language = s.modelLoaders[model.providerID] ? await s.modelLoaders[model.providerID](sdk, model.api.id, { ...provider.options, ...model.options }, model) : sdk.languageModel(model.api.id) - s.models.set(key, language) - return language + // altimate_change start — replay safety follows decoded model output, never SSE heartbeat bytes + const wrapped: LanguageModelV2 = { + get specificationVersion() { + return language.specificationVersion + }, + get provider() { + return language.provider + }, + get modelId() { + return language.modelId + }, + get supportedUrls() { + return language.supportedUrls + }, + doGenerate: (options) => language.doGenerate(options), + doStream: async (options) => { + const result = await language.doStream(options) + const reader = result.stream.getReader() + let emitted = false + const failure = (error: unknown) => + error instanceof ProviderError.StreamIdleTimeoutError + ? new ProviderError.StreamIdleTimeoutError(error.ms, emitted) + : error + return { + ...result, + stream: new ReadableStream({ + async pull(controller) { + try { + const part = await reader.read() + if (part.done) { + controller.close() + return + } + const value = part.value + if ( + ((value.type === "text-delta" || value.type === "reasoning-delta") && value.delta.length > 0) || + value.type === "tool-call" || + value.type === "tool-input-start" + ) + emitted = true + controller.enqueue(value.type === "error" ? { ...value, error: failure(value.error) } : value) + } catch (error) { + controller.error(failure(error)) + } + }, + cancel(reason) { + return reader.cancel(reason) + }, + }), + } + }, + } + s.models.set(key, wrapped) + return wrapped + // altimate_change end } catch (e) { if (e instanceof NoSuchModelError) throw new ModelNotFoundError( diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 613e2a306c..7602d92af5 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -736,7 +736,8 @@ export namespace ProviderTransform { return null } - function anthropicOmitsThinking(apiId: string) { + /** Models that always think: they reject `thinking.type: "disabled"` and only accept adaptive thinking. */ + export function anthropicOmitsThinking(apiId: string) { return anthropicOpus47OrLater(apiId) || apiId.includes("fable-5") } @@ -1527,6 +1528,13 @@ export namespace ProviderTransform { // altimate_change end export function schema(model: Provider.Model, schema: JSONSchema.BaseSchema | JSONSchema7): JSONSchema7 { + // altimate_change start — omit the tool schema dialect declaration for Anthropic, Bedrock, and Vertex + if (["@ai-sdk/anthropic", "@ai-sdk/amazon-bedrock", "@ai-sdk/google-vertex/anthropic"].includes(model.api.npm)) { + const { $schema, ...rest } = schema + schema = rest + } + // altimate_change end + /* if (["openai", "azure"].includes(providerID)) { if (schema.type === "object" && schema.properties) { diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts index 1bc7367ab3..b711dbe4d9 100644 --- a/packages/opencode/src/server/routes/session.ts +++ b/packages/opencode/src/server/routes/session.ts @@ -20,6 +20,10 @@ import { Log } from "../../util/log" // altimate_change start — client trace propagation import { TraceContext } from "@/altimate/observability/trace-context" // altimate_change end +// altimate_change start — run-scoped request interruption and effort overrides +import { withBudgetControl } from "@/altimate/session/run-budget-control" +import { RunBudget } from "@/altimate/run-budget" +// altimate_change end // altimate_change start — upstream_fix: bridge merge wired routes to Effect-TS Permission, but the runtime // asks come from PermissionNext. Use PermissionNext here so this deprecated reply route hits the same // pending map. See packages/opencode/src/server/routes/permission.ts for the full explanation. @@ -397,7 +401,12 @@ export const SessionRoutes = lazy(() => }), ), async (c) => { - await SessionPrompt.cancel(c.req.valid("param").sessionID) + // altimate_change start — carry harness deadline provenance through the SDK abort endpoint + await SessionPrompt.cancel( + c.req.valid("param").sessionID, + c.req.header("x-altimate-run-budget") === "hard-deadline" ? new RunBudget.HarnessDeadline() : undefined, + ) + // altimate_change end return c.json(true) }, ) @@ -929,11 +938,21 @@ export const SessionRoutes = lazy(() => // A noReply prompt runs no turn, so binds nothing; a prompt that fails before its loop is released. const messageID = body.messageID ?? MessageID.ascending() TraceContext.bind(messageID, body.noReply ? undefined : c.req.header("traceparent")) - const msg = await SessionPrompt.prompt({ ...body, sessionID, messageID }).catch((error) => { + // altimate_change start — save the soft reminder before interrupting, with run-scoped effort + const msg = await withBudgetControl( + { + sessionID, + control: c.req.header("x-altimate-run-budget"), + noReply: body.noReply, + queryDeadline: c.req.header("x-altimate-run-query-deadline"), + }, + () => SessionPrompt.prompt({ ...body, sessionID, messageID }), + ).catch((error) => { TraceContext.release(sessionID, [messageID]) throw error }) // altimate_change end + // altimate_change end stream.write(JSON.stringify(msg)) }) }, @@ -1020,11 +1039,20 @@ export const SessionRoutes = lazy(() => // a command that fails before its loop is released const messageID = body.messageID ?? MessageID.ascending() TraceContext.bind(messageID, c.req.header("traceparent")) - const msg = await SessionPrompt.command({ ...body, sessionID, messageID }).catch((error) => { + // altimate_change start — command runs share the same effort lifetime as message runs + const msg = await withBudgetControl( + { + sessionID, + control: c.req.header("x-altimate-run-budget"), + queryDeadline: c.req.header("x-altimate-run-query-deadline"), + }, + () => SessionPrompt.command({ ...body, sessionID, messageID }), + ).catch((error) => { TraceContext.release(sessionID, [messageID]) throw error }) // altimate_change end + // altimate_change end return c.json(msg) }, ) diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index e5ff81ec39..d422b55857 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -1358,6 +1358,35 @@ export namespace Server { // The TUI's `/traces` for the IDE extension, which runs this CLI headless: a page of the // session traces and one trace's self-contained viewer page. Trace content carries prompts and // tool output, so a browser origin is refused on the same terms as the workspace routes. + .get("/altimate/trace/event", async (c) => { + const refused = browserOriginRefusal( + "Traces", + c.req.header("origin"), + c.req.header("host"), + undefined, + c.req.header("sec-fetch-site"), + ) + if (refused) return c.json(refused.body, refused.status) + const { LLMRequestEvent } = await import("../altimate/observability/tracing") + c.header("Cache-Control", "no-cache, no-transform") + c.header("X-Accel-Buffering", "no") + return streamSSE(c, async (stream) => { + const unsubscribe = Bus.subscribe(LLMRequestEvent, (event) => + stream.writeSSE({ data: JSON.stringify(event) }), + ) + await stream.writeSSE({ data: JSON.stringify({ type: "server.connected", properties: {} }) }) + const heartbeat = setInterval(() => { + void stream.writeSSE({ data: JSON.stringify({ type: "server.heartbeat", properties: {} }) }) + }, 10_000) + await new Promise((resolve) => + stream.onAbort(() => { + clearInterval(heartbeat) + unsubscribe() + resolve() + }), + ) + }) + }) .get("/altimate/trace", async (c) => { const refused = browserOriginRefusal( "Traces", diff --git a/packages/opencode/src/session/abortable-stream.ts b/packages/opencode/src/session/abortable-stream.ts new file mode 100644 index 0000000000..f1db0727dd --- /dev/null +++ b/packages/opencode/src/session/abortable-stream.ts @@ -0,0 +1,35 @@ +function waitForStream(pending: Promise, signal: AbortSignal): Promise { + let onAbort!: () => void + const aborted = new Promise((_, reject) => { + onAbort = () => reject(signal.reason) + signal.addEventListener("abort", onAbort, { once: true }) + if (signal.aborted) onAbort() + }) + return Promise.race([pending, aborted]).finally(() => signal.removeEventListener("abort", onAbort)) +} + +/** Cancel even when provider setup, reads, or iterator cleanup ignore the signal. */ +export async function* abortableStream(open: () => Promise>, signal: AbortSignal) { + signal.throwIfAborted() + const opening = Promise.resolve().then(() => { + signal.throwIfAborted() + return open() + }).then((stream) => stream[Symbol.asyncIterator]()) + let completed = false + try { + const iterator = await waitForStream(opening, signal) + while (true) { + const item = await waitForStream(iterator.next(), signal) + signal.throwIfAborted() + if (item.done) { + completed = true + return + } + yield item.value + } + } finally { + // An async generator may queue return() behind its stalled next(). + // Release it when possible without delaying session cleanup or finalization. + if (!completed) void opening.then((iterator) => iterator.return?.()).catch(() => {}) + } +} diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 3388f8d034..d2f9d05cf7 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -1288,6 +1288,10 @@ export namespace SessionCompaction { abort: AbortSignal auto: boolean overflow?: boolean + // altimate_change start - let the prompt loop retain request-scoped answers across compaction + onContinuation?: (messageID: MessageID) => void + recoverCommittedAnswer?: boolean + // altimate_change end // altimate_change start — keep nudge delivery scoped to the active prompt generation nudgeGeneration?: NudgeArbiter.Generation // altimate_change end @@ -1441,6 +1445,9 @@ export namespace SessionCompaction { // altimate_change start — keep nudge delivery scoped to this prompt generation nudgeGeneration: input.nudgeGeneration, // altimate_change end + // altimate_change start - the prompt owns the current request's committed answer + recoverCommittedAnswer: input.recoverCommittedAnswer, + // altimate_change end }) // Allow plugins to inject context or replace compaction prompt const compacting = await Plugin.trigger( @@ -1589,7 +1596,8 @@ When constructing the summary, try to stick to this template: // A "continue" result was previously committed regardless of whether the // summary step produced any text — an empty summary erases history (the // post-compaction amnesia signature). Guard the commit: retry ONCE with - // identical input, then mark the summary message as errored and stop. + // identical input, then stop with a recoverable cause for a committed answer + // or mark the summary message as errored when there is no committed answer. const summaryHasText = () => MessageV2.get({ sessionID: input.sessionID, messageID: msg.id }).parts.some( (part) => part.type === "text" && part.text.trim().length > 0, @@ -1599,16 +1607,31 @@ When constructing the summary, try to stick to this template: log.warn("compaction summary empty, retrying once", { sessionID: input.sessionID }) result = await processor.process(summarizerInput) if (result === "continue" && !summaryHasText()) { - processor.message.error = new NamedError.Unknown({ + const error = new NamedError.Unknown({ message: "Compaction summarizer produced no summary text after retry", }).toObject() - processor.message.finish = "error" + if (input.recoverCommittedAnswer && !input.abort.aborted) { + processor.message.metadata = { + ...processor.message.metadata, + answer_commit_echo_error: error, + } + } else { + processor.message.error = error + processor.message.finish = "error" + } await Session.updateMessage(processor.message) result = "stop" } } // altimate_change end + // altimate_change start - exit without a fatal summary or continuation before the prompt publishes the answer + if (input.recoverCommittedAnswer && processor.message.metadata?.answer_commit_echo_error) { + compactionAttempts.delete(input.sessionID) + return "stop" + } + // altimate_change end + if (result === "compact") { processor.message.error = new MessageV2.ContextOverflowError({ message: replay @@ -1697,6 +1720,9 @@ When constructing the summary, try to stick to this template: }) } // altimate_change end + // altimate_change start - report the persisted replay's identity, independent of its part flags + input.onContinuation?.(replayMsg.id) + // altimate_change end } else { // altimate_change start — the continue message // carries the original format/tools/system/variant, exactly as the replay @@ -1783,6 +1809,9 @@ When constructing the summary, try to stick to this template: end: Date.now(), }, }) + // altimate_change start - report the persisted continuation's identity + input.onContinuation?.(continueMsg.id) + // altimate_change end } } if (processor.message.error) { diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 2db11be27b..aee9ca8898 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -1,3 +1,9 @@ +// altimate_change start — release session-owned scratch stores on deletion +import { closeScratch } from "@/altimate/native/connections/scratch" +// altimate_change end +// altimate_change start — upstream_fix: normalize native integers before part persistence and events +import { normalizeBigInts } from "@/altimate/util/json" +// altimate_change end import { Slug } from "@opencode-ai/core/util/slug" import path from "path" import { BusEvent } from "@/bus/bus-event" @@ -39,6 +45,34 @@ import { AppRuntime } from "@/effect/app-runtime" import { ProjectV2 } from "@opencode-ai/core/project" // altimate_change end +// altimate_change start — upstream_fix: keep stored, published, and returned parts JSON-safe +async function persistPart(part: MessageV2.Part) { + part = normalizeBigInts(part, "safe-number") + const { id, messageID, sessionID, ...data } = part + const time = Date.now() + Database.use((db) => { + db.insert(PartTable) + .values({ + id, + message_id: messageID, + session_id: sessionID, + time_created: time, + data, + }) + .onConflictDoUpdate({ target: PartTable.id, set: { data } }) + .run() + Database.effect(() => + Bus.publish(MessageV2.Event.PartUpdated, { + sessionID: part.sessionID, + part: structuredClone(part), + time: Date.now(), + }), + ) + }) + return part +} +// altimate_change end + export namespace Session { const log = Log.create({ service: "session" }) @@ -719,6 +753,9 @@ export namespace Session { await remove(child.id) } await unshare(sessionID).catch(() => {}) + // altimate_change start — release only the deleted session's scratch store + await closeScratch(sessionID) + // altimate_change end // CASCADE delete handles messages and parts automatically Database.use((db) => { db.delete(SessionTable).where(eq(SessionTable.id, sessionID)).run() @@ -803,30 +840,9 @@ export namespace Session { const UpdatePartInput = MessageV2.Part - export const updatePart = fn(UpdatePartInput, async (part) => { - const { id, messageID, sessionID, ...data } = part - const time = Date.now() - Database.use((db) => { - db.insert(PartTable) - .values({ - id, - message_id: messageID, - session_id: sessionID, - time_created: time, - data, - }) - .onConflictDoUpdate({ target: PartTable.id, set: { data } }) - .run() - Database.effect(() => - Bus.publish(MessageV2.Event.PartUpdated, { - sessionID: part.sessionID, - part: structuredClone(part), - time: Date.now(), - }), - ) - }) - return part - }) + // altimate_change start — upstream_fix: normalize tool data at the shared persistence boundary + export const updatePart = fn(UpdatePartInput, persistPart) + // altimate_change end export const updatePartDelta = fn( z.object({ diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index 0e5b5b295e..846c2e8ea2 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -41,6 +41,19 @@ import type { LLMEvent } from "@opencode-ai/llm" import { LLMAISDK } from "./llm/ai-sdk" import { TraceContext } from "@/altimate/observability/trace-context" // altimate_change end +// altimate_change start — capture effective request inputs through identity-bearing trace events +import { asSchema } from "ai" +import { normalizeBigInts } from "@/altimate/util/json" +import { randomUUIDv7 } from "bun" +import { Bus } from "@/bus" +import { LLMRequestEvent } from "@/altimate/observability/tracing" +// altimate_change end +// altimate_change start — run deadlines override reasoning effort for each remaining request +import { applyBudgetEffort, budgetMessages } from "@/altimate/session/budget-effort" +import { activeRun, effortOverride, hasActiveRuns, toolsDisabled } from "@/altimate/session/run-budget-effort" +import { Session } from "@/session" +import { SessionID } from "@/session/schema" +// altimate_change end export namespace LLM { const log = Log.create({ service: "llm" }) @@ -48,6 +61,9 @@ export namespace LLM { export type StreamInput = { user: MessageV2.User + // altimate_change start — identify the assistant generation independently of its user turn + messageID?: string + // altimate_change end sessionID: string model: Provider.Model agent: Agent.Info @@ -65,6 +81,20 @@ export namespace LLM { export type StreamOutput = StreamTextResult + // altimate_change start — task subagents inherit a live ancestor's run effort without retaining state + async function sessionRunBudget(sessionID: string) { + if (!hasActiveRuns()) return undefined + const visited = new Set() + let current: string | undefined = sessionID + while (current && !visited.has(current)) { + if (activeRun(current)) return { effort: effortOverride(current), toolsDisabled: toolsDisabled(current) } + visited.add(current) + current = (await Session.get(SessionID.make(current)).catch(() => undefined))?.parentID + } + return undefined + } + // altimate_change end + // altimate_change start — Altimate Base gateway session-scoped abuse control export function withManagedSessionHeaders( providerID: string, @@ -80,6 +110,10 @@ export namespace LLM { // altimate_change end export async function stream(input: StreamInput) { + // altimate_change start — normalize native tool values before estimation and SDK serialization + // Keep the stored tool result untouched and preserve binary/URL media objects. + input = { ...input, messages: normalizeBigInts(input.messages) } + // altimate_change end const l = log .clone() .tag("providerID", input.model.providerID) @@ -230,7 +264,11 @@ export namespace LLM { ) // altimate_change end - const tools = await resolveTools(input) + // altimate_change start — finalization must have no executable catalog, even for unsolicited tool calls + const runBudget = await sessionRunBudget(input.sessionID) + const tools: Record = runBudget?.toolsDisabled ? {} : await resolveTools(input) + const toolChoice = runBudget?.toolsDisabled ? "none" : input.toolChoice + // altimate_change end // altimate_change start — ensure tool definitions exist for all tool_use blocks in history // The Anthropic API (and proxies like LiteLLM) require every tool_use block in @@ -239,7 +277,7 @@ export namespace LLM { // tools absent from the current set. Add stub definitions for any missing tools. // Fixes: https://github.com/AltimateAI/altimate-code/issues/678 const referencedTools = toolNamesFromMessages(input.messages) - addHistoricalToolStubs(tools, referencedTools, input.toolChoice) + addHistoricalToolStubs(tools, referencedTools, toolChoice) // altimate_change end // altimate_change start — tool retrieval @@ -286,13 +324,56 @@ export namespace LLM { instructions: params.options.instructions, }), }) - const requestOptions = clampReasoningBudget(params.options, maxOutputTokens) + // altimate_change start — deadline effort wins configured variants and plugin overrides + const requestOptions = clampReasoningBudget( + runBudget?.effort ? applyBudgetEffort(input.model, params.options) : params.options, + maxOutputTokens, + ) + const requestMessages = budgetMessages(input.messages, input.model, requestOptions) + // altimate_change end // altimate_change end // altimate_change start — detect a toolless request once, for the message flattening below const declaresNoTools = Object.keys(tools).filter((x) => x !== "invalid").length === 0 // altimate_change end + // altimate_change start — record final system text and resolved tools before provider middleware + // Restrict capture to these fields: provider options/auth/headers never enter the event. + if (cfg.tracing?.enabled !== false) { + try { + await Bus.publish(LLMRequestEvent, { + requestID: randomUUIDv7(), + sessionID: input.sessionID, + messageID: input.messageID ?? input.user.id, + userMessageID: input.user.id, + agent: input.agent.name, + providerID: input.model.providerID, + modelID: input.model.id, + variant: input.small ? undefined : input.user.variant, + startTime: Date.now(), + system: [ + ...system, + ...input.messages.filter((message) => message.role === "system").map((message) => message.content), + ].join("\n\n"), + instructions: typeof requestOptions.instructions === "string" ? requestOptions.instructions : undefined, + tools: await Promise.all( + Object.entries(tools) + .sort(([a], [b]) => a.localeCompare(b)) + .map(async ([name, definition]) => ({ + name, + description: definition.description, + inputSchema: await asSchema(definition.inputSchema).jsonSchema, + active: name !== "invalid", + providerToolID: definition.type === "provider" ? definition.id : undefined, + })), + ), + }) + } catch { + l.debug("failed to capture LLM request inputs") + } + } + // altimate_change end + return streamText({ onError(error) { l.error("stream error", { @@ -332,7 +413,9 @@ export namespace LLM { // altimate_change end activeTools: Object.keys(tools).filter((x) => x !== "invalid"), tools, - toolChoice: input.toolChoice, + // altimate_change start — the finalization no-tools contract also suppresses historical stubs + toolChoice, + // altimate_change end // altimate_change start — use the plugin-selected reservation after context clamping maxOutputTokens, // altimate_change end @@ -358,7 +441,9 @@ export namespace LLM { // history, so they would otherwise send tool calls referencing functions the request // never declares. The Altimate gateway fails every provider in its fallback chain on // that shape and reports one generic error; see ProviderTransform.flattenToolParts. - ...(declaresNoTools ? ProviderTransform.flattenToolParts(input.messages) : input.messages), + // altimate_change start — keep interrupted reasoning in storage without sending empty disabled-thinking turns + ...(declaresNoTools ? ProviderTransform.flattenToolParts(requestMessages) : requestMessages), + // altimate_change end // altimate_change end ], model: wrapLanguageModel({ diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 152b75774b..7fc1f336a1 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -27,6 +27,79 @@ interface FetchDecompressionError extends Error { path: string } +// altimate_change start — keep committed-echo parsing helpers private at module scope +const echoNetworkCodes = new Set([ + "ECONNRESET", + "ECONNREFUSED", + "ETIMEDOUT", + "ESOCKETTIMEDOUT", + "EPIPE", + "ENOTFOUND", + "EAI_AGAIN", + "UND_ERR_SOCKET", + "UND_ERR_CONNECT_TIMEOUT", + "UND_ERR_HEADERS_TIMEOUT", + "UND_ERR_BODY_TIMEOUT", +]) + +const echoPolicyCodes = new Set([ + "policy_violation", + "content_filter", + "content_policy", + "content_policy_violation", + "guardrail_intervened", +]) + +function isEchoPolicyCode(code: string | undefined): boolean { + if (!code) return false + return echoPolicyCodes.has(code.toLowerCase()) || /^(content_policy.*|(safety|moderation)_.+)$/i.test(code) +} + +function responseErrorCode(responseBody: string | undefined, matches: (code: string) => boolean): string | undefined { + if (!responseBody) return undefined + const find = (value: unknown): string | undefined => { + if (!value || typeof value !== "object") return undefined + for (const [key, child] of Object.entries(value)) { + if (key === "code" && typeof child === "string" && matches(child)) return child + const nested = find(child) + if (nested) return nested + } + } + try { + return find(JSON.parse(responseBody)) + } catch { + return undefined + } +} + +function echoPolicyCode(responseBody: string | undefined): string | undefined { + return responseErrorCode(responseBody, isEchoPolicyCode) +} + +/** + * The provider's own error code: `error.code`, the root `code`, or the upstream code that the + * LiteLLM / Altimate Base gateway wraps under `error.provider_specific_fields.error.code`. + * Arbitrary nested diagnostic fields are never consulted. + */ +function providerErrorCode(responseBody: string | undefined): string | undefined { + if (!responseBody) return undefined + try { + const body = JSON.parse(responseBody) as { + code?: unknown + error?: { code?: unknown; provider_specific_fields?: { error?: { code?: unknown } } } + } + const candidates = [body?.error?.provider_specific_fields?.error?.code, body?.error?.code, body?.code] + return candidates.find((code): code is string => typeof code === "string") + } catch { + return undefined + } +} + +function isOverflowCode(code: string | undefined): boolean { + return !!code && ["context_length_exceeded", "content_length_exceeded"].includes(code.toLowerCase()) +} +// altimate_change end + export namespace MessageV2 { export function isMedia(mime: string) { return mime.startsWith("image/") || mime === "application/pdf" @@ -511,6 +584,9 @@ export namespace MessageV2 { structured: z.any().optional(), variant: z.string().optional(), finish: z.string().optional(), + // altimate_change start — retain recovered committed-answer echo failures on the assistant message + metadata: z.record(z.string(), z.unknown()).optional(), + // altimate_change end }).meta({ ref: "AssistantMessage", }) @@ -1143,10 +1219,14 @@ export namespace MessageV2 { }, { cause: e }, ).toObject() - case (e as SystemError)?.code === "ECONNRESET": + // altimate_change start — retain structured network codes for echo recovery + case echoNetworkCodes.has((e as SystemError)?.code ?? ""): + // altimate_change end return new MessageV2.APIError( { - message: "Connection reset by server", + // altimate_change start — preserve the established reset message and other transport details + message: (e as SystemError).code === "ECONNRESET" ? "Connection reset by server" : errorMessage(e), + // altimate_change end isRetryable: true, metadata: { code: (e as SystemError).code ?? "", @@ -1171,12 +1251,56 @@ export namespace MessageV2 { }, { cause: e }, ).toObject() + // altimate_change start — a request the provider never answered (no response headers before the + // first-byte deadline) is a transient stall: classify it as a retryable APIError that names the + // problem instead of surfacing it as an opaque UnknownError that ends the session. Nothing was + // streamed for that attempt, so re-issuing the request is safe. Mirrors upstream OpenCode + // (dev: message-v2.ts HeaderTimeoutError case) with clearer wording. + case e instanceof ProviderError.HeaderTimeoutError: + return new MessageV2.APIError( + { + message: `${ProviderError.MODEL_STOPPED_RESPONDING}: response headers timed out after ${Math.round(e.ms / 1000)}s`, + isRetryable: true, + metadata: { code: e.name, timeoutMs: String(e.ms) }, + }, + { cause: e }, + ).toObject() + // altimate_change end + // altimate_change start — retry idle streams only before output can persist or execute tools + case e instanceof ProviderError.StreamIdleTimeoutError: + return new MessageV2.APIError( + { + message: `${ProviderError.MODEL_STOPPED_RESPONDING}: ${e.message}`, + isRetryable: !e.emitted, + metadata: { code: e.name, timeoutMs: String(e.ms) }, + }, + { cause: e }, + ).toObject() + // altimate_change end case APICallError.isInstance(e): const parsed = ProviderError.parseAPICallError({ providerID: ctx.providerID, error: e, }) - if (parsed.type === "context_overflow") { + // altimate_change start — structured policy decisions override overflow text, while explicit overflow codes win + // Only the provider's own code decides overflow; a nested diagnostic code must not mask a policy denial. + // An explicit policy code also beats a 413 status: a policy denial must stay fatal, never a recoverable overflow. + const overflowCode = isOverflowCode(providerErrorCode(e.responseBody)) + const policyCode = echoPolicyCode(e.responseBody) + if (policyCode && !overflowCode) { + return new MessageV2.APIError( + { + message: parsed.message, + statusCode: e.statusCode, + isRetryable: parsed.type === "api_error" ? parsed.isRetryable : e.isRetryable, + responseHeaders: parsed.type === "api_error" ? parsed.responseHeaders : e.responseHeaders, + responseBody: parsed.responseBody, + metadata: { ...(parsed.type === "api_error" ? parsed.metadata : undefined), code: policyCode }, + }, + { cause: e }, + ).toObject() + } + if (parsed.type === "context_overflow" || overflowCode) { return new MessageV2.ContextOverflowError( { message: parsed.message, @@ -1185,6 +1309,7 @@ export namespace MessageV2 { { cause: e }, ).toObject() } + // altimate_change end return new MessageV2.APIError( { @@ -1193,7 +1318,11 @@ export namespace MessageV2 { isRetryable: parsed.isRetryable, responseHeaders: parsed.responseHeaders, responseBody: parsed.responseBody, - metadata: parsed.metadata, + // altimate_change start — SDK-wrapped socket failures retain their structural transport code + metadata: echoNetworkCodes.has((e.cause as SystemError)?.code ?? "") + ? { ...parsed.metadata, code: (e.cause as SystemError).code ?? "" } + : parsed.metadata, + // altimate_change end }, { cause: e }, ).toObject() @@ -1236,3 +1365,22 @@ export namespace MessageV2 { } } } + +// altimate_change start — recover committed echoes only from transient transport failures +export function isEchoTransportError(error: MessageV2.Assistant["error"]): boolean { + if (error?.name !== "APIError") return false + const { statusCode, responseBody, metadata, isRetryable } = error.data + // Provider decisions can be wrapped by a gateway with a transient HTTP status. + // Inspect structured codes, never prose in a message or response body. + if (echoPolicyCode(responseBody) || isEchoPolicyCode(metadata?.code)) return false + if (statusCode !== undefined) + return (statusCode >= 500 && statusCode < 600) || statusCode === 429 || statusCode === 408 + const code = metadata?.code + return ( + (code !== undefined && + (echoNetworkCodes.has(code) || + ["ZlibError", "ProviderHeaderTimeoutError", "ProviderStreamIdleTimeoutError"].includes(code))) || + (isRetryable && metadata?.url !== undefined && !responseBody) + ) +} +// altimate_change end diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 991f431313..bcbbabca6a 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -1,8 +1,14 @@ -import { MessageV2 } from "./message-v2" +// altimate_change start — module-scope echo transport predicate +import { MessageV2, isEchoTransportError } from "./message-v2" +// altimate_change end import { Log } from "@/util/log" // altimate_change start — client trace propagation import { TraceContext } from "@/altimate/observability/trace-context" // altimate_change end +// altimate_change start — request-only run budget interruption +import { RunBudget } from "@/altimate/run-budget" +import { defer } from "@/util/defer" +// altimate_change end import { Session } from "." import { Agent } from "@/agent/agent" import { Snapshot } from "@/snapshot" @@ -41,6 +47,42 @@ import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { Context, Effect, Layer } from "effect" import { isDeepStrictEqual } from "node:util" // altimate_change end +// altimate_change start — upstream_fix: cancel stalled provider reads independently of transport events +import { abortableStream } from "./abortable-stream" +// altimate_change end +// altimate_change start — upstream_fix: preserve child findings even when parent cancellation wins the tool-result race +import { interruptedTaskOutput } from "./task-output" + +async function interruptedToolPart(part: MessageV2.ToolPart, capTokens: number): Promise { + const state = part.state + if (state.status !== "running" && state.status !== "pending") return part + const metadata = state.status === "running" + ? ToolResultCap.capInterruptedMetadata(state.metadata, capTokens) + : { interrupted: true } + const time = { start: state.status === "running" ? state.time.start : Date.now(), end: Date.now() } + if ( + part.tool === "task" && state.status === "running" && + typeof state.metadata?.sessionId === "string" && typeof state.metadata.messageID === "string" + ) { + const output = await interruptedTaskOutput( + state.metadata.sessionId as SessionID, + state.metadata.messageID as MessageID, + ) + if (output) return { + ...part, + state: { + status: "completed", + input: state.input, + title: state.title ?? part.tool, + output: ToolResultCap.apply(output, capTokens).content, + metadata, + time, + }, + } + } + return { ...part, state: { ...state, status: "error", error: "Tool execution aborted", metadata, time } } +} +// altimate_change end export namespace SessionProcessor { const DOOM_LOOP_THRESHOLD = 3 @@ -256,6 +298,9 @@ export namespace SessionProcessor { // altimate_change start — keep nudge delivery scoped to the active prompt generation nudgeGeneration?: NudgeArbiter.Generation // altimate_change end + // altimate_change start - recover summarizer failures only when the prompt retains this request's committed answer + recoverCommittedAnswer?: boolean + // altimate_change end }) { // altimate_change start — Map (not plain object) so adversarial ids can // never resolve to inherited Object.prototype members. @@ -270,7 +315,12 @@ export namespace SessionProcessor { // omits input from tool-result/tool-error. Prefer that association over // heuristic identity matching; provider-executed tools fall back below. const executed = coerceToolCallID.settled(raw) - if (executed !== undefined) return coerceToolCallID.result(raw, executed) + // altimate_change start — protect completed tool results until their stream event is consumed + if (executed !== undefined) { + pendingToolExecutions-- + return coerceToolCallID.result(raw, executed) + } + // altimate_change end const candidates = coerceToolCallID.pending(raw) const matched = matchToolCallID(candidates, identity, toolcalls) if (candidates.length > 1 && matched === undefined) { @@ -281,6 +331,9 @@ export namespace SessionProcessor { // per-tool call counter for varied-input loop detection const toolCallCounts = new Map() // altimate_change end + // altimate_change start — execution remains pending until its result reaches the processor + let pendingToolExecutions = 0 + // altimate_change end let snapshot: string | undefined let blocked = false let attempt = 0 @@ -311,7 +364,11 @@ export namespace SessionProcessor { return toolcalls.get(matched ?? coerceToolCallID.peek(toolCallID)) }, beginToolExecution(toolCallID: string) { - return coerceToolCallID.beginExecution(toolCallID) + // altimate_change start — execution can begin before its streamed tool-call arrives + const execution = coerceToolCallID.beginExecution(toolCallID) + pendingToolExecutions++ + return execution + // altimate_change end }, finishToolExecution(execution: ToolExecution) { coerceToolCallID.finishExecution(execution) @@ -321,9 +378,14 @@ export namespace SessionProcessor { return id === undefined ? undefined : toolcalls.get(id) }, // altimate_change end - async process(streamInput: LLM.StreamInput) { + // altimate_change start - opt-in text buffering for committed-answer echoes + async process({ deferText, ...streamInput }: LLM.StreamInput & { deferText?: MessageV2.TextPart[] }) { + // altimate_change end log.info("process") needsCompaction = false + // altimate_change start - let the prompt's exit guard publish a recovered compaction answer + let recoveredCommittedAnswer = false + // altimate_change end // altimate_change start — resolve breaker config + arm state once per step. // ANNOTATE-ONLY by default (mode "annotate"): directives and the hard stop // require mode "armed" AND run mode. Skipped entirely for plan/review-class @@ -418,21 +480,55 @@ export namespace SessionProcessor { } } // altimate_change end + // altimate_change start — per-attempt run budget cancellation preserves session continuation while (true) { + // altimate_change start — cancel only this attempt, keeping the session and tools alive + const requestController = new AbortController() + let interruptRequested = false + let currentText: MessageV2.TextPart | undefined + const reasoningMap: Record = {} + const interruptRequest = () => { + if (!interruptRequested || requestController.signal.aborted || input.abort.aborted) return + if (pendingToolExecutions || [...toolcalls.values()].some((part) => part.state.status === "running")) return + requestController.abort(new DOMException("Time budget soft deadline interrupted generation", "AbortError")) + void Bus.publish(RunBudget.GenerationInterrupted, { sessionID: input.sessionID, timestamp: Date.now() }) + } + // altimate_change end try { - let currentText: MessageV2.TextPart | undefined - let reasoningMap: Record = {} + // altimate_change start — track decoded content separately from optional provider usage + let stepHasContent = false + // altimate_change end if (snapshot === undefined) { // altimate_change — upstream_fix: capture the pre-tool snapshot // before the LLM stream can execute provider-side tools. snapshot = await Snapshot.track() } // altimate_change start — stream with the (possibly directive-augmented) input - const stream = await LLM.stream(effectiveStreamInput) - // altimate_change end + using generation = defer(RunBudget.registerGeneration(input.sessionID, () => { + interruptRequested = true + interruptRequest() + })) + // upstream_fix: cancellation must also end a stalled stream open or read + const signal = AbortSignal.any([input.abort, effectiveStreamInput.abort, requestController.signal]) + const stream = abortableStream( + async () => (await LLM.stream({ ...effectiveStreamInput, abort: signal })).fullStream, + signal, + ) - for await (const value of stream.fullStream) { + for await (const value of stream) { + // altimate_change end input.abort.throwIfAborted() + // altimate_change start — content belongs to this step, not a prior step or retry + if (value.type === "start-step") stepHasContent = false + if ( + value.type === "text-start" || + value.type === "reasoning-start" || + value.type === "tool-input-start" || + value.type === "tool-call" + ) { + stepHasContent = true + } + // altimate_change end switch (value.type) { case "start": // altimate_change start — SessionStatus.set became async in v1.4.0; await so busy state flushes @@ -910,6 +1006,27 @@ export namespace SessionProcessor { break case "finish-step": { + // altimate_change start — flag a likely decode failure only when no content arrived; + // compatible providers can omit usage or map unfamiliar finish reasons to "other". + if ( + value.finishReason === "other" && + !stepHasContent && + !value.usage.inputTokens && + !value.usage.outputTokens && + !value.usage.totalTokens && + !value.usage.reasoningTokens && + !value.usage.cachedInputTokens && + !value.usage.inputTokenDetails?.noCacheTokens && + !value.usage.inputTokenDetails?.cacheReadTokens && + !value.usage.inputTokenDetails?.cacheWriteTokens && + !value.usage.outputTokenDetails?.textTokens && + !value.usage.outputTokenDetails?.reasoningTokens + ) { + throw new Error( + `Provider stream ended with no content or token usage (finish reason "other") for ${input.model.providerID}/${input.model.id}; the response likely could not be decoded`, + ) + } + // altimate_change end const usage = Session.getUsage({ model: input.model, usage: value.usage, @@ -1037,7 +1154,9 @@ export namespace SessionProcessor { tokens: usage.tokens, cost: usage.cost, }) - await Session.updateMessage(input.assistantMessage) + // altimate_change start - buffered echoes publish authoritative text before a finished message + if (!deferText || input.assistantMessage.error) await Session.updateMessage(input.assistantMessage) + // altimate_change end // altimate_change start — capture the snapshot diff as the generic, // command-agnostic mutation ground truth (also catches bash-mediated // writes like `sed -i`/heredocs, which emit no edit event). @@ -1120,13 +1239,19 @@ export namespace SessionProcessor { }, metadata: value.providerMetadata, } - await Session.updatePart(currentText) + // altimate_change start - retain the live part through text deltas and completion + if (deferText) deferText.push(currentText) + else await Session.updatePart(currentText) + // altimate_change end break case "text-delta": if (currentText) { currentText.text += value.text if (value.providerMetadata) currentText.metadata = value.providerMetadata + // altimate_change start - unvalidated echo deltas must not reach clients + if (deferText) break + // altimate_change end await Session.updatePartDelta({ sessionID: currentText.sessionID, messageID: currentText.messageID, @@ -1155,7 +1280,9 @@ export namespace SessionProcessor { end: Date.now(), } if (value.providerMetadata) currentText.metadata = value.providerMetadata - await Session.updatePart(currentText) + // altimate_change start - publish the echo only after finish validation + if (!deferText) await Session.updatePart(currentText) + // altimate_change end } currentText = undefined break @@ -1169,98 +1296,138 @@ export namespace SessionProcessor { }) continue } + // altimate_change start — completed/error tool results are persisted before the request aborts + interruptRequest() + // altimate_change end // altimate_change start — an armed doom-loop stop must terminate the stream immediately if (needsCompaction || starvationStop) break // altimate_change end } } catch (e: any) { - // altimate_change start — join this failure to its turn's client trace (when traced) - const traceId = TraceContext.traceId(input.assistantMessage.parentID) + // altimate_change start — an intentional request interruption is neither retryable nor a session error + if (requestController.signal.aborted && !input.abort.aborted) { + log.info("generation interrupted at run budget soft deadline", { sessionID: input.sessionID }) + } else { // altimate_change end - log.error("process", { - error: e, - stack: JSON.stringify(e.stack), - // altimate_change start — client trace (see above) - ...(traceId && { trace: traceId }), + // altimate_change start — join this failure to its turn's client trace (when traced) + const traceId = TraceContext.traceId(input.assistantMessage.parentID) // altimate_change end - }) - const error = MessageV2.fromError(e, { providerID: input.model.providerID }) - if (MessageV2.ContextOverflowError.isInstance(error)) { - if ((await Config.get()).compaction?.auto === false && !input.assistantMessage.summary) { - // altimate_change start — upstream_fix: honor - // compaction.auto=false on reactive provider overflow. + log.error("process", { + error: e, + stack: JSON.stringify(e.stack), + // altimate_change start — client trace (see above) + ...(traceId && { trace: traceId }), + // altimate_change end + }) + const error = MessageV2.fromError(e, { providerID: input.model.providerID }) + // altimate_change start — committed echoes and summaries retain recoverable causes without a fatal event + if ( + (deferText || (input.recoverCommittedAnswer && input.assistantMessage.summary)) && + !input.abort.aborted && + input.assistantMessage.finish !== "content-filter" && + (isEchoTransportError(error) || MessageV2.ContextOverflowError.isInstance(error)) + ) { + input.assistantMessage.metadata = { + ...input.assistantMessage.metadata, + answer_commit_echo_error: error, + } + recoveredCommittedAnswer = input.recoverCommittedAnswer === true && input.assistantMessage.summary === true + } else if (MessageV2.ContextOverflowError.isInstance(error)) { + // altimate_change end + if ((await Config.get()).compaction?.auto === false && !input.assistantMessage.summary) { + // altimate_change start — upstream_fix: honor + // compaction.auto=false on reactive provider overflow. + input.assistantMessage.error = error + input.assistantMessage.finish = "error" + await Bus.publish(Session.Event.Error, { + sessionID: input.sessionID, + error, + }) + // The prompt loop publishes idle after flushing deferred text. + if (!deferText) await SessionStatus.set(input.sessionID, { type: "idle" }) + // altimate_change end + } else { + needsCompaction = true + Bus.publish(Session.Event.Error, { + sessionID: input.sessionID, + error, + }) + } + } else { + const retry = SessionRetry.retryable(error) + // altimate_change start — cap retries to avoid infinite loops, log on exhaustion + if (retry !== undefined && attempt < SessionRetry.RETRY_MAX_ATTEMPTS) { + // altimate_change end + attempt++ + const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) + // altimate_change start — SessionStatus.set became async in v1.4.0; await so retry state flushes before sleep + await SessionStatus.set(input.sessionID, { + type: "retry", + attempt, + message: retry, + next: Date.now() + delay, + }) + // altimate_change end + await SessionRetry.sleep(delay, input.abort).catch(() => {}) + continue + } + // altimate_change start — log when retries exhausted for debugging + if (retry !== undefined) { + log.warn("max retry attempts reached, giving up", { + attempt, + message: retry, + providerID: input.model.providerID, + modelID: input.model.id, + }) + } + // altimate_change end + // altimate_change start — order terminal error before idle publication + // Publish the error before idle. The run harness drains this + // generation through idle before opening a challenge stream; an + // unawaited publish can otherwise arrive on that fresh stream. input.assistantMessage.error = error - input.assistantMessage.finish = "error" await Bus.publish(Session.Event.Error, { - sessionID: input.sessionID, - error, + sessionID: input.assistantMessage.sessionID, + error: input.assistantMessage.error, }) - await SessionStatus.set(input.sessionID, { type: "idle" }) // altimate_change end - } else { - needsCompaction = true - Bus.publish(Session.Event.Error, { - sessionID: input.sessionID, - error, - }) - } - } else { - const retry = SessionRetry.retryable(error) - // altimate_change start — cap retries to avoid infinite loops, log on exhaustion - if (retry !== undefined && attempt < SessionRetry.RETRY_MAX_ATTEMPTS) { + // altimate_change start — telemetry for unhandled streaming errors (non-retry, non-overflow) + // Covers: UnknownError (SSE chunk timeout), APIError (provider failures after + // retry exhaustion), AuthError, unrequested aborts, and any other streaming + // error. Requested aborts are excluded — see shouldTrackStreamingError. + if (shouldTrackStreamingError(error, input.abort.aborted)) + Telemetry.track({ + type: "error", + timestamp: Date.now(), + session_id: input.assistantMessage.sessionID, + error_name: error.name, + error_message: (error.data as any)?.message ?? String((e as any)?.message ?? ""), + context: "streaming", + }) // altimate_change end - attempt++ - const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) - // altimate_change start — SessionStatus.set became async in v1.4.0; await so retry state flushes before sleep - await SessionStatus.set(input.sessionID, { - type: "retry", - attempt, - message: retry, - next: Date.now() + delay, - }) + // altimate_change start — await idle after abort cleanup or prompt-owned deferred text publication + // Requested aborts publish idle below; deferred text leaves it to the prompt loop. + if (!deferText && !input.abort.aborted) await SessionStatus.set(input.sessionID, { type: "idle" }) // altimate_change end - await SessionRetry.sleep(delay, input.abort).catch(() => {}) - continue } - // altimate_change start — log when retries exhausted for debugging - if (retry !== undefined) { - log.warn("max retry attempts reached, giving up", { - attempt, - message: retry, - providerID: input.model.providerID, - modelID: input.model.id, - }) - } - // altimate_change end - input.assistantMessage.error = error - // altimate_change start — order terminal error before idle publication - // Publish the error before idle. The run harness drains this - // generation through idle before opening a challenge stream; an - // unawaited publish can otherwise arrive on that fresh stream. - await Bus.publish(Session.Event.Error, { - sessionID: input.assistantMessage.sessionID, - error: input.assistantMessage.error, - }) - // altimate_change end - // altimate_change start — telemetry for unhandled streaming errors (non-retry, non-overflow) - // Covers: UnknownError (SSE chunk timeout), APIError (provider failures after - // retry exhaustion), AuthError, unrequested aborts, and any other streaming - // error. Requested aborts are excluded — see shouldTrackStreamingError. - if (shouldTrackStreamingError(error, input.abort.aborted)) - Telemetry.track({ - type: "error", - timestamp: Date.now(), - session_id: input.assistantMessage.sessionID, - error_name: error.name, - error_message: (error.data as any)?.message ?? String((e as any)?.message ?? ""), - context: "streaming", - }) - // altimate_change end - // altimate_change start — SessionStatus.set became async; await so idle state flushes before exit - await SessionStatus.set(input.sessionID, { type: "idle" }) - // altimate_change end + // altimate_change start — end ordinary provider/session error handling + } + // altimate_change end + } + // altimate_change start — retain and close unfinished emitted parts before continuing with the nudge + if (requestController.signal.aborted || input.abort.aborted) { + if (!input.abort.aborted) input.assistantMessage.finish = undefined + const end = Date.now() + if (currentText) { + currentText.time = { start: currentText.time?.start ?? end, end } + if (!deferText) await Session.updatePart(currentText) + } + for (const part of Object.values(reasoningMap)) { + part.time = { ...part.time, end } + await Session.updatePart(part) } } + // altimate_change end if (snapshot) { const patch = await Snapshot.patch(snapshot) if (patch.files.length) { @@ -1278,33 +1445,17 @@ export namespace SessionProcessor { const p = await MessageV2.parts(input.assistantMessage.id) for (const part of p) { if (part.type === "tool" && part.state.status !== "completed" && part.state.status !== "error") { - // altimate_change start — upstream_fix: mark aborted tools so partial output is replayed correctly. - const metadata = - part.state.status === "running" - ? ToolResultCap.capInterruptedMetadata(part.state.metadata, toolResultCapTokens) - : { interrupted: true } + // altimate_change start — upstream_fix: retain interrupted child results before closing the parent generation + await Session.updatePart(await interruptedToolPart(part, toolResultCapTokens)) // altimate_change end - await Session.updatePart({ - ...part, - state: { - ...part.state, - status: "error", - error: "Tool execution aborted", - // altimate_change start — upstream_fix: preserve running tool metadata, including shell partial output. - metadata, - // altimate_change end - time: { - // altimate_change start — upstream_fix: keep the original running start time on abort. - start: part.state.status === "running" ? part.state.time.start : Date.now(), - // altimate_change end - end: Date.now(), - }, - }, - }) } } input.assistantMessage.time.completed = Date.now() - await Session.updateMessage(input.assistantMessage) + // altimate_change start — finalize buffered echoes in the prompt; flush interrupted results before idle + if (!deferText || input.assistantMessage.error) await Session.updateMessage(input.assistantMessage) + // The prompt loop still commits deferred text on abort and publishes idle after that flush. + if (input.abort.aborted && !deferText) await SessionStatus.set(input.sessionID, { type: "idle" }) + // altimate_change end // altimate_change start — explicit model DONE is the PRIMARY // termination path. A turn that finished with "stop", has no error, and // asserts completion (trailing DONE token per the SessionTermination @@ -1332,6 +1483,7 @@ export namespace SessionProcessor { // altimate_change start — the ordering itself lives in the exported // `resolveFinishOutcome` so the unit gate can exercise the REAL // decision instead of a hand-written copy of it (PR #1171 review). + if (recoveredCommittedAnswer) return "stop" as const return resolveFinishOutcome({ needsCompaction, explicitDone, @@ -1341,6 +1493,7 @@ export namespace SessionProcessor { }) // altimate_change end } + // altimate_change end }, } return result diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index de29c9cb22..fd85497736 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -6,7 +6,9 @@ import fs from "fs/promises" import z from "zod" import { Filesystem } from "../util/filesystem" import { SessionID, MessageID, PartID } from "./schema" -import { MessageV2 } from "./message-v2" +// altimate_change start — module-scope echo transport predicate +import { MessageV2, isEchoTransportError } from "./message-v2" +// altimate_change end import { Log } from "../util/log" import { SessionRevert } from "./revert" import { Session } from "." @@ -24,6 +26,11 @@ import { NudgeArbiter } from "./nudge" import { SessionTermination } from "./termination" import { Instance } from "../project/instance" import { Bus } from "../bus" +// altimate_change start - distinguish submitted requests from compaction-created user rows in the stream +import { BusEvent } from "../bus/bus-event" +import { Database, eq, sql } from "../storage/db" +import { MessageTable } from "@opencode-ai/core/session/sql" +// altimate_change end import { ProviderTransform } from "../provider/transform" import { SystemPrompt } from "./system" import { InstructionPrompt } from "./instruction" @@ -111,6 +118,10 @@ import * as OnboardingTelemetry from "@/altimate/telemetry/onboarding" // altima // altimate_change start — keyless public Zen predicate (flat module) import { isPublicZen } from "@/provider/public-zen" // altimate_change end +// altimate_change start — distinguish harness deadlines and reuse their committed answer during finalization +import { RunBudget } from "@/altimate/run-budget" +import * as RunBudgetEffort from "@/altimate/session/run-budget-effort" +// altimate_change end // @ts-ignore globalThis.AI_SDK_LOG_WARNINGS = false @@ -125,6 +136,17 @@ IMPORTANT: const STRUCTURED_OUTPUT_SYSTEM_PROMPT = `IMPORTANT: The user has requested structured output. You MUST use the StructuredOutput tool to provide your final response. Do NOT respond with plain text - you MUST call the StructuredOutput tool with your answer formatted according to the schema.` +// altimate_change start - request identity is independent of compaction message adjacency +const RequestStarted = BusEvent.define( + "session.request.started", + z.object({ sessionID: SessionID.zod, messageID: MessageID.zod }), +) +const RequestContinued = BusEvent.define( + "session.request.continued", + z.object({ sessionID: SessionID.zod, messageID: MessageID.zod, parentID: MessageID.zod }), +) +// altimate_change end + export namespace SessionPrompt { const log = Log.create({ service: "session.prompt" }) @@ -574,7 +596,7 @@ export namespace SessionPrompt { } // altimate_change start — SessionStatus.set became async in v1.4.0; await so idle state actually flushes - export async function cancel(sessionID: SessionID) { + export async function cancel(sessionID: SessionID, reason?: RunBudget.HarnessDeadline) { log.info("cancel", { sessionID }) const s = state() const match = s[sessionID] @@ -587,7 +609,7 @@ export namespace SessionPrompt { // arrive synchronously after cancel() and must start a fresh generation, // never queue its callback on the signal that was just aborted. match.closing = true - match.abort.abort() + match.abort.abort(reason) if (!match.loopOwned) { // shell() also uses start(), but it has no loop disposer when no prompt // callbacks are queued. That owner must restore idle directly. @@ -660,7 +682,7 @@ export namespace SessionPrompt { // altimate_change start — client trace: the turns this generation runs. Released when it ends // (disposed before the generation's own cleanup, so no newer generation exists yet). const tracedTurns = new Set() - let currentTurn: string | undefined + let currentTurn: MessageID | undefined using _traceGeneration = defer(() => TraceContext.release(sessionID, tracedTurns)) // altimate_change end @@ -819,6 +841,187 @@ export namespace SessionPrompt { }) using _unsubToolsChanged = defer(unsubscribeToolsChanged) // altimate_change end + // altimate_change start — retain the exact committed text through automatic compaction + let committedAnswer: { + userID: MessageID + output: string + assistant: Pick + } | undefined + const compactionContinuations = new Set() + // The legacy message table has no explicit sequence column. Its SQLite rowid + // records insertion order and survives updateMessage's data-only upserts. + // Read it with the stored timestamp: caller-provided IDs carry no chronology. + const readMessageOrder = () => new Map( + Database.use((db) => db + .select({ id: MessageTable.id, created: MessageTable.time_created, sequence: sql`rowid` }) + .from(MessageTable) + .where(eq(MessageTable.session_id, sessionID)) + .all()).map((row) => [row.id, row]), + ) + const compareMessageOrder = (order: ReturnType, leftID: MessageID, rightID: MessageID) => { + const left = order.get(leftID) + const right = order.get(rightID) + if (!left || !right) return 0 + return left.created - right.created || left.sequence - right.sequence + } + function* orderedMessageStream(order: ReturnType) { + // stream() already orders by stored timestamp; repair only tied groups, + // retaining lazy history hydration and filterCompacted's summary placement. + let tied: MessageV2.WithParts[] = [] + for (const msg of MessageV2.stream(sessionID)) { + if (tied.length && order.get(tied[0].info.id)?.created !== order.get(msg.info.id)?.created) { + yield* tied.sort((a, b) => compareMessageOrder(order, b.info.id, a.info.id)) + tied = [] + } + tied.push(msg) + } + yield* tied.sort((a, b) => compareMessageOrder(order, b.info.id, a.info.id)) + } + const captureCommittedAnswer = (user: MessageV2.User, assistant: MessageV2.Assistant, parts: MessageV2.Part[]) => { + if (assistant.parentID !== user.id || assistant.summary || !parts.some((part) => part.type === "tool")) return + const commit = parts.findLast((part) => part.type === "tool" && part.tool === "answer_commit") + committedAnswer = + user.agent === "analyst" && + (user.format?.type ?? "text") === "text" && + assistant.agent === "analyst" && + commit?.type === "tool" && + commit.state.status === "completed" + ? { + userID: user.id, + assistant: { + agent: assistant.agent, + mode: assistant.mode, + modelID: assistant.modelID, + providerID: assistant.providerID, + variant: assistant.variant, + path: assistant.path, + }, + // Completed-tool metadata retains the full answer through the per-result output cap. + output: + typeof commit.state.metadata.committed_text === "string" + ? commit.state.metadata.committed_text + : commit.state.output, + } + : undefined + } + const publishText = async (parts: MessageV2.TextPart[]) => { + for (const part of parts) { + await Session.updatePart({ ...part, text: "", time: part.time && { start: part.time.start } }) + await Session.updatePartDelta({ + sessionID, + messageID: part.messageID, + partID: part.id, + field: "text", + delta: part.text, + }) + await Session.updatePart(part) + } + } + const finishCommittedAnswer = async ( + message: MessageV2.Assistant, + deferredText: MessageV2.TextPart[] = [], + error = message.error, + ) => { + // altimate_change start — a work deadline may publish the answer already committed before cancellation + const deadline = abort.reason instanceof RunBudget.HarnessDeadline + if ( + !committedAnswer || (abort.aborted && !deadline) || + compareMessageOrder(readMessageOrder(), message.id, committedAnswer.userID) <= 0 + ) return false + // Keep user aborts and HTTP policy rejections fatal even if a later operation throws another error. + if ( + message.finish === "content-filter" || + [message.error, error].some( + (cause) => + (cause?.name === "MessageAbortedError" && !deadline) || + cause?.name === "ContentFilterError" || + (cause && + ["APIError", "UnknownError", "ProviderAuthError"].includes(cause.name) && + !isEchoTransportError(cause)), + ) + ) + return false + // altimate_change end + // Once the echo has started, this answer still belongs to the earlier request. + // Publish it before the loop continues to any user request queued during generation. + const recoveryCause = error ?? message.metadata?.answer_commit_echo_error + const cause = + recoveryCause ?? + (message.finish !== "stop" ? { finish: message.finish ?? "unknown" } : undefined) + let storedText = MessageV2.parts(message.id).filter((part) => part.type === "text") + if ( + message.summary && message.finish && !message.error && + !message.metadata?.answer_commit_echo_error && + storedText.some((part) => part.text.trim().length > 0) + ) { + // A successful summary remains the compaction boundary. Deliver the + // committed request's answer separately, retaining its original identity. + const order = readMessageOrder() + let created = Date.now() + for (const msg of orderedMessageStream(order)) { + if (compareMessageOrder(order, msg.info.id, committedAnswer.userID) <= 0) break + if ( + msg.info.role === "user" && + !msg.parts.some((part) => part.type === "compaction") && + !compactionContinuations.has(msg.info.id) + ) { + // Walk newest to oldest so the answer precedes the earliest queued request. + created = order.get(msg.info.id)!.created - 1 + } + } + message = await Session.updateMessage({ + ...committedAnswer.assistant, + id: MessageID.ascending(), + parentID: committedAnswer.userID, + sessionID, + role: "assistant", + cost: 0, + tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, + time: { created }, + }) as MessageV2.Assistant + storedText = [] + deferredText = [] + } + // Only buffered parts are safe to reuse: stored parts may already have + // streamed deltas, and a blank update does not reset client text. + const first = deferredText[0] + const part: MessageV2.TextPart = { + id: first?.id ?? PartID.ascending(), + sessionID, + messageID: message.id, + type: "text", + text: committedAnswer.output, + time: { start: first?.time?.start ?? message.time.created, end: Date.now() }, + } + for (const old of storedText) { + if (old.id !== part.id) await Session.removePart({ sessionID, messageID: message.id, partID: old.id }) + } + if (cause) message.metadata = { ...message.metadata, answer_commit_echo_error: cause } + // altimate_change start — reuse delivered commits even when the deadline arrives during publication + message.metadata = { ...message.metadata, answer_commit_finalized: true } + // altimate_change end + delete message.error + // A failed summariser becomes the original request's answer, so clients must no longer hide it as compaction machinery. + if (message.summary) { + delete message.summary + message.parentID = committedAnswer.userID + message.agent = "analyst" + message.mode = "analyst" + await Session.updateMessage({ ...message, finish: undefined, time: { created: message.time.created } }) + } + // Persist the authoritative text before making this message terminal on resume. + await publishText([part]) + message.finish = message.finish === "other" && !recoveryCause ? "other" : "stop" + message.time.completed = Math.max(message.time.created, Date.now()) + await Session.updateMessage(message) + committedAnswer = undefined + return true + } + // Recovery may finish an earlier request while this generation still has queued work. + recovery: while (true) { + let loopFailure: { error: unknown } | undefined + try { + // altimate_change end while (true) { // altimate_change start — SessionStatus.set became async in v1.4.0; await so busy state flushes before LLM call await SessionStatus.set(sessionID, { type: "busy" }) @@ -829,7 +1032,8 @@ export namespace SessionPrompt { // compaction marker, hydrate the stream once and pass that unfiltered // history to the ledger. Previously filterCompacted read the recent view // and process() synchronously hydrated the entire session a second time. - const messageStream = MessageV2.stream(sessionID) + const messageOrder = readMessageOrder() + const messageStream = orderedMessageStream(messageOrder) const firstMessage = messageStream.next() const newestIsCompaction = !firstMessage.done && firstMessage.value.parts.some((part) => part.type === "compaction") @@ -866,6 +1070,35 @@ export namespace SessionPrompt { } if (!lastUser) throw new Error("No user message found in stream. This should never happen.") + // altimate_change start - only compaction-created continuations belong to the same request + const commitRequest = msgs.findLast( + (msg) => msg.info.role === "user" && !msg.parts.some((part) => part.type === "compaction"), + ) + if ( + committedAnswer && + msgs.some( + (msg) => + msg.info.role === "user" && + compareMessageOrder(messageOrder, msg.info.id, committedAnswer!.userID) > 0 && + !msg.parts.some((part) => part.type === "compaction") && + !compactionContinuations.has(msg.info.id), + ) + ) { + // A request queued after the commit still receives its own response; + // publish the completed answer for the earlier request first. + // Reload persisted history so the queued request includes the recovered answer. + if (lastAssistant && (await finishCommittedAnswer(lastAssistant))) continue + committedAnswer = undefined + } + if (commitRequest?.info.role === "user" && lastAssistant) { + // Text-only echoes and compaction summaries retain the commit until delivery or a new request. + captureCommittedAnswer( + commitRequest.info, + lastAssistant, + msgs.find((msg) => msg.info.id === lastAssistant.id)?.parts ?? [], + ) + } + // altimate_change end // altimate_change start — client trace for this step. A user message carrying a compaction // part was created by this loop: it continues the turn that triggered it. Any other user // message is a turn of its own, traced or not. @@ -873,8 +1106,10 @@ export namespace SessionPrompt { const isCompaction = msgs.some( (msg) => msg.info.id === stepUser.id && msg.parts.some((part) => part.type === "compaction"), ) - if (isCompaction && currentTurn && !TraceContext.forMessage(stepUser.id)) { - TraceContext.inherit(stepUser.id, currentTurn) + if (isCompaction && currentTurn) { + // Request ownership must survive even when no client trace is active. + await Bus.publish(RequestContinued, { sessionID, messageID: stepUser.id, parentID: currentTurn }) + if (!TraceContext.forMessage(stepUser.id)) TraceContext.inherit(stepUser.id, currentTurn) } else if (!isCompaction) { currentTurn = stepUser.id } @@ -884,6 +1119,22 @@ export namespace SessionPrompt { // altimate_change start — always track the current agent name so early breaks still report it if (lastUser.agent) sessionAgentName = lastUser.agent // altimate_change end + // altimate_change start — budget finalization acknowledges a delivered commit without a model turn + const finalizationParts = msgs.find((msg) => msg.info.id === lastUser.id)?.parts + if ( + RunBudgetEffort.toolsDisabled(sessionID) && + lastAssistant?.metadata?.answer_commit_finalized === true && + lastAssistant.finish === "stop" && !lastAssistant.error && + lastUser.agent === "analyst" && (lastUser.format?.type ?? "text") === "text" && + finalizationParts?.length === 1 && + finalizationParts[0].type === "text" && finalizationParts[0].synthetic && + finalizationParts[0].text === SessionTermination.REPLY_AFTER_BUDGET && + !msgs.some((msg) => + msg.info.role === "user" && msg.info.id !== lastUser.id && + compareMessageOrder(messageOrder, msg.info.id, lastAssistant!.id) > 0, + ) + ) break + // altimate_change end // altimate_change start — upstream_fix: a provider can finish with // "stop" while still emitting tool parts; those tools must be replayed // into the next loop instead of terminating the session. @@ -900,7 +1151,7 @@ export namespace SessionPrompt { lastAssistant?.finish && !["tool-calls", "unknown"].includes(lastAssistant.finish) && !lastAssistantHasToolParts && - lastUser.id < lastAssistant.id + lastAssistant.parentID === lastUser.id ) { log.info("exiting loop", { sessionID }) break @@ -1006,6 +1257,9 @@ export namespace SessionPrompt { abort, callID: part.callID, extra: { bypassAgentCheck: true }, + // altimate_change start — pass effective permission rules to search result filtering + permissions: PermissionNext.merge(taskAgent.permission, session.permission ?? []), + // altimate_change end // altimate_change start — fork MessageV2.WithParts ≡ core SessionV1.WithParts at the Tool.Context boundary messages: msgs as unknown as Tool.Context["messages"], metadata: (input) => @@ -1026,7 +1280,7 @@ export namespace SessionPrompt { await PermissionNext.ask({ ...req, sessionID: sessionID, - ruleset: PermissionNext.merge(taskAgent.permission, session.permission ?? []), + ruleset: req.ruleset ?? PermissionNext.merge(taskAgent.permission, session.permission ?? []), } as Parameters[0]) // altimate_change end }), @@ -1110,6 +1364,7 @@ export namespace SessionPrompt { await Session.updateMessage(summaryUserMsg) // altimate_change start — this loop-written message continues the step's turn (client trace) TraceContext.inherit(summaryUserMsg.id, lastUser.id) + await Bus.publish(RequestContinued, { sessionID, messageID: summaryUserMsg.id, parentID: lastUser.id }) // altimate_change end await Session.updatePart({ id: PartID.ascending(), @@ -1132,6 +1387,9 @@ export namespace SessionPrompt { return false }) // altimate_change end + // altimate_change start — publish the recorded continuation origin before its next assistant + let continuationID: MessageID | undefined + // altimate_change end const result = await SessionCompaction.process({ messages: msgs, parentID: lastUser.id, @@ -1139,6 +1397,13 @@ export namespace SessionPrompt { sessionID, auto: task.auto, overflow: task.overflow, + // altimate_change start - distinguish automatic continuations from user-authored synthetic parts + onContinuation: (messageID) => { + compactionContinuations.add(messageID) + continuationID = messageID + }, + recoverCommittedAnswer: committedAnswer !== undefined, + // altimate_change end // altimate_change start — keep nudge delivery scoped to this prompt generation nudgeGeneration, // altimate_change end @@ -1149,6 +1414,11 @@ export namespace SessionPrompt { learnDelivery: learnDelivery ? lessonState : undefined, // altimate_change end }) + // altimate_change start — attached run clients cannot read the compactor's in-memory origin + if (continuationID) { + await Bus.publish(RequestContinued, { sessionID, messageID: continuationID, parentID: lastUser.id }) + } + // altimate_change end // altimate_change start — treat any non-"continue" result as stop: an // undefined/unknown result must never fall through to `continue`, which // re-enters compaction on the same unresolved marker and busy-loops. @@ -1463,6 +1733,9 @@ export namespace SessionPrompt { // Inject StructuredOutput tool if JSON schema mode enabled if (lastUser.format?.type === "json_schema") { + // altimate_change start - schema-mode requests finish through StructuredOutput, never answer_commit + delete tools.answer_commit + // altimate_change end tools["StructuredOutput"] = createStructuredOutputTool({ schema: lastUser.format.schema, onSuccess(output) { @@ -1590,7 +1863,9 @@ export namespace SessionPrompt { // Ephemerally wrap queued user messages with a reminder to stay on track if (step > 1 && lastFinished) { for (const msg of msgs) { - if (msg.info.role !== "user" || msg.info.id <= lastFinished.id) continue + // altimate_change start - queued request order is independent of caller-supplied IDs + if (msg.info.role !== "user" || compareMessageOrder(messageOrder, msg.info.id, lastFinished.id) <= 0) continue + // altimate_change end for (const part of msg.parts) { if (part.type !== "text" || part.ignored || part.synthetic) continue if (!part.text.trim()) continue @@ -1687,6 +1962,11 @@ export namespace SessionPrompt { if (format.type === "json_schema") { system.push(STRUCTURED_OUTPUT_SYSTEM_PROMPT) } + // altimate_change start - every successful commit makes the next generation an echo, including after compaction + const echoCommittedAnswer = + format.type === "text" && agent.name === "analyst" && committedAnswer !== undefined + const deferredText: MessageV2.TextPart[] = [] + // altimate_change end // altimate_change start - trace system prompt once per loop() call. // The system prompt is functionally identical across steps within a single @@ -1722,8 +2002,55 @@ export namespace SessionPrompt { } // altimate_change end + // altimate_change start - keep past commits as context without letting historical tool stubs re-advertise them in schema mode + const modelHistory = + format.type === "json_schema" + ? msgs.map((msg) => ({ + ...msg, + parts: msg.parts.map((part): MessageV2.Part => { + if (part.type !== "tool" || part.tool !== "answer_commit") return part + let text = "answer_commit did not complete." + if (part.state.status === "error") text = part.state.error + if (part.state.status === "completed") { + const mask = part.state.metadata?.observation_mask + text = part.state.time.compacted + ? typeof mask === "string" && mask.length > 0 + ? mask + : "[Old tool result content cleared]" + : part.state.output + } + return { id: part.id, sessionID: part.sessionID, messageID: part.messageID, type: "text", text } + }), + })) + : msgs + // altimate_change end + // altimate_change start - recheck persisted requests after asynchronous history conversion, before sending an echo + const modelMessages = await MessageV2.toModelMessages(modelHistory, model) + if (echoCommittedAnswer && committedAnswer) { + const order = readMessageOrder() + let newerUserRequest = false + for (const msg of MessageV2.stream(sessionID)) { + if ( + msg.info.role === "user" && + compareMessageOrder(order, msg.info.id, committedAnswer.userID) > 0 && + !msg.parts.some((part) => part.type === "compaction") && + !compactionContinuations.has(msg.info.id) + ) { + newerUserRequest = true + break + } + } + if (newerUserRequest) { + await finishCommittedAnswer(processor.message) + continue + } + } + // altimate_change end const result = await processor.process({ user: lastUser, + // altimate_change start — correlate request-boundary snapshots with this assistant message + messageID: processor.message.id, + // altimate_change end agent, abort, sessionID, @@ -1732,21 +2059,59 @@ export namespace SessionPrompt { environment: await SystemPrompt.environment(model), // altimate_change end messages: [ - ...(await MessageV2.toModelMessages(msgs, model)), - ...(isLastStep + // altimate_change start - use the history converted before the fresh-user check + ...modelMessages, + // altimate_change end + // altimate_change start - a committed answer uses the next normal generation even before the step limit + ...(echoCommittedAnswer ? [ { - role: "assistant" as const, - content: MAX_STEPS, + // A user turn: Bedrock's Converse API rejects a conversation that ends with an + // assistant message ("conversation must end with a user message"), and every + // provider accepts an instruction as the final user turn. + role: "user" as const, + content: "Tools are disabled. Reply with exactly the text returned by answer_commit and nothing else.", }, ] - : []), + : isLastStep + ? [ + { + role: "assistant" as const, + content: MAX_STEPS, + }, + ] + : []), + // altimate_change end ], - tools, + // altimate_change start - the final echo cannot spend another step on tools + tools: echoCommittedAnswer ? {} : tools, + deferText: echoCommittedAnswer ? deferredText : undefined, + // altimate_change end model, - toolChoice: format.type === "json_schema" ? "required" : undefined, + // altimate_change start - a user output schema still takes precedence over text finalization + toolChoice: echoCommittedAnswer ? "none" : format.type === "json_schema" ? "required" : undefined, + // altimate_change end }) + // altimate_change start - finalize buffered echoes before publishing any text to clients + const stepParts = MessageV2.parts(processor.message.id) + // Capture before post-processing can fail or request compaction. + captureCommittedAnswer(lastUser, processor.message, stepParts) + if (echoCommittedAnswer && result === "compact") { + processor.message.metadata = { + ...processor.message.metadata, + answer_commit_echo_error: processor.message.metadata?.answer_commit_echo_error ?? { + result, + finish: processor.message.finish ?? "unknown", + }, + } + } + const echoFinished = + echoCommittedAnswer && (await finishCommittedAnswer(processor.message, deferredText)) + // Abort and content-filter exits retain their original buffered text and timing. + if (!echoFinished) await publishText(deferredText) + // A finalized echo already has its answer, including when usage requested compaction. + // altimate_change end // If structured output was captured, save it and exit immediately // This takes priority because the StructuredOutput tool was called successfully if (structuredOutput !== undefined) { @@ -1775,7 +2140,6 @@ export namespace SessionPrompt { sessionTotalCost += processor.message.cost ?? 0 const t = processor.message.tokens sessionTotalTokens += t.input + t.output + t.reasoning + t.cache.read + t.cache.write - const stepParts = await MessageV2.parts(processor.message.id) toolCallCount += stepParts.filter((p) => p.type === "tool").length if (processor.message.error) sessionHadError = true // altimate_change start — capture last message error for agent_outcome reason @@ -2015,6 +2379,7 @@ export namespace SessionPrompt { } as MessageV2.Info) // This loop-written message continues the step's turn (client trace). TraceContext.inherit(syntheticMessageID, lastUser.id) + await Bus.publish(RequestContinued, { sessionID, messageID: syntheticMessageID, parentID: lastUser.id }) // Append the validator body as a text part on the new user message. await Session.updatePart({ @@ -2068,6 +2433,9 @@ export namespace SessionPrompt { } // altimate_change end + // altimate_change start - use the normal stop check for finished echoes, preserving any newly queued request + if (echoFinished) continue + // altimate_change end if (result === "stop") break if (result === "compact") { // altimate_change start — track compaction count @@ -2087,6 +2455,39 @@ export namespace SessionPrompt { } continue } + // altimate_change start - one request-exit guard covers compaction stops and failures outside the processor + } catch (error) { + loopFailure = { error } + } + let recovered = false + const recoveredUserID = committedAnswer?.userID + if (committedAnswer) { + const exiting = [...orderedMessageStream(readMessageOrder())].find((msg) => msg.info.role === "assistant") + if (exiting?.info.role === "assistant") { + recovered = await finishCommittedAnswer( + exiting.info, + [], + loopFailure ? MessageV2.fromError(loopFailure.error, { providerID: exiting.info.providerID }) : exiting.info.error, + ) + } + } + if (loopFailure && !recovered) throw loopFailure.error + if (recovered && recoveredUserID) { + // Publishing can itself yield to a queued prompt. Re-read persisted order + // before resolving this generation's callers with the recovered answer. + const order = readMessageOrder() + for (const msg of orderedMessageStream(order)) { + if (compareMessageOrder(order, msg.info.id, recoveredUserID) <= 0) break + if ( + msg.info.role === "user" && + !msg.parts.some((part) => part.type === "compaction") && + !compactionContinuations.has(msg.info.id) + ) continue recovery + } + } + break + } + // altimate_change end // altimate_change start — the generation-scoped disposer publishes the // sole normal idle transition after removing this loop from state. Abort // and processor-error paths may already be idle; the disposer detects that. @@ -2202,7 +2603,7 @@ export namespace SessionPrompt { await Telemetry.shutdown() // altimate_change end // altimate_change start — resolve callbacks from this prompt generation only - for await (const item of MessageV2.stream(sessionID)) { + for (const item of orderedMessageStream(readMessageOrder())) { if (item.info.role === "user") continue // Resolve only callers queued on THIS loop generation. A cancelled loop // may finish unwinding after a replacement generation has already begun; @@ -2316,6 +2717,9 @@ export namespace SessionPrompt { extra: { model: input.model, bypassAgentCheck: input.bypassAgentCheck, lessons: input.lessons }, // altimate_change end agent: input.agent.name, + // altimate_change start — pass effective permission rules to search result filtering + permissions: PermissionNext.merge(input.agent.permission, input.session.permission ?? []), + // altimate_change end // altimate_change start — fork MessageV2.WithParts ≡ core SessionV1.WithParts at the Tool.Context boundary messages: input.messages as unknown as Tool.Context["messages"], // altimate_change end @@ -2347,7 +2751,7 @@ export namespace SessionPrompt { ...req, sessionID: input.session.id, tool: { messageID: input.processor.message.id, callID: options.toolCallId }, - ruleset: PermissionNext.merge(input.agent.permission, input.session.permission ?? []), + ruleset: req.ruleset ?? PermissionNext.merge(input.agent.permission, input.session.permission ?? []), } as Parameters[0]) // altimate_change end }), @@ -3003,6 +3407,9 @@ export namespace SessionPrompt { for (const part of parts) { await Session.updatePart(part) } + // altimate_change start - internal compaction continuations do not pass through this request boundary + await Bus.publish(RequestStarted, { sessionID: input.sessionID, messageID: info.id }) + // altimate_change end return { info, diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index 8ed61aa1ff..d77b027c97 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -1,3 +1,9 @@ +// altimate_change start — release session-owned scratch stores on deletion +import { closeScratch } from "@/altimate/native/connections/scratch" +// altimate_change end +// altimate_change start — upstream_fix: normalize native integers before part persistence and events +import { normalizeBigInts } from "@/altimate/util/json" +// altimate_change end import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { PermissionV1 } from "@opencode-ai/core/v1/permission" import { Slug } from "@opencode-ai/core/util/slug" @@ -669,6 +675,9 @@ export const layer: Layer.Layer< yield* remove(child.id) } + // altimate_change start — release only the deleted session's scratch store + yield* Effect.promise(() => closeScratch(sessionID)) + // altimate_change end yield* events.publish(SessionV1.Event.Deleted, { sessionID, info: session }) yield* events.remove(sessionID) } catch (error) { @@ -684,6 +693,9 @@ export const layer: Layer.Layer< const updatePart = (part: T): Effect.Effect => Effect.gen(function* () { + // altimate_change start — upstream_fix: keep stored, published, and returned parts JSON-safe + part = normalizeBigInts(part, "safe-number") + // altimate_change end yield* events.publish(SessionV1.Event.PartUpdated, { sessionID: part.sessionID, part: structuredClone(part), diff --git a/packages/opencode/src/session/task-output.ts b/packages/opencode/src/session/task-output.ts new file mode 100644 index 0000000000..88fe1923c9 --- /dev/null +++ b/packages/opencode/src/session/task-output.ts @@ -0,0 +1,24 @@ +import { MessageV2 } from "./message-v2" +import type { MessageID, SessionID } from "./schema" + +export async function interruptedTaskOutput(sessionID: SessionID, parentID?: MessageID): Promise { + for await (const message of MessageV2.stream(sessionID)) { + if (message.info.role === "user") break + if (message.info.role !== "assistant") continue + if (parentID && message.info.parentID !== parentID) continue + const text = message.parts + .filter((part): part is MessageV2.TextPart => part.type === "text" && !part.ignored && !part.synthetic) + .map((part) => part.text) + .join("\n") + .trim() + if (!text) continue + return [ + `task_id: ${sessionID} (for resuming to continue this task if needed)`, + "", + "", + "Task interrupted. These are partial findings from before cancellation:", + text, + "", + ].join("\n") + } +} diff --git a/packages/opencode/src/session/termination.ts b/packages/opencode/src/session/termination.ts index 7d9913ef47..b2bd16e158 100644 --- a/packages/opencode/src/session/termination.ts +++ b/packages/opencode/src/session/termination.ts @@ -258,6 +258,21 @@ export function replyAfterSilentTurn(failure?: { tool: string; error: string }): ) } +// altimate_change start — prompt for best-effort responses at budget boundaries +/** One continuation at the soft wall-clock deadline, delivered at the next step boundary. */ +export const REPLY_BEFORE_TIME_BUDGET = + "The run is nearing its time budget. Stop exploring and give your best current answer now, " + + "using the information already obtained. Avoid further tool calls unless strictly needed to answer. " + + "State the limitations and any work that remains incomplete; do not guess missing values or claim unverified success." + +/** One best-effort response after the run has exhausted its work budget. */ +export const REPLY_AFTER_BUDGET = + "The run's work budget has been exhausted. Do not start more work or call tools. " + + "Reply now with the best answer supported by the information already obtained. " + + "State the limitations and any work that remains incomplete; do not guess missing values or claim unverified success. " + + "If there is not enough evidence to answer, say so plainly and summarize the useful progress." +// altimate_change end + /** * Mechanism-accurate overflow notice. The previous text blamed "large * media attachments" — but the overflow flag is set whenever a request exceeded diff --git a/packages/opencode/src/session/tools.ts b/packages/opencode/src/session/tools.ts index 8bfe5ed59f..62da81abbe 100644 --- a/packages/opencode/src/session/tools.ts +++ b/packages/opencode/src/session/tools.ts @@ -55,6 +55,9 @@ export const resolve = Effect.fn("SessionTools.resolve")(function* (input: { extra: { model: input.model, bypassAgentCheck: input.bypassAgentCheck, promptOps: input.promptOps }, agent: input.agent.name, messages: input.messages, + // altimate_change start — pass effective permission rules to search result filtering + permissions: Permission.merge(input.agent.permission, input.session.permission ?? []), + // altimate_change end metadata: (val) => input.processor.updateToolCall(options.toolCallId, (match) => { if (!["running", "pending"].includes(match.state.status)) return match @@ -75,7 +78,9 @@ export const resolve = Effect.fn("SessionTools.resolve")(function* (input: { ...req, sessionID: input.session.id, tool: { messageID: input.processor.message.id, callID: options.toolCallId }, - ruleset: Permission.merge(input.agent.permission, input.session.permission ?? []), + // altimate_change start — preserve scoped search read approvals + ruleset: req.ruleset ?? Permission.merge(input.agent.permission, input.session.permission ?? []), + // altimate_change end }) .pipe(Effect.orDie), }) diff --git a/packages/opencode/src/skill/index.ts b/packages/opencode/src/skill/index.ts index 2d37d55af6..a13667c1ba 100644 --- a/packages/opencode/src/skill/index.ts +++ b/packages/opencode/src/skill/index.ts @@ -448,26 +448,23 @@ export const layer = Layer.effect( // LIVE registry. The v1.17.9 rewrite of this module dropped the builtin loader (it survives only // in the now-orphaned skill.ts), so on installs without ~/.altimate/builtin/ (Homebrew, Docker, // npm without postinstall) the ~11 builtin skills silently vanished from , the - // Skill tool, and auto-load. Restore both paths: prefer the postinstall FS copy (needed for - // @reference resolution), else the binary-embedded blob. Registered BEFORE loadSkills so a - // user-disk skill of the same name still overrides. - let loadedBuiltinFromFs = false + // Skill tool, and auto-load. Prefer each postinstall FS copy (needed for @reference + // resolution), then fill missing names from the binary-embedded catalog. An old partial + // install must not hide newly embedded skills. Registered BEFORE loadSkills so a user-disk + // skill of the same name still overrides. const builtinDir = path.join(global.home, ".altimate", "builtin") if (yield* fsys.isDir(builtinDir)) { const matches = yield* Effect.tryPromise(() => Glob.scan("**/SKILL.md", { cwd: builtinDir, absolute: true, include: "file", symlink: true }), ).pipe(Effect.catch(() => Effect.succeed([] as string[]))) - if (matches.length > 0) { - yield* Effect.forEach(matches, (m) => add(s, m, events), { discard: true }) - loadedBuiltinFromFs = true - } + yield* Effect.forEach(matches, (m) => add(s, m, events), { discard: true }) } - if (!loadedBuiltinFromFs && typeof OPENCODE_BUILTIN_SKILLS !== "undefined") { + if (typeof OPENCODE_BUILTIN_SKILLS !== "undefined") { for (const entry of OPENCODE_BUILTIN_SKILLS) { try { const md = matter(entry.content) if (!isSkillFrontmatter(md.data)) continue - if (s.skills[md.data.name]) continue + if (Object.hasOwn(s.skills, md.data.name)) continue s.skills[md.data.name] = { name: md.data.name, description: md.data.description, diff --git a/packages/opencode/src/tool/batch.ts b/packages/opencode/src/tool/batch.ts index c1eeb0adbc..a7ea33db17 100644 --- a/packages/opencode/src/tool/batch.ts +++ b/packages/opencode/src/tool/batch.ts @@ -25,7 +25,15 @@ function toEffectContext(ctx: LegacyContext, callID: string): Tool.Context { callID, extra: ctx.extra, messages: ctx.messages, - metadata: (input) => Effect.sync(() => ctx.metadata(input)), + // altimate_change start — preserve search result permissions in nested batch tools + permissions: ctx.permissions, + // altimate_change end + // altimate_change start — upstream_fix: preserve asynchronous metadata publication through legacy tool contexts. + metadata: (input) => + Effect.promise(async () => { + await ctx.metadata(input) + }), + // altimate_change end ask: (input) => Effect.promise(() => ctx.ask(input)), } } diff --git a/packages/opencode/src/tool/filler-parameters.ts b/packages/opencode/src/tool/filler-parameters.ts new file mode 100644 index 0000000000..59c33dda79 --- /dev/null +++ b/packages/opencode/src/tool/filler-parameters.ts @@ -0,0 +1,62 @@ +import type { JSONSchema7 } from "@ai-sdk/provider" +import { Result, Schema, SchemaGetter } from "effect" + +const normalized = new WeakSet() + +/** Retry a rejected call with optional fillers removed; required values and nested payloads retain their meaning. */ +export function fillerSafeParameters(parameters: Schema.Decoder, jsonSchema: JSONSchema7): Schema.Decoder { + // Legacy tools may publish a simpler wire schema than their validation schema. + if (normalized.has(parameters)) return parameters + const decodeResult = Schema.decodeUnknownResult(parameters) + const stripped = Schema.Unknown.pipe( + Schema.decodeTo(parameters, { + decode: SchemaGetter.transform((input) => { + if (!input || typeof input !== "object" || Array.isArray(input)) return input + const args = input as Record + const properties = new Set() + const required = new Set() + const collect = (schema: JSONSchema7 | boolean) => { + if (typeof schema === "boolean") return + for (const name of Object.keys(schema.properties ?? {})) properties.add(name) + for (const name of schema.required ?? []) required.add(name) + for (const child of schema.allOf ?? []) collect(child) + for (const child of schema.anyOf ?? schema.oneOf ?? []) { + // Literal discriminants determine which arguments are required for this call. + if ( + typeof child !== "boolean" && + Object.entries(child.properties ?? {}).some( + ([key, field]) => + typeof field !== "boolean" && + child.required?.includes(key) && + key in args && + ((field.const !== undefined && field.const !== args[key]) || + (field.enum !== undefined && !field.enum.includes(args[key] as never))), + ) + ) + continue + collect(child) + } + } + collect(jsonSchema) + const isFiller = (key: string, value: unknown) => + properties.has(key) && + !required.has(key) && + (value === null || value === "" || value === 0 || (Array.isArray(value) && value.length === 0)) + const base = Object.fromEntries(Object.entries(args).filter(([key, value]) => !isFiller(key, value))) + // Keep each filler that is valid on its own so intentional siblings survive an unrelated filler. + const valid = (candidate: Record) => Result.isSuccess(decodeResult(candidate)) + const kept = Object.entries(args).filter( + ([key, value]) => isFiller(key, value) && valid({ ...base, [key]: value }), + ) + const merged = { ...base, ...Object.fromEntries(kept) } + return kept.length > 0 && valid(merged) ? merged : base + }), + encode: SchemaGetter.transform((value) => value), + }), + ) + // Validate the arguments as sent first so intentional zero/empty values survive; only a call the + // schema rejects is retried with optional fillers removed. + const result = Schema.Union([parameters, stripped]) as unknown as Schema.Decoder + normalized.add(result) + return result +} diff --git a/packages/opencode/src/tool/glob.ts b/packages/opencode/src/tool/glob.ts index 1c825b4568..74e0b9df1d 100644 --- a/packages/opencode/src/tool/glob.ts +++ b/packages/opencode/src/tool/glob.ts @@ -6,6 +6,9 @@ import DESCRIPTION from "./glob.txt" import { Ripgrep } from "../file/ripgrep" import { Instance } from "../project/instance" import { assertExternalDirectoryLegacy } from "./external-directory" +// altimate_change start — enforce read permissions on bounded search results +import { readableSearchResults, searchReadApproval } from "@/altimate/search-read-permissions" +// altimate_change end // altimate_change start — glob hardening: timeout, home/root blocking, default exclusions import os from "os" import { abortAfter } from "../util/abort" @@ -65,6 +68,7 @@ export const GlobTool = Tool.define("glob", { let truncated = false // altimate_change start — 30s timeout with default directory exclusions let timedOut = false + const readPatterns = new Set() const defaultExclusions = IGNORE_PATTERNS.map((p) => `!${p}*`) const globs = [params.pattern, ...defaultExclusions] @@ -80,11 +84,16 @@ export const GlobTool = Tool.define("glob", { glob: globs, signal, })) { + const full = path.resolve(search, file) + // Filter before counting: denied paths must not consume the cap or reveal + // themselves via the truncation hint. Only returned paths need approval. + const readable = readableSearchResults([full], Instance.worktree, ctx.permissions) + if (!readable.allowed.has(full)) continue if (files.length >= limit) { truncated = true break } - const full = path.resolve(search, file) + for (const pattern of readable.patterns) readPatterns.add(pattern) const stats = Filesystem.stat(full)?.mtime.getTime() ?? 0 files.push({ path: full, @@ -108,6 +117,12 @@ export const GlobTool = Tool.define("glob", { timeout.clearTimeout() } // altimate_change end + // altimate_change start — ask only for paths that require approval + if (readPatterns.size > 0) { + const patterns = [...readPatterns] + await ctx.ask(searchReadApproval(patterns, ctx.permissions)) + } + // altimate_change end files.sort((a, b) => b.mtime - a.mtime) const output = [] diff --git a/packages/opencode/src/tool/grep.ts b/packages/opencode/src/tool/grep.ts index 04a329444a..cb1ea6a3ee 100644 --- a/packages/opencode/src/tool/grep.ts +++ b/packages/opencode/src/tool/grep.ts @@ -6,6 +6,10 @@ import { Ripgrep } from "@opencode-ai/core/ripgrep" import { assertExternalDirectoryEffect } from "./external-directory" import DESCRIPTION from "./grep.txt" import * as Tool from "./tool" +// altimate_change start — enforce read permissions on bounded search results +import type { Match } from "@opencode-ai/core/filesystem/schema" +import { readableSearchResults, searchReadApproval } from "@/altimate/search-read-permissions" +// altimate_change end export const Parameters = Schema.Struct({ pattern: Schema.String.annotate({ description: "The regex pattern to search for in file contents" }), @@ -63,30 +67,104 @@ export const GrepTool = Tool.define( // altimate_change start — upstream_fix: keep grep path scoped to exact file arguments. const file = info?.type === "Directory" ? undefined : path.basename(search) // altimate_change end - const result = yield* ripgrep.grep({ + // altimate_change start — approve bounded search candidates before reading content + const limit = 100 + const scanLimit = 10_000 + let scanned = 0 + let permitted = 0 + const readPatterns = new Set() + const readable = (relative: string) => { + const full = info?.type === "Directory" ? path.resolve(requested, relative) : requested + const resolved = path.resolve(cwd, relative) + const checked = readableSearchResults([full, resolved], ins.worktree, ctx.permissions) + return checked.allowed.has(full) && checked.allowed.has(resolved) ? checked : undefined + } + // This listing uses --files: ask-scoped content must remain unread until approval. + // `*` is the listing default and must not become an explicit --glob on the content pass, + // so both passes see exactly the same files. + const include = params.include === "*" ? undefined : params.include + const candidates = file ? [file] : (yield* ripgrep.find({ cwd, - pattern: params.pattern, - // altimate_change start — upstream_fix: pass file paths through to ripgrep. - file, - // altimate_change end - include: params.include, - limit: 100, + pattern: include ?? "*", + hidden: true, + limit: scanLimit, + })).map((entry) => entry.path) + const listedToLimit = !file && candidates.length >= scanLimit + const readableCandidates = candidates.filter((relative) => { + const checked = readable(relative) + if (!checked) return false + for (const pattern of checked.patterns) readPatterns.add(pattern) + return true }) - if (result.length === 0) return empty + if (readPatterns.size > 0) { + yield* ctx.ask(searchReadApproval([...readPatterns], ctx.permissions)) + } + // Recheck after approval in case the rules changed while the prompt was open. + // Literal, rooted globs also keep newly discovered files out of the content search. + const approved = new Set(readableCandidates.filter((relative) => { + const checked = readable(relative) + return checked && checked.patterns.every((pattern) => readPatterns.has(pattern)) + })) + const filterPath = (relative: string) => { + scanned++ + const candidate = path.relative(cwd, path.resolve(cwd, relative)).split(path.sep).join("/") + // Deny on either the requested alias or the resolved target; never return an unlisted file. + if (!approved.has(candidate) || !readable(relative)) return false + permitted++ + return true + } + const result: Match[] = [] + if (!listedToLimit && approved.size === candidates.length) { + // Every candidate was listed and approved: one content search, as before. A listing cut at + // the cap may hide unlisted files, so it always takes the restricted path below. + result.push(...(yield* ripgrep.grep({ cwd, pattern: params.pattern, file, include, limit, scanLimit, filterPath }))) + } else { + // Some candidates are denied or unapproved: restrict ripgrep to the approved files so a denied + // file with many matches neither gets read nor consumes the scan ceiling. Literal, rooted globs + // are batched to keep each argument list bounded. + const batches: string[][] = [] + let argumentBytes = 0 + for (const relative of approved) { + const literal = `/${relative.replace(/[\\*?\[\]{}]/g, "\\$&")}` + const bytes = Buffer.byteLength(literal) + 64 + if (batches.length === 0 || argumentBytes + bytes > 16_384) { + batches.push([]) + argumentBytes = 0 + } + batches[batches.length - 1]!.push(literal) + argumentBytes += bytes + } + for (const batch of batches) { + if (permitted > limit || scanned >= scanLimit) break + result.push(...(yield* ripgrep.grep({ + cwd, + pattern: params.pattern, + file, + include: file ? include : batch, + limit: limit - result.length, + scanLimit: scanLimit - scanned, + filterPath, + }))) + } + } - const rows = result.map((item) => ({ + const truncated = listedToLimit || permitted > limit || scanned >= scanLimit + if (result.length === 0) { + if (!truncated) return empty + return { + ...empty, + metadata: { matches: 0, truncated: true }, + output: "No permitted matches found before the search scan limit.\n\n(Results truncated. Consider using a more specific path or pattern.)", + } + } + const final = result.map((item) => ({ path: path.resolve(cwd, item.entry.path), line: item.line, text: item.text, })) - - const limit = 100 - const truncated = rows.length === limit - const final = rows - if (final.length === 0) return empty - - const total = rows.length - const hasMore = truncated || result.length === limit + const total = final.length + const hasMore = permitted > limit + // altimate_change end const output = [`Found ${total} matches${hasMore ? " (more matches available)" : ""}`] let current = "" diff --git a/packages/opencode/src/tool/ls.ts b/packages/opencode/src/tool/ls.ts index 87dac0dc20..92799d3700 100644 --- a/packages/opencode/src/tool/ls.ts +++ b/packages/opencode/src/tool/ls.ts @@ -5,6 +5,9 @@ import DESCRIPTION from "./ls.txt" import { Instance } from "../project/instance" import { Ripgrep } from "../file/ripgrep" import { assertExternalDirectoryLegacy } from "./external-directory" +// altimate_change start — apply read rules before exposing listing paths +import { readableSearchResults, searchReadApproval } from "@/altimate/search-read-permissions" +// altimate_change end export const IGNORE_PATTERNS = [ "node_modules/", @@ -56,10 +59,29 @@ export const ListTool = Tool.define("list", { const ignoreGlobs = IGNORE_PATTERNS.map((p) => `!${p}*`).concat(params.ignore?.map((p) => `!${p}`) || []) const files = [] + // altimate_change start — denied paths do not consume the result cap + const readPatterns = new Set() + let truncated = false + // altimate_change end for await (const file of Ripgrep.files({ cwd: searchPath, glob: ignoreGlobs, signal: ctx.abort })) { + // altimate_change start — share grep/glob read filtering and scoped approvals + const full = path.resolve(searchPath, file) + const readable = readableSearchResults([full], Instance.worktree, ctx.permissions) + if (!readable.allowed.has(full)) continue + if (files.length >= LIMIT) { + truncated = true + break + } + for (const pattern of readable.patterns) readPatterns.add(pattern) + // altimate_change end files.push(file) - if (files.length >= LIMIT) break } + // altimate_change start — ask only for paths requiring read approval + if (readPatterns.size > 0) { + const patterns = [...readPatterns] + await ctx.ask(searchReadApproval(patterns, ctx.permissions)) + } + // altimate_change end // Build directory structure const dirs = new Set() @@ -113,7 +135,9 @@ export const ListTool = Tool.define("list", { title: path.relative(Instance.worktree, searchPath), metadata: { count: files.length, - truncated: files.length >= LIMIT, + // altimate_change start — only permitted lookahead indicates truncation + truncated, + // altimate_change end }, output, } diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index 60d0af6f92..426755ea44 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -33,6 +33,9 @@ import { WebSearchTool } from "./websearch" import { CodeSearchTool } from "./codesearch" import { Flag } from "@/flag/flag" import { Log } from "@/util/log" +// altimate_change start — reserved tool IDs must use the permission matcher's platform semantics. +import { Wildcard } from "@/util/wildcard" +// altimate_change end import { LspTool } from "./lsp" // altimate_change start — bridge legacy plugin tools to the Effect Tool API (v1.17.9) import { Effect } from "effect" @@ -43,6 +46,11 @@ import { AppRuntime } from "@/effect/app-runtime" // altimate_change start — upstream_fix: task.background schema follows RuntimeFlags. import { RuntimeFlags } from "@/effect/runtime-flags" // altimate_change end +// altimate_change start — upstream_fix: plugin tools share the optional filler contract +import { Result, Schema } from "effect" +import { fillerSafeParameters } from "./filler-parameters" +import { ToolJsonSchema } from "./json-schema" +// altimate_change end // altimate_change start — Effect Context.Service facade so v1.17.9 consumers that compose // ToolRegistry into the Effect runtime (yield* ToolRegistry.Service / .defaultLayer / .node) // compile. Delegates to the existing namespace functions; behavior preserved. @@ -56,6 +64,9 @@ import { pathToFileURL } from "url" // altimate_change start - import custom data engineering tools import { SqlExecuteTool } from "../altimate/tools/sql-execute" +import { SqlMaterializeTool } from "../altimate/tools/sql-materialize" +import { SqlCheckTool } from "../altimate/tools/sql-check" +import { AnswerCommit } from "../altimate/tools/answer-commit" import { SchemaInspectTool } from "../altimate/tools/schema-inspect" import { SqlAnalyzeTool } from "../altimate/tools/sql-analyze" import { SqlOptimizeTool } from "../altimate/tools/sql-optimize" @@ -155,6 +166,30 @@ import { TrainingImportTool } from "../altimate/tools/training-import" import { DbtPrReviewTool } from "../altimate/tools/dbt-pr-review" // altimate_change end +// altimate_change start — upstream_fix: plugin tools share the optional filler contract +function fillerSafePlugin(tool: Tool.DefWithoutID): Tool.DefWithoutID { + const schema = ToolJsonSchema.fromTool({ ...tool, id: "plugin" }) + const parameters = fillerSafeParameters(tool.parameters, schema) + const decode = Schema.decodeUnknownResult(parameters) + const known = new Set(Object.keys(schema.properties ?? {})) + return { + ...tool, + parameters, + // Plugin handlers historically received raw arguments: use the normalized form only when it + // validates, and keep any arguments the schema does not list. + execute: (args, ctx) => { + const decoded = decode(args) + if (Result.isFailure(decoded) || !decoded.success || typeof decoded.success !== "object") + return tool.execute(args, ctx) + const extra = Object.fromEntries( + Object.entries(args as Record).filter(([key]) => !known.has(key)), + ) + return tool.execute({ ...extra, ...(decoded.success as object) }, ctx) + }, + } +} +// altimate_change end + export namespace ToolRegistry { const log = Log.create({ service: "tool.registry" }) @@ -273,7 +308,7 @@ export namespace ToolRegistry { ...(result.attachments ? { attachments: result.attachments as any } : {}), } }, - }), + }).pipe(Effect.map(fillerSafePlugin)), } } // altimate_change end @@ -391,6 +426,8 @@ export namespace ToolRegistry { ...(Flag.OPENCODE_EXPERIMENTAL_PLAN_MODE && Flag.OPENCODE_CLIENT === "cli" ? [PlanExitTool] : []), // altimate_change start - register custom data engineering tools SqlExecuteTool, + SqlMaterializeTool, + SqlCheckTool, SchemaInspectTool, SqlAnalyzeTool, SqlOptimizeTool, @@ -504,8 +541,9 @@ export namespace ToolRegistry { ) // altimate_change end // altimate_change end - // altimate_change start — include plugin-provided custom tools - return [...resolved, ...custom, ...pluginCustom] + // altimate_change start — reserve the finalizer ID from file/plugin tools even when + // its native candidate is disabled or this catalogue is used without an analyst. + return [...resolved, ...custom, ...pluginCustom].filter((tool) => !Wildcard.match(tool.id, "answer_commit")) // altimate_change end } @@ -518,10 +556,7 @@ export namespace ToolRegistry { return all(plugins, configInput) } - export async function ids( - plugins?: Awaited>, - configInput?: RegistryConfigInput, - ) { + export async function ids(plugins?: Awaited>, configInput?: RegistryConfigInput) { return all(plugins, configInput).then((x) => x.map((t) => t.id)) } // altimate_change end @@ -542,6 +577,13 @@ export namespace ToolRegistry { // engine only; the older datamate route is not offered there. const hidden = await hiddenToolIds() // altimate_change end + // altimate_change start — analyst-only finalization is a gated candidate, never a tool_lookup catalogue entry. + // A configured agent named analyst intentionally retains access. External tools cannot + // use this reserved ID: all() excludes file/plugin collisions and MCP.tools excludes MCP collisions. + if (agent?.name === "analyst" && process.env.ALTIMATE_ANSWER_COMMIT !== "0") { + tools.push(await AppRuntime.runPromise(AnswerCommit.AnswerCommitTool)) + } + // altimate_change end const result = await Promise.all( tools .filter((t) => { @@ -641,10 +683,7 @@ export namespace ToolRegistry { }) : Effect.succeed(undefined) const bridgeWithPlugins = ( - fn: ( - plugins?: Awaited>, - configInput?: RegistryConfigInput, - ) => Promise, + fn: (plugins?: Awaited>, configInput?: RegistryConfigInput) => Promise, ): Effect.Effect => Effect.gen(function* () { const plugins = yield* resolvePlugins() diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index 4f1e9dab28..5a62dbd733 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -19,9 +19,15 @@ import { PermissionNext } from "@/permission/next" import { Log } from "@/util/log" // client trace propagation: a subagent's turn inherits its parent turn's trace import { TraceContext } from "@/altimate/observability/trace-context" +// altimate_change start — task queries share their parent run's remaining budget +import { RunBudget } from "@/altimate/run-budget" +// altimate_change end // re-brand core (ModelV2/ProviderV2) IDs to the provider/schema brands SessionPrompt expects import { ModelID, ProviderID } from "@/provider/schema" import { Effect } from "effect" +// altimate_change start — upstream_fix: recover committed child findings when cancellation interrupts a task. +import { interruptedTaskOutput } from "../session/task-output" +// altimate_change end const log = Log.create({ service: "tool.task" }) /** @@ -149,12 +155,18 @@ export const TaskTool = Tool.define("task", async (ctx) => { const session = await iife(async () => { if (params.task_id) { const found = await Session.get(SessionID.make(params.task_id)).catch(() => {}) - if (found) return found + // altimate_change start — only resume children created for THIS parent and subagent. + // Other agents (or legacy sessions with no binding) may carry wider permissions. + if (found && found.parentID === ctx.sessionID && found.metadata?.taskAgent === agent.name) return found + // altimate_change end } return await Session.create({ parentID: ctx.sessionID, title: params.description + ` (@${agent.name} subagent)`, + // altimate_change start — persist the subagent identity for safe resumptions. + metadata: { taskAgent: agent.name }, + // altimate_change end permission: [ ...childPermission, ...childToolDenies.filter( @@ -175,15 +187,18 @@ export const TaskTool = Tool.define("task", async (ctx) => { providerID: msg.info.providerID, } - ctx.metadata({ + // altimate_change start — upstream_fix: bind partial findings to this child prompt during parent cancellation. + const messageID = MessageID.ascending() + await ctx.metadata({ title: params.description, metadata: { sessionId: session.id, + messageID, model, }, }) + // altimate_change end - const messageID = MessageID.ascending() // altimate_change start — the subagent's turn belongs to the parent turn's client trace (the // parent assistant message's user message); none when that turn is untraced TraceContext.inherit(messageID, msg.info.parentID) @@ -204,6 +219,9 @@ export const TaskTool = Tool.define("task", async (ctx) => { const promptParts = promptOps ? await Effect.runPromise(promptOps.resolvePromptParts(params.prompt)) : await SessionPrompt.resolvePromptParts(params.prompt) + // altimate_change start — upstream_fix: cancellation during task preparation must not start new child work. + ctx.abort.throwIfAborted() + // altimate_change end const promptInput: SessionPrompt.PromptInput = { messageID, @@ -218,25 +236,42 @@ export const TaskTool = Tool.define("task", async (ctx) => { agent: agent.name, parts: promptParts, } - const result = promptOps - ? await Effect.runPromise(promptOps.prompt(promptInput)) - : await SessionPrompt.prompt(promptInput) + // altimate_change start — keep the inherited query cutoff scoped to this child prompt + using queryBudget = defer(RunBudget.registerQueryDeadline(session.id, RunBudget.queryDeadline(ctx.sessionID))) + // altimate_change end + // altimate_change start — upstream_fix: return partial child findings after cancellation, even if its last turn is empty. + let partialOutput: string | undefined + const result = await (promptOps + ? Effect.runPromise(promptOps.prompt(promptInput)) + : SessionPrompt.prompt(promptInput) + ).catch(async (error) => { + if (!ctx.abort.aborted) throw error + partialOutput = await interruptedTaskOutput(session.id, messageID) + if (!partialOutput) throw error + return undefined + }) + if (ctx.abort.aborted) partialOutput ??= await interruptedTaskOutput(session.id, messageID) - const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + const text = result?.parts.findLast((x) => x.type === "text")?.text ?? "" - const output = [ + const output = partialOutput ?? [ `task_id: ${session.id} (for resuming to continue this task if needed)`, "", "", + ...(ctx.abort.aborted ? ["Task interrupted. Findings may be incomplete."] : []), text, "", ].join("\n") + // altimate_change end return { title: params.description, metadata: { sessionId: session.id, model, + // altimate_change start — upstream_fix: distinguish partial task findings from completed work. + ...(ctx.abort.aborted ? { interrupted: true } : {}), + // altimate_change end }, output, } diff --git a/packages/opencode/src/tool/tool.ts b/packages/opencode/src/tool/tool.ts index c4bd52eca1..78ba47288d 100644 --- a/packages/opencode/src/tool/tool.ts +++ b/packages/opencode/src/tool/tool.ts @@ -23,6 +23,10 @@ import { // altimate_change start — humanize tool-call titles at the source import { describeToolCall } from "../altimate/tool-label" // altimate_change end +// altimate_change start — upstream_fix: normalize optional strict-schema fillers before validation +import { fillerSafeParameters } from "./filler-parameters" +import { ToolJsonSchema } from "./json-schema" +// altimate_change end interface Metadata { [key: string]: any @@ -60,8 +64,13 @@ export type Context = { callID?: string extra?: { [key: string]: unknown } messages: SessionV1.WithParts[] + // altimate_change start — pass effective permission rules to search result filtering + permissions?: PermissionV1.Ruleset + // altimate_change end metadata(input: { title?: string; metadata?: M }): Effect.Effect - ask(input: Omit): Effect.Effect + // altimate_change start — allow search approvals to preserve absolute read restrictions + ask(input: Omit & { ruleset?: PermissionV1.Ruleset }): Effect.Effect + // altimate_change end } export interface ExecuteResult { @@ -264,9 +273,15 @@ function wrap, Result extends Metadat Effect.gen(function* () { const toolInfo = typeof init === "function" ? { ...(yield* init(ctx)) } : { ...init } // altimate_change end + // altimate_change start — upstream_fix: share filler handling across all tool schemas + const jsonSchema = ToolJsonSchema.fromTool({ ...toolInfo, id }) + const parameters = fillerSafeParameters(toolInfo.parameters, jsonSchema) + // altimate_change end // Compile the parser closure once per tool init; `decodeUnknownEffect` // allocates a new closure per call, so hoisting avoids re-closing it. - const decode = Schema.decodeUnknownEffect(toolInfo.parameters) + // altimate_change start — upstream_fix: validate after optional fillers become omissions + const decode = Schema.decodeUnknownEffect(parameters) + // altimate_change end const execute = toolInfo.execute toolInfo.execute = (args, ctx) => { const attrs = { @@ -287,6 +302,13 @@ function wrap, Result extends Metadat ) // altimate_change start — telemetry instrumentation for tool execution const startTime = Date.now() + // Search callers without a ruleset use the configured agent defaults, + // including read denials. An unknown agent leaves an empty ruleset, + // which the search filter treats as deny-all rather than ask-everything. + if (["grep", "glob", "list"].includes(id) && !ctx.permissions?.length) { + const agent = yield* agents.get(ctx.agent) + ctx = { ...ctx, permissions: agent?.permission ?? [] } + } // Debug mode: trace each call as it starts and ends (no-op unless ALTIMATE_DEBUG). const endTrace = traceToolCall(id, ctx.callID) const rawResult = yield* execute(decoded as Schema.Schema.Type, ctx).pipe( @@ -321,7 +343,9 @@ function wrap, Result extends Metadat } }).pipe(Effect.orDie, Effect.withSpan("Tool.execute", { attributes: attrs })) } - return toolInfo + // altimate_change start — upstream_fix: expose the same decoder to schema and batch callers + return { ...toolInfo, parameters, jsonSchema } + // altimate_change end }) } diff --git a/packages/opencode/src/tool/truncate.ts b/packages/opencode/src/tool/truncate.ts index 224ed050d4..0172eb2410 100644 --- a/packages/opencode/src/tool/truncate.ts +++ b/packages/opencode/src/tool/truncate.ts @@ -2,7 +2,9 @@ import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { NodePath } from "@effect/platform-node" import { Cause, Duration, Effect, Layer, Option, Schedule, Context } from "effect" import path from "path" -import type { Agent } from "../agent/agent" +// altimate_change start — resolve truncation delegation hints against available subagents. +import { Agent } from "../agent/agent" +// altimate_change end import { FSUtil } from "@opencode-ai/core/fs-util" import { evaluate } from "@/permission/evaluate" import { Config } from "@/config/config" @@ -24,10 +26,15 @@ export type Result = { content: string; truncated: false } | { content: string; export type Options = TruncateCore.Options -function hasTaskTool(agent?: Agent.Info) { - if (!agent?.permission) return false - return evaluate("task", "*", agent.permission).action !== "deny" +// altimate_change start — upstream_fix: named task allow-lists must not suggest denied subagents. +async function taskSubagent(agent?: Agent.Info) { + if (!agent?.permission) return undefined + const agents = (await Agent.list()).filter( + (candidate) => candidate.mode !== "primary" && evaluate("task", candidate.name, agent.permission).action !== "deny", + ) + return (agents.find((candidate) => candidate.name === "explore") ?? agents[0])?.name } +// altimate_change end export interface Interface { readonly cleanup: () => Effect.Effect @@ -110,8 +117,9 @@ export const layer = Layer.effect( const preview = TruncateCore.preview(lines, totalBytes, { maxLines, maxBytes, direction, headRatio }) const file = yield* write(text) - const hint = hasTaskTool(agent) - ? `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` + const subagent = yield* Effect.promise(() => taskSubagent(agent)) + const hint = subagent + ? `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse the Task tool to have ${subagent} agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` : `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse Grep to search the full content or Read with offset/limit to view specific sections.` return { diff --git a/packages/opencode/src/tool/truncation.ts b/packages/opencode/src/tool/truncation.ts index 0b39534086..5eb31c125a 100644 --- a/packages/opencode/src/tool/truncation.ts +++ b/packages/opencode/src/tool/truncation.ts @@ -2,7 +2,9 @@ import fs from "fs/promises" import path from "path" import { Global } from "../global" import { PermissionNext } from "../permission/next" -import type { Agent } from "../agent/agent" +// altimate_change start — resolve truncation delegation hints against available subagents. +import { Agent } from "../agent/agent" +// altimate_change end import { Scheduler } from "../scheduler" import { Filesystem } from "../util/filesystem" import { Glob } from "../util/glob" @@ -54,11 +56,17 @@ export namespace Truncate { // altimate_change end } - function hasTaskTool(agent?: Agent.Info): boolean { - if (!agent?.permission) return false - const rule = PermissionNext.evaluate("task", "*", agent.permission) - return rule.action !== "deny" + // altimate_change start — upstream_fix: named task allow-lists must not suggest denied subagents. + async function taskSubagent(agent?: Agent.Info) { + if (!agent?.permission) return undefined + const agents = (await Agent.list()).filter( + (candidate) => + candidate.mode !== "primary" && + PermissionNext.evaluate("task", candidate.name, agent.permission).action !== "deny", + ) + return (agents.find((candidate) => candidate.name === "explore") ?? agents[0])?.name } + // altimate_change end // altimate_change start — default direction "middle" (head+tail, // tail-weighted elision) via the shared truncate-core.ts algorithm. @@ -74,14 +82,15 @@ export namespace Truncate { return { content: text, truncated: false } } + const subagent = await taskSubagent(agent) const preview = TruncateCore.preview(lines, totalBytes, { maxLines, maxBytes, direction, headRatio }) const id = ToolID.ascending() const filepath = path.join(DIR, id) await Filesystem.write(filepath, text) - const hint = hasTaskTool(agent) - ? `The tool call succeeded but the output was truncated. Full output saved to: ${filepath}\nUse the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` + const hint = subagent + ? `The tool call succeeded but the output was truncated. Full output saved to: ${filepath}\nUse the Task tool to have ${subagent} agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` : `The tool call succeeded but the output was truncated. Full output saved to: ${filepath}\nUse Grep to search the full content or Read with offset/limit to view specific sections.` return { content: TruncateCore.assemble(preview, hint, direction), truncated: true, outputPath: filepath } diff --git a/packages/opencode/test/agent/analyst-data-explorer.test.ts b/packages/opencode/test/agent/analyst-data-explorer.test.ts new file mode 100644 index 0000000000..b91db472c2 --- /dev/null +++ b/packages/opencode/test/agent/analyst-data-explorer.test.ts @@ -0,0 +1,256 @@ +import { expect } from "bun:test" +import { Effect } from "effect" +import { Agent } from "../../src/agent/agent" +import { deriveSubagentSessionPermission } from "../../src/agent/subagent-permissions" +import { Permission } from "../../src/permission" +import { testEffect } from "../lib/effect" + +const it = testEffect(Agent.defaultLayer) + +const action = (agent: Agent.Info, permission: string, pattern = "*") => + Permission.evaluate(permission, pattern, agent.permission).action + +// Mirrors session/prompt.ts: effective = merge(agent.permission, session.permission) +// Parent-agent permissions do not propagate; pass the actual parent-session rules explicitly. +const childEffective = (parentSessionPermission: Agent.Info["permission"], child: Agent.Info) => + Permission.merge(child.permission, deriveSubagentSessionPermission({ parentSessionPermission, subagent: child })) + +for (const name of ["analyst", "data-explorer"] as const) { + it.instance(`${name} denies shell writes, chaining, and substitutions`, () => + Effect.gen(function* () { + const agent = yield* Agent.use.get(name) + for (const command of [ + "cat /dev/null > model.sql", + "cat /dev/null>model.sql", + "tail -n 1 x >> y", + "tail -n 1 x>>y", + "cat x 2> y", + "cat x &> y", + "(cat model.sql)>out.txt", + "{ cat model.sql; } >out.txt", + "find . -delete", + "find . -exec rm {} ;", + "find . -execdir rm {} ;", + "find . -ok rm {} ;", + "find . -fprint y", + "find . -fls y", + "find . -fprintf y %p", + "find . -D tree", + "find . -'delete'", + "ls; rm -rf x", + "ls ; rm -rf x", + "ls && rm x", + "ls || rm x", + "ls\nrm x", + "cat x | tee y", + "cat x|tee y", + "cat $(rm x)", + "cat `rm x`", + "ls -la | cat", + ]) { + expect(action(agent, "bash", command), command).toBe("deny") + } + }), + ) + + it.instance(`${name} disables bash even for simple reads and retains structured read tools`, () => + Effect.gen(function* () { + const agent = yield* Agent.use.get(name) + for (const command of ["ls -la", "cat model.sql", 'find . -name "*.sql"', "dbt list --select x"]) { + expect(action(agent, "bash", command), command).toBe("deny") + } + expect(Permission.disabled(["bash"], agent.permission)).toEqual(new Set(["bash"])) + for (const permission of ["read", "grep", "glob", "sql_execute", "schema_inspect", "warehouse_list"]) { + expect(action(agent, permission), permission).toBe("allow") + } + }), + ) +} + +it.instance("analyst can load skills", () => + Effect.gen(function* () { + const analyst = yield* Agent.use.get("analyst") + expect(action(analyst!, "skill", "dbt-develop")).toBe("allow") + expect(Permission.disabled(["skill"], analyst!.permission)).toEqual(new Set()) + }), +) + +it.instance("analyst may delegate only to data-explorer", () => + Effect.gen(function* () { + const analyst = yield* Agent.use.get("analyst") + expect(action(analyst!, "task", "data-explorer")).toBe("allow") + for (const other of ["general", "explore", "build", "builder", "plan", "reviewer"]) { + expect(action(analyst!, "task", other)).toBe("deny") + } + }), +) + +it.instance("data-explorer is a read-only native subagent", () => + Effect.gen(function* () { + const de = yield* Agent.use.get("data-explorer") + expect(de?.mode).toBe("subagent") + expect(de?.native).toBe(true) + expect(de?.description).toContain("Read-only data exploration") + expect(de?.prompt).toBeTruthy() + const agents = yield* Agent.use.list() + expect(agents.map((a) => a.name)).toContain("data-explorer") + }), +) + +it.instance("data-explorer child cannot write, edit, patch, run rm, write SQL, or delegate", () => + Effect.gen(function* () { + const de = (yield* Agent.use.get("data-explorer"))! + const eff = childEffective([], de) + for (const [perm, pattern] of [ + ["edit", "/proj/a.sql"], + ["write", "/proj/a.sql"], + ["apply_patch", "/proj/a.sql"], + ["bash", "rm -rf /proj"], + ["bash", "rm file.txt"], + ["bash", "dbt run"], + ["bash", "cat README.md > out.txt"], + ["bash", "find . -type f -delete"], + ["bash", "ls"], + ["sql_execute_write", "INSERT INTO t VALUES (1)"], + ["sql_execute_write", "UPDATE t SET a = 1"], + ["sql_execute_write", "DELETE FROM t"], + ["sql_execute_write", "CREATE TABLE t (a int)"], + ["task", "general"], + ["task", "data-explorer"], + ["webfetch", "https://example.com"], + ["websearch", "x"], + ] as const) { + expect(Permission.evaluate(perm, pattern, eff).action).toBe("deny") + } + // sql_execute_write is gated per-statement (pattern = SQL), so it is asserted via evaluate above. + expect(Permission.disabled(["edit", "write", "apply_patch", "task", "bash"], eff)).toEqual( + new Set(["edit", "write", "apply_patch", "task", "bash"]), + ) + }), +) + +it.instance("data-explorer keeps the analyst read-only allow-list", () => + Effect.gen(function* () { + const analyst = (yield* Agent.use.get("analyst"))! + const de = (yield* Agent.use.get("data-explorer"))! + for (const [perm, pattern] of [ + ["sql_execute", "SELECT 1"], + ["schema_inspect", "*"], + ["warehouse_list", "*"], + ["read", "/proj/a.sql"], + ["grep", "x"], + ["glob", "*"], + ["sql_materialize", "*"], + ] as const) { + expect(Permission.evaluate(perm, pattern, de.permission).action).toBe("allow") + } + expect(action(analyst, "sql_materialize")).toBe("allow") + expect(action(analyst, "sql_execute_write")).toBe("deny") + }), +) + +for (const override of ["global", "agent", "both"] as const) { + it.instance( + `analyst denies all shell commands despite ${override} config grants`, + () => + Effect.gen(function* () { + const analyst = yield* Agent.use.get("analyst") + for (const command of ["cat README.md > out.txt", "find . -type f -delete", "ls"]) { + expect(action(analyst, "bash", command), command).toBe("deny") + } + expect(Permission.disabled(["bash"], analyst.permission)).toEqual(new Set(["bash"])) + }), + { + config: { + ...(override !== "agent" && { permission: { bash: "allow" as const } }), + ...(override !== "global" && { + agent: { analyst: { permission: { bash: { "*": "allow" as const, "cat *": "allow" as const } } } }, + }), + }, + }, + ) + + it.instance( + `data-explorer denies all shell commands despite ${override} config grants`, + () => + Effect.gen(function* () { + const de = (yield* Agent.use.get("data-explorer"))! + const eff = childEffective(Permission.fromConfig({ bash: "allow" }), de) + for (const command of ["cat README.md > out.txt", "find . -type f -delete", "ls"]) { + expect(Permission.evaluate("bash", command, eff).action).toBe("deny") + } + expect(Permission.disabled(["bash"], eff)).toEqual(new Set(["bash"])) + }), + { + config: { + ...(override !== "agent" && { permission: { bash: "allow" as const } }), + ...(override !== "global" && { + agent: { "data-explorer": { permission: { bash: { "*": "allow" as const, "cat *": "allow" as const } } } }, + }), + }, + }, + ) +} + +it.instance("child effective permissions retain parent-session read denials", () => + Effect.gen(function* () { + const de = (yield* Agent.use.get("data-explorer"))! + const eff = childEffective(Permission.fromConfig({ read: { "/private/*": "deny" } }), de) + expect(Permission.evaluate("read", "/private/notes.txt", eff).action).toBe("deny") + expect(Permission.evaluate("read", "/proj/a.sql", eff).action).toBe("allow") + }), +) + +it.instance("a reused task session carrying allow rules cannot widen data-explorer", () => + Effect.gen(function* () { + const de = (yield* Agent.use.get("data-explorer"))! + // A foreign session ruleset appended last would win under last-match evaluation if the guard failed; + // data-explorer's explicit denies are re-applied by the agent ruleset itself, so assert the agent + // ruleset alone already denies and that task.ts refuses to reuse foreign sessions (see task.test.ts). + for (const perm of ["edit", "write", "apply_patch", "task", "sql_execute_write"]) { + expect(Permission.evaluate(perm, "*", de.permission).action).toBe("deny") + } + }), +) + +for (const override of ["global", "agent"] as const) { + it.instance( + `data-explorer preserves its read-only boundary after ${override} wildcard and write grants`, + () => + Effect.gen(function* () { + const de = (yield* Agent.use.get("data-explorer"))! + for (const permission of [ + "training_save", + "training_remove", + "edit", + "write", + "apply_patch", + "sql_execute_write", + "task", + "unknown_mutating_tool", + ]) { + expect(action(de, permission)).toBe("deny") + } + expect(action(de, "sql_execute")).toBe("allow") + expect(action(de, "read", "private/data.txt")).toBe("deny") + expect(action(de, "read", "public/data.txt")).toBe("allow") + }), + { + config: + override === "global" + ? { permission: { "*": "allow", read: { "private/**": "deny" } } } + : { + agent: { + "data-explorer": { + permission: { + "*": "allow", + edit: "allow", + sql_execute_write: "allow", + read: { "private/**": "deny" }, + }, + }, + }, + }, + }, + ) +} diff --git a/packages/opencode/test/agent/answer-commit.test.ts b/packages/opencode/test/agent/answer-commit.test.ts new file mode 100644 index 0000000000..0aa2987bf1 --- /dev/null +++ b/packages/opencode/test/agent/answer-commit.test.ts @@ -0,0 +1,1674 @@ +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { createOpenAICompatible } from "@ai-sdk/openai-compatible" +import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { SessionProjector } from "@opencode-ai/core/session/projector" +import path from "node:path" +import { ProjectV2 } from "@opencode-ai/core/project" +import { Effect, Layer } from "effect" +import { Agent } from "../../src/agent/agent" +import { renderAnswer } from "../../src/altimate/tools/answer-commit" +import { TraceContext } from "../../src/altimate/observability/trace-context" +import { ToolLookupTool } from "../../src/altimate/tools/tool-lookup" +import { GlobalBus, type GlobalEvent } from "../../src/bus/global" +import { OutputCollector } from "../../src/cli/cmd/run-output" +import { MCP } from "../../src/mcp" +import { Permission } from "../../src/permission" +import { Plugin } from "../../src/plugin" +import { Provider } from "../../src/provider/provider" +import { Session } from "../../src/session/session" +import { Session as LegacySession } from "../../src/session" +import { SessionPrompt } from "../../src/session/prompt" +import { SessionRoutes } from "../../src/server/routes/session" +import { SessionTermination } from "../../src/session/termination" +import { SessionCompaction } from "../../src/session/compaction" +import { MessageV2, isEchoTransportError } from "../../src/session/message-v2" +import { SessionSummary } from "../../src/session/summary" +// altimate_change start — error provenance fixtures for committed-answer echoes +import { APICallError } from "ai" +import { SessionRetry } from "../../src/session/retry" +import { Database, eq, sql } from "../../src/storage/db" +import { MessageTable } from "@opencode-ai/core/session/sql" +import { Snapshot } from "../../src/snapshot" +import * as RunAccounting from "../../src/cli/cmd/run-accounting" +import { ACPEvent } from "../../src/acp/event" +import { ACPSession } from "../../src/acp/session" +import type { Event as ClientEvent, OpencodeClient, SessionMessageResponse } from "@opencode-ai/sdk/v2" +// altimate_change end +import { RuntimeFlags } from "../../src/effect/runtime-flags" +import { ModelID, ProviderID } from "../../src/provider/schema" +import { MessageID, PartID, SessionID } from "../../src/session/schema" +import { SessionTools } from "../../src/session/tools" +import { ToolRegistry } from "../../src/tool/registry" +import { Truncate } from "../../src/tool/truncate" +import { Token } from "../../src/util/token" +import { initTool } from "../altimate/tool-fixture" +import { TestInstance } from "../fixture/fixture" +import { testEffect } from "../lib/effect" +import { reply } from "../lib/llm-server" +import { withLegacyInstance } from "../session/legacy-instance" + +const model = { providerID: ProviderID.opencode, modelID: ModelID.make("test") } +const it = testEffect(Layer.mergeAll(Agent.defaultLayer, ToolRegistry.layer)) +const promptTests = testEffect( + LayerNode.buildLayer(LayerNode.group([SessionPrompt.node, Session.node, Agent.node, SessionProjector.node]), { + replacements: [ + LayerNode.replace( + MCP.node, + Layer.mock(MCP.Service, { + tools: () => Effect.succeed({}), + snapshot: () => Effect.succeed({ tools: {}, meta: undefined }), + listMeta: () => Effect.succeed(undefined), + entry: () => Effect.succeed(undefined), + }), + ), + LayerNode.replace( + SessionSummary.node, + Layer.mock(SessionSummary.Service, { + summarize: () => Effect.void, + diff: () => Effect.succeed([]), + computeDiff: () => Effect.succeed([]), + }), + ), + LayerNode.replace(RuntimeFlags.node, RuntimeFlags.layer({ experimentalEventSystem: true })), + ], + }), +) +const promptModel = { providerID: ProviderID.make("test"), modelID: ModelID.make("test-model") } +const echoInstruction = "Tools are disabled. Reply with exactly the text returned by answer_commit and nothing else." + +let previousToggle: string | undefined + +beforeEach(() => { + previousToggle = process.env.ALTIMATE_ANSWER_COMMIT + delete process.env.ALTIMATE_ANSWER_COMMIT +}) + +afterEach(() => { + if (previousToggle === undefined) delete process.env.ALTIMATE_ANSWER_COMMIT + else process.env.ALTIMATE_ANSWER_COMMIT = previousToggle +}) + +describe("answer_commit agent scope", () => { + test("single-instance answer_commit cases use scoped Effect fixtures", async () => { + const source = await Bun.file(import.meta.path).text() + expect(source).not.toMatch(/\bInstance\.provide\s*\(/) + expect(source).not.toMatch(/\bawait\s+tmpdir\s*\(/) + }) + + it.instance("analyst permits and receives answer_commit", () => + Effect.gen(function* () { + const agents = yield* Agent.Service + const registry = yield* ToolRegistry.Service + const analyst = yield* agents.get("analyst") + expect(Permission.evaluate("answer_commit", "*", analyst.permission).action).toBe("allow") + const tools = yield* registry.tools({ ...model, agent: analyst }) + expect(tools.filter((tool) => tool.id === "answer_commit")).toHaveLength(1) + }), + ) + + it.instance( + "a custom agent named analyst receives answer_commit by design", + () => + Effect.gen(function* () { + const agents = yield* Agent.Service + const registry = yield* ToolRegistry.Service + const analyst = yield* agents.get("analyst") + expect(analyst.description).toBe("Configured analyst") + expect(analyst.prompt).toBe("Use the configured analyst instructions.") + // Configuration customizes the native analyst; access intentionally follows its name. + expect(Permission.evaluate("answer_commit", "*", analyst.permission).action).toBe("allow") + const tools = yield* registry.tools({ ...model, agent: analyst }) + expect(tools.filter((tool) => tool.id === "answer_commit")).toHaveLength(1) + }), + { + config: { + agent: { + analyst: { + description: "Configured analyst", + prompt: "Use the configured analyst instructions.", + }, + }, + }, + }, + ) + + it.instance("session resolver selects native answer_commit over a plugin tool with the same id", () => + withLegacyInstance( + Effect.gen(function* () { + const tmp = yield* TestInstance + const agents = yield* Agent.Service + const analyst = yield* agents.get("analyst") + let pluginCalls = 0 + const plugin = Layer.mock(Plugin.Service, { + list: () => + Effect.succeed([ + { + tool: { + answer_commit: { + description: "Plugin answer_commit collision", + args: {}, + execute: async () => { + pluginCalls += 1 + return "Plugin answer" + }, + }, + }, + }, + ]), + trigger: (_name, _input, output) => Effect.succeed(output), + }) + const resolverModel: Provider.Model = { + id: model.modelID, + providerID: model.providerID, + api: { id: model.modelID, url: "https://example.com", npm: "@ai-sdk/openai" }, + name: "Test model", + capabilities: { + temperature: true, + reasoning: false, + attachment: false, + toolcall: true, + interleaved: false, + input: { text: true, audio: false, image: false, video: false, pdf: false }, + output: { text: true, audio: false, image: false, video: false, pdf: false }, + }, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 128000, output: 4096 }, + status: "active", + options: {}, + headers: {}, + release_date: "2026-01-01", + } + const sessionID = SessionID.make("ses_answer_commit_collision") + const messageID = MessageID.make("msg_answer_commit_collision") + const tools = yield* SessionTools.resolve({ + agent: analyst, + model: resolverModel, + bypassAgentCheck: false, + messages: [], + session: { + id: sessionID, + slug: "answer-commit-collision", + projectID: ProjectV2.ID.make("project"), + directory: tmp.directory, + title: "Answer commit collision", + version: "1", + time: { created: 0, updated: 0 }, + }, + processor: { + message: { + id: messageID, + sessionID, + role: "assistant", + time: { created: 0 }, + parentID: MessageID.make("msg_user"), + modelID: model.modelID, + providerID: model.providerID, + mode: "analyst", + agent: "analyst", + path: { cwd: tmp.directory, root: tmp.directory }, + cost: 0, + tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, + }, + updateToolCall: () => Effect.succeed(undefined), + completeToolCall: () => Effect.void, + }, + promptOps: { + resolvePromptParts: () => Effect.succeed([]), + prompt: () => Effect.die("unexpected prompt"), + cancel: () => Effect.void, + }, + }).pipe( + Effect.provide( + Layer.mergeAll( + plugin, + ToolRegistry.layer.pipe(Layer.provide(plugin)), + Layer.mock(Permission.Service, { ask: () => Effect.void }), + Layer.mock(MCP.Service, { tools: () => Effect.succeed({}) }), + Layer.mock(Truncate.Service, {}), + ), + ), + ) + const result = yield* Effect.promise(() => + Promise.resolve( + tools.answer_commit.execute!( + { + fields: [{ name: "Revenue", value: 42 }], + basis: "Revenue sums orders.amount across all orders, with one row per order.", + }, + { toolCallId: "call_answer_commit_collision", messages: [], abortSignal: AbortSignal.any([]) }, + ), + ), + ) + expect(result).toMatchObject({ + title: "Answer committed", + output: "Revenue sums orders.amount across all orders, with one row per order.\n\n**Answer:** Revenue: 42", + }) + expect(pluginCalls).toBe(0) + }), + ), + ) + + it.instance( + "builder, plan, data-explorer and custom agents never receive answer_commit", + () => + Effect.gen(function* () { + const agents = yield* Agent.Service + const registry = yield* ToolRegistry.Service + for (const name of ["builder", "build", "plan", "data-explorer", "custom"]) { + const agent = yield* agents.get(name) + expect(agent).toBeDefined() + const tools = yield* registry.tools({ ...model, agent }) + expect(tools.map((tool) => tool.id)).not.toContain("answer_commit") + } + expect((yield* registry.tools(model)).map((tool) => tool.id)).not.toContain("answer_commit") + }), + { + config: { + permission: { "*": "allow", answer_commit: "allow" }, + agent: { + custom: { + description: "A custom agent", + mode: "primary", + permission: { "*": "allow", answer_commit: "allow" }, + }, + }, + }, + }, + ) + + it.instance("tool_lookup does not expose answer_commit to builder", () => + withLegacyInstance( + Effect.gen(function* () { + const registry = yield* ToolRegistry.Service + const tool = yield* Effect.promise(() => initTool(ToolLookupTool)) + const ctx = { + sessionID: SessionID.make("ses_answer_commit"), + messageID: MessageID.make("msg_answer_commit"), + callID: "call_answer_commit_lookup", + agent: "builder", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask: async () => {}, + } + const missing = yield* Effect.promise(() => tool.execute({ tool_name: "answer_commit" }, ctx)) + expect(missing.title).toBe("Tool not found") + const listing = yield* Effect.promise(() => tool.execute({ tool_name: "__missing_tool" }, ctx)) + expect(listing.output).not.toContain("answer_commit") + expect((yield* registry.allInfos()).map((info) => info.id)).not.toContain("answer_commit") + expect(yield* registry.ids()).not.toContain("answer_commit") + }), + ), + ) + + it.instance("ALTIMATE_ANSWER_COMMIT=0 removes the analyst candidate and can be toggled back on", () => + Effect.gen(function* () { + const agents = yield* Agent.Service + const registry = yield* ToolRegistry.Service + const analyst = yield* agents.get("analyst") + process.env.ALTIMATE_ANSWER_COMMIT = "0" + expect((yield* registry.tools({ ...model, agent: analyst })).map((tool) => tool.id)).not.toContain( + "answer_commit", + ) + process.env.ALTIMATE_ANSWER_COMMIT = "1" + expect((yield* registry.tools({ ...model, agent: analyst })).map((tool) => tool.id)).toContain("answer_commit") + }), + ) + + it.instance("answer_commit is reserved from plugin and file tools even when the native tool is disabled", () => + withLegacyInstance( + Effect.gen(function* () { + const tmp = yield* TestInstance + const agents = yield* Agent.Service + const analyst = yield* agents.get("analyst") + const builder = yield* agents.get("builder") + const filename = path.join(tmp.directory, "answer.ts") + yield* Effect.promise(() => + Bun.write( + filename, + `export const commit = { description: "File collision", args: {}, execute: async () => "External answer" }`, + ), + ) + const plugins = [ + { + tool: { + answer_commit: { description: "Plugin collision", args: {}, execute: async () => "External answer" }, + ordinary_tool: { description: "Ordinary plugin tool", args: {}, execute: async () => "OK" }, + }, + }, + ] + const config = { matches: [filename], config: {} } + const infos = yield* Effect.promise(() => ToolRegistry.allInfos(plugins, config)) + expect(infos.map((tool) => tool.id)).not.toContain("answer_commit") + expect(infos.map((tool) => tool.id)).toContain("ordinary_tool") + for (const toggle of ["0", "1"]) { + process.env.ALTIMATE_ANSWER_COMMIT = toggle + for (const agent of [analyst, builder]) { + const tools = yield* Effect.promise(() => ToolRegistry.tools(model, agent, plugins, undefined, config)) + expect(tools.filter((tool) => tool.id === "answer_commit")).toHaveLength( + toggle === "1" && agent.name === "analyst" ? 1 : 0, + ) + expect(tools.map((tool) => tool.id)).toContain("ordinary_tool") + } + } + const platform = Object.getOwnPropertyDescriptor(process, "platform")! + Object.defineProperty(process, "platform", { ...platform, value: "win32" }) + try { + const variants = [{ tool: { Answer_Commit: plugins[0].tool.answer_commit } }] + const infos = yield* Effect.promise(() => ToolRegistry.allInfos(variants, config)) + expect(Permission.evaluate("Answer_Commit", "*", analyst.permission).action).toBe("allow") + expect(infos.map((tool) => tool.id)).not.toContain("Answer_Commit") + } finally { + Object.defineProperty(process, "platform", platform) + } + }), + ), + ) +}) + +// altimate_change start — committed-answer echo transport and delivery regressions +// Replay immutable bus events through the real ACP handler with the message state +// available at each event, rather than letting later recovery rewrite its lookup. +const acpText = (events: ClientEvent[], sessionID: string) => Effect.gen(function* () { + const session = yield* ACPSession.Service + yield* session.create({ id: sessionID, cwd: process.cwd() }) + const messages = new Map() + const chunks: string[] = [] + const subscription = new ACPEvent.Subscription({ + session, + sdk: { session: { message: async ({ messageID }: { messageID: string }) => ({ data: messages.get(messageID) }) } } as unknown as OpencodeClient, + connection: { + sessionUpdate: async ({ update }) => { + if (update.sessionUpdate === "agent_message_chunk" && update.content.type === "text") chunks.push(update.content.text) + }, + }, + }) + for (const event of events) { + if (event.type === "message.updated") { + const info = event.properties.info + messages.set(info.id, { info, parts: messages.get(info.id)?.parts ?? [] }) + } + if (event.type === "message.part.updated") { + const part = event.properties.part + const message = messages.get(part.messageID) + if (message) message.parts = [...message.parts.filter((old) => old.id !== part.id), part] + } + if (event.type === "message.part.removed") { + const message = messages.get(event.properties.messageID) + if (message) message.parts = message.parts.filter((part) => part.id !== event.properties.partID) + } + yield* Effect.promise(() => subscription.handle(event)) + } + return chunks +}).pipe(Effect.provide(ACPSession.defaultLayer)) + +for (const location of ["reply", "previous", "compaction fallback"] as const) { + test(`run output drops removed text from the ${location} before delivering a committed answer`, () => { + const output = new OutputCollector() + output.text("Summary so far: ", { partID: "partial", compaction: location === "compaction fallback" }) + if (location === "previous") output.stepStart() + output.remove("partial") + expect(output.content()).toBe("(no text output — tool-only response)") + if (location === "previous") { + output.text("DONE", { partID: "acknowledgement" }) + expect(output.content()).toBe("DONE") + } + output.text("42", { partID: "committed" }) + expect(output.content()).toBe("42") + }) +} + +for (const scenario of [ + "text", + "echo-length", + "echo-mismatch", + "echo-no-text", + "echo-write-order", + "echo-transport-error", + "echo-socket-reset", + "echo-policy-denied", + "echo-guardrail-denied", + "echo-guardrail-overflow-text", + "echo-forbidden", + "echo-snapshot-error", + "echo-overflow-enabled", + "echo-reactive-compaction", + "compaction-error", + "compaction-error-queued-user", + "compaction-queued-user", + "overflow-code-compaction", + "compaction-streamed-error", + "compaction-empty-summary", + "compaction-empty-summary-queued-user", + "compaction-empty-summary-streamed", + "compaction-empty-summary-without-commit", + "compaction-forbidden", + "compaction-guardrail-denied", + "compaction-aborted", + "compaction-content-filter", + "echo-overflow-disabled", + "echo-preparation-error", + "echo-aborted", + "echo-harness-deadline", + "echo-user-cancelled", + "echo-budget-finalization", + "echo-budget-finalization-publishing", + "echo-content-filter", + "echo-http-content-filter", + "echo-other", + "echo-exact-length", + "echo-capped", + "echo-under-cap", + "json_schema", + "json_schema-history", + "new-user", + "new-user-after-commit-reversed-ids", + "queued-user", + "queued-user-reversed-ids", + "user-during-echo", + "user-during-mismatched-echo", + "user-during-echo-reversed-ids", + "user-during-echo-reversed-ids-same-time", + "failed", + "failed-after-success", + "sibling-tool", +] as const) { + const structured = scenario.startsWith("json_schema") + const priorCommit = scenario === "json_schema-history" + const budgetFinalization = scenario.startsWith("echo-budget-finalization") + const tinyCap = scenario === "echo-capped" || scenario === "echo-under-cap" + const compacting = scenario.startsWith("compaction-") + const emptySummary = scenario.startsWith("compaction-empty-summary") + const streamedSummary = scenario === "compaction-streamed-error" || scenario === "compaction-empty-summary-streamed" + const userDuringEcho = scenario.startsWith("user-during-") + const queuedUser = scenario === "queued-user" || scenario === "queued-user-reversed-ids" + const userAfterCommit = scenario === "new-user-after-commit-reversed-ids" + const userAfterCompaction = scenario === "compaction-queued-user" + const userDuringFailedCompaction = scenario === "compaction-error-queued-user" || scenario === "compaction-empty-summary-queued-user" + const overflowCodeCompaction = scenario === "overflow-code-compaction" + const summaryText = "Retained summary: counted 42 records using records.id." + const reversedIDs = scenario.includes("reversed-ids") + const name = { + text: "text requests offer answer_commit and immediately echo a successful commit without a step limit", + "echo-length": "a length-limited echo is replaced with the stored committed output verbatim", + "echo-mismatch": "a mismatched echo delivers the committed output exactly once to run output and ACP", + "echo-no-text": "a stop echo without text publishes the committed output as a completed timed text part", + "echo-write-order": "a committed echo persists its authoritative text before any finished message update", + "echo-transport-error": "a 503 echo transport failure publishes the committed output without fatal events", + "echo-socket-reset": "a socket reset during echo publishes the committed output without fatal events", + "echo-policy-denied": "a 400 structured policy denial during echo emits fatal message and session errors", + "echo-guardrail-denied": "a 503 orchestration guardrail denial during echo remains fatal", + "echo-guardrail-overflow-text": "a 503 guardrail denial with overflow text during echo stays fatal without publishing or compacting", + "echo-forbidden": "a 403 echo failure retains its fatal error without publishing the committed output", + "echo-snapshot-error": "a local snapshot failure before the echo request retains its fatal UnknownError", + "echo-overflow-enabled": "a context overflow during echo publishes the committed output without fatal events", + "echo-reactive-compaction": "an echo triggering reactive compaction publishes only the committed text without a continuation", + "compaction-error": "a 503 compaction summariser failure after a commit publishes the committed output without fatal events", + "compaction-error-queued-user": "a user queued during a 503 compaction failure receives tools and its own reply after the original committed answer", + "compaction-queued-user": "a queued user after successful compaction preserves the summary and receives tools after a new committed-answer message", + "overflow-code-compaction": "a 413 content_length_exceeded response triggers compaction and resumes with tools", + "compaction-streamed-error": "a streamed partial compaction summary followed by a 503 delivers only the committed answer to ACP and run", + "compaction-empty-summary": "two empty compaction summaries after a commit publish the committed output without fatal events", + "compaction-empty-summary-queued-user": "a user queued during two empty compaction summaries receives tools and its own reply after the original committed answer", + "compaction-empty-summary-streamed": "two empty compaction summaries after streamed partial text deliver only the committed answer to ACP and run", + "compaction-empty-summary-without-commit": "two empty compaction summaries without a commit retain the existing UnknownError", + "compaction-forbidden": "a 403 compaction summariser failure after a commit remains fatal", + "compaction-guardrail-denied": "a 503 orchestration guardrail denial during compaction after a commit remains fatal", + "compaction-aborted": "an aborted compaction after a commit retains its fatal error without publishing the committed output", + "compaction-content-filter": "a content-filtered compaction after a commit retains its fatal error without publishing the committed output", + "echo-overflow-disabled": "an unrecoverable context overflow after a commit publishes the committed output and records the cause", + "echo-preparation-error": "a local echo preparation failure after a commit is not recovered", + "echo-aborted": "an aborted echo retains its fatal error without publishing the committed output", + "echo-harness-deadline": "a harness deadline abort during echo publishes the stored committed text exactly once", + "echo-user-cancelled": "a user cancellation during echo does not finalize the stored committed answer", + "echo-budget-finalization": "budget finalization after a hard abort reuses the committed answer without starting a model turn", + "echo-budget-finalization-publishing": "budget finalization reuses the committed answer when the hard deadline arrives during publication", + "echo-content-filter": "a content-filtered echo retains its fatal error and original text", + "echo-http-content-filter": "an HTTP content-filtered echo retains its fatal error without publishing the committed output", + "echo-other": "an echo with an other finish keeps other and publishes the committed output", + "echo-exact-length": "an exact echo with a length finish ends normally with stop", + "echo-capped": "a dispatch-capped commit preserves the full rendered answer in the final assistant text", + "echo-under-cap": "a commit below the dispatch cap preserves the rendered answer in the final assistant text", + json_schema: "json_schema requests omit answer_commit and never enter echo mode", + "json_schema-history": "json_schema requests preserve masked commit history without re-advertising answer_commit", + "new-user": "a new user message resets a successful commit before the next step", + "new-user-after-commit-reversed-ids": "a later caller-supplied ID sorting before the committed request is detected at the next loop snapshot", + "queued-user": "a user message persisted after the snapshot keeps tools enabled and prevents stale echo", + "queued-user-reversed-ids": "a later caller-supplied ID sorting before the committed request is detected after the snapshot", + "user-during-echo": "a user message persisted during echo generation is answered on the next step", + "user-during-mismatched-echo": "a user message persisted during a mismatched echo preserves the committed answer and is answered in the same prompt call", + "user-during-echo-reversed-ids": "a later caller-supplied ID sorting before the committed request preserves its echo and keeps tools available", + "user-during-echo-reversed-ids-same-time": "equal request creation times use persisted sequence for caller-supplied IDs sorting backwards", + failed: "a failed commit leaves tools available for repair", + "failed-after-success": "a successful commit followed by validation failure leaves tools available for repair", + "sibling-tool": "a successful commit enters echo mode even when a sibling tool follows it", + }[scenario] + promptTests.instance( + name, + () => + withLegacyInstance( + Effect.gen(function* () { + const prompt = yield* SessionPrompt.Service + const sessions = yield* Session.Service + const agents = yield* Agent.Service + expect((yield* agents.get("analyst")).steps).toBeUndefined() + const chat = yield* sessions.create({ title: "Answer commit finalization" }) + const requests: { tools?: { function: { name: string } }[]; messages: unknown[]; tool_choice?: string }[] = [] + const args = { + ...(scenario === "echo-capped" + ? { + rows: { + columns: ["Region", "Revenue"], + values: Array.from({ length: 30 }, (_, i) => [`Region ${i + 1}`, (i + 1) * 100]), + }, + } + : { fields: [{ name: "", value: 42 }] }), + answer_only: true, + basis: "Counted all records at record grain using records.id.", + } + const renderedAnswer = renderAnswer(args) + const originalUserID = reversedIDs ? MessageID.make(`msg_zzzz_original_${chat.id}`) : undefined + let queuedUserID: MessageID | undefined + const queuedReplies: Promise[] = [] + const insertUser = async (created = Date.now()) => { + if (reversedIDs) { + const original = MessageV2.get({ sessionID: chat.id, messageID: originalUserID! }) + const createdSpy = scenario === "user-during-echo-reversed-ids-same-time" + ? spyOn(Date, "now").mockReturnValue(original.info.time.created) + : undefined + try { + const next = await SessionPrompt.prompt({ + sessionID: chat.id, + messageID: MessageID.make(`msg_aaaa_later_${chat.id}`), + agent: "analyst", + model: promptModel, + noReply: true, + parts: [{ type: "text", text: "A new question: how many sources?" }], + }) + expect(next.info.id < original.info.id).toBe(true) + if (createdSpy) expect(next.info.time.created).toBe(original.info.time.created) + queuedUserID = next.info.id + } finally { + createdSpy?.mockRestore() + } + return + } + const userID = MessageID.ascending() + await LegacySession.updateMessage({ + id: userID, + sessionID: chat.id, + role: "user", + agent: "analyst", + model: promptModel, + time: { created }, + }) + await LegacySession.updatePart({ + id: PartID.ascending(), + messageID: userID, + sessionID: chat.id, + type: "text", + text: "A new question: how many sources?", + }) + queuedUserID = userID + } + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: Object.assign( + async (_url: string | URL | Request, init?: RequestInit) => { + if (typeof init?.body !== "string") throw new Error("expected a JSON request body") + requests.push(JSON.parse(init.body)) + if (requests.length > (userDuringFailedCompaction ? emptySummary ? 4 : 3 : priorCommit ? 4 : userDuringEcho || emptySummary || userAfterCompaction || overflowCodeCompaction ? 3 : 2)) + throw new Error("unexpected extra generation") + const step = priorCommit && requests.length > 2 ? requests.length - 2 : requests.length + if (step === 2 && userDuringFailedCompaction) { + const queued = await SessionPrompt.prompt({ + sessionID: chat.id, + agent: "analyst", + model: promptModel, + noReply: true, + parts: [{ type: "text", text: "A new question: how many sources?" }], + }) + queuedUserID = queued.info.id + // Register both waiting callers after persistence and before the + // summariser responds, without racing asynchronous prompt setup. + queuedReplies.push(SessionPrompt.loop({ sessionID: chat.id }), SessionPrompt.loop({ sessionID: chat.id })) + } + if (step === 1 && overflowCodeCompaction) { + return new Response(JSON.stringify({ error: { code: "content_length_exceeded", message: "Request entity too large" } }), { + status: 413, + headers: { "Content-Type": "application/json" }, + }) + } + if ( + step === 2 && + [ + "echo-transport-error", "echo-policy-denied", "echo-guardrail-denied", "echo-guardrail-overflow-text", "echo-forbidden", "echo-http-content-filter", + "compaction-error", "compaction-error-queued-user", "compaction-forbidden", "compaction-guardrail-denied", "compaction-content-filter", "echo-overflow-disabled", "echo-overflow-enabled", + ].includes(scenario) + ) { + const error = + scenario === "echo-policy-denied" + ? { code: "policy_violation", message: "Request denied" } + : scenario === "echo-guardrail-overflow-text" + ? { code: "guardrail_intervened", message: "maximum context length exceeded" } + : scenario === "echo-http-content-filter" || scenario === "compaction-content-filter" + ? { code: "content_filter", message: "Echo request blocked by content policy" } + : scenario === "echo-overflow-disabled" || scenario === "echo-overflow-enabled" + ? { code: "context_length_exceeded", message: "maximum context length exceeded" } + : { message: compacting ? "Compaction summariser rejected the request" : "Echo transport rejected the request" } + const guardrail = scenario === "echo-guardrail-denied" || scenario === "compaction-guardrail-denied" + return new Response(JSON.stringify(guardrail + ? { error, orchestrationError: { code: "guardrail_intervened" } } + : { error }), { + status: scenario === "echo-transport-error" || scenario === "compaction-error" || scenario === "compaction-error-queued-user" || guardrail || scenario === "echo-guardrail-overflow-text" + ? 503 + : scenario === "echo-forbidden" || scenario === "compaction-forbidden" ? 403 : 400, + headers: { "Content-Type": "application/json" }, + }) + } + if (step === 2 && scenario === "echo-socket-reset") { + throw Object.assign(new Error("socket reset"), { code: "ECONNRESET" }) + } + if (step === 2 && (scenario === "echo-aborted" || scenario === "compaction-aborted")) { + throw new DOMException("Echo request aborted", "AbortError") + } + if (step === 2 && ["echo-harness-deadline", "echo-user-cancelled", "echo-budget-finalization"].includes(scenario)) { + const response = await SessionRoutes().request(`/${chat.id}/abort`, { + method: "POST", + headers: scenario === "echo-user-cancelled" ? {} : { "x-altimate-run-budget": "hard-deadline" }, + }) + expect(response.status).toBe(200) + expect(init?.signal?.aborted).toBe(true) + throw init!.signal!.reason + } + if ( + (scenario === "new-user" && requests.length === 1) || + (userDuringEcho && requests.length === 2) + ) { + await insertUser() + } + const response = + step === 1 + ? // The structured case deliberately attempts a stale commit call to verify it cannot activate echo mode. + scenario === "sibling-tool" + ? reply().tool("answer_commit", args).tool("tool_lookup", { tool_name: "__missing_tool" }).item() + : scenario === "failed-after-success" + ? reply().tool("answer_commit", args).tool("answer_commit", {}).item() + : scenario === "compaction-empty-summary-without-commit" + ? reply().tool("tool_lookup", { tool_name: "__missing_tool" }).usage({ input: 95000, output: 1 }).item() + : reply() + .tool("answer_commit", scenario === "failed" ? {} : args) + .usage({ input: compacting ? 95000 : 0, output: 1 }) + .item() + : step === 2 && (userAfterCompaction || overflowCodeCompaction) + ? reply().text(summaryText).stop().item() + : userDuringFailedCompaction && step === (emptySummary ? 4 : 3) + ? reply().text("3").stop().item() + : streamedSummary + ? reply().text("Summary so far: ").stop().item() + : emptySummary || scenario === "echo-no-text" + ? (emptySummary ? reply().text("") : reply()).stop().item() + : structured && (!priorCommit || requests.length > 2) + ? reply().tool("StructuredOutput", { count: 42 }).item() + : reply() + .text( + scenario === "new-user" || queuedUser || userAfterCommit || step === 3 + ? "3" + : scenario === "echo-length" + ? "4" + : scenario === "echo-mismatch" || scenario === "echo-other" || scenario === "echo-reactive-compaction" || + scenario === "user-during-mismatched-echo" || reversedIDs + ? "The answer is 42." + : "42", + ) + .usage({ input: scenario === "echo-reactive-compaction" ? 95000 : 0, output: 1 }) + .stop() + .item() + if (response.type !== "sse") throw new Error("expected SSE response") + const chunks = [...response.head, ...response.tail] + if (step === 1 && scenario === "failed-after-success") { + // OpenAI-compatible streams identify distinct calls by index, including calls to the same tool. + let index = -1 + for (const chunk of chunks) { + const event = chunk as { + choices?: { delta?: { tool_calls?: { id?: string; index: number }[] } }[] + } + for (const choice of event.choices ?? []) { + for (const call of choice.delta?.tool_calls ?? []) { + if (call.id) index++ + call.index = index + } + } + } + } + if ( + step === 2 && + (scenario === "echo-length" || + scenario === "echo-exact-length" || + scenario === "echo-other" || + scenario === "echo-content-filter") + ) { + for (const chunk of chunks) { + const event = chunk as { choices?: { finish_reason?: string }[] } + for (const choice of event.choices ?? []) { + if (choice.finish_reason === "stop") + choice.finish_reason = + scenario === "echo-content-filter" ? "content_filter" : scenario === "echo-other" ? "other" : "length" + } + } + } + return new Response( + chunks.map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + "data: [DONE]\n\n", + { headers: { "Content-Type": "text/event-stream" } }, + ) + }, + { preconnect: () => undefined }, + ), + }).chatModel("test-model") + const doStream = language.doStream.bind(language) + const streamSpy = scenario === "compaction-streamed-error" + ? spyOn(language, "doStream").mockImplementation(async (options) => { + const response = await doStream(options) + if (requests.length !== 2) return response + let failed = false + return { ...response, stream: response.stream.pipeThrough(new TransformStream({ + transform(value, controller) { + if (failed) return + controller.enqueue(value) + if (value.type !== "text-delta") return + failed = true + controller.enqueue({ type: "error", error: new APICallError({ + message: "Compaction summariser failed after partial text", + url: "https://unused.invalid/v1/chat/completions", + requestBodyValues: {}, + statusCode: 503, + isRetryable: true, + }) }) + }, + })) } + }) + : undefined + // Completion hooks can discard streamed text, leaving an empty summary + // on both attempts even though clients already saw its deltas. + const trigger = Plugin.trigger + const completedTextIDs: PartID[] = [] + const textHookSpy = spyOn(Plugin, "trigger").mockImplementation(async (...input) => { + if (input[0] === "experimental.text.complete") + completedTextIDs.push(PartID.make((input[1] as { partID: string }).partID)) + const result = await trigger(...input) + if (scenario === "compaction-empty-summary-streamed" && input[0] === "experimental.text.complete" && requests.length > 1) + return { ...result, text: "" } + return result + }) + const languageSpy = spyOn(Provider, "getLanguage").mockResolvedValue(language) + const updatePart = LegacySession.updatePart + let completedSummary: MessageV2.WithParts | undefined + const processCompaction = SessionCompaction.process + const compactionSpy = userAfterCompaction + ? spyOn(SessionCompaction, "process").mockImplementation(Object.assign(async (...input: Parameters) => { + const result = await processCompaction(...input) + expect(result).toBe("continue") + completedSummary = structuredClone([...MessageV2.stream(chat.id)].find( + (message) => message.info.role === "assistant" && message.info.summary && message.info.finish && !message.info.error, + )) + expect(completedSummary).toBeDefined() + // Leave room to recover the answer after the summary and before this request. + await insertUser(Math.max(Date.now(), completedSummary!.info.time.created + 1)) + return result + }, processCompaction)) + : undefined + let publicationAborts = 0 + const commitSpy = userAfterCommit || scenario === "echo-budget-finalization-publishing" + ? spyOn(LegacySession, "updatePart").mockImplementation(Object.assign(async (part: MessageV2.Part) => { + const result = await updatePart(part) + if (userAfterCommit && part.type === "tool" && part.tool === "answer_commit" && part.state.status === "completed" && !queuedUserID) + await insertUser() + if (scenario === "echo-budget-finalization-publishing" && requests.length === 2 && part.type === "text" && part.time?.end) { + publicationAborts++ + const response = await SessionRoutes().request(`/${chat.id}/abort`, { + method: "POST", + headers: { "x-altimate-run-budget": "hard-deadline" }, + }) + expect(response.status).toBe(200) + } + return result + }, updatePart)) + : undefined + let echoPrepared = false + const track = Snapshot.track + const snapshotSpy = spyOn(Snapshot, "track").mockImplementation(async () => { + if (scenario === "echo-snapshot-error" && echoPrepared) throw new Error("Snapshot tracking failed") + return track() + }) + const retrySpy = scenario === "compaction-error" || scenario === "compaction-error-queued-user" || scenario === "echo-guardrail-denied" || scenario === "echo-guardrail-overflow-text" || scenario === "compaction-guardrail-denied" + ? spyOn(SessionRetry, "retryable").mockReturnValue(undefined) + : undefined + const finishedEchoText: string[][] = [] + const updateMessage = LegacySession.updateMessage + const finishSpy = scenario === "echo-write-order" + ? spyOn(LegacySession, "updateMessage").mockImplementation(Object.assign(async (message: MessageV2.Info) => { + if (message.role === "assistant" && requests.length === 2 && message.finish) { + finishedEchoText.push(MessageV2.parts(message.id) + .filter((part) => part.type === "text" && part.time?.end !== undefined) + .map((part) => (part as MessageV2.TextPart).text)) + } + return updateMessage(message) + }, updateMessage)) + : undefined + const toModelMessages = MessageV2.toModelMessages + const historySpy = spyOn(MessageV2, "toModelMessages").mockImplementation(async (...input) => { + if (scenario === "echo-preparation-error" && requests.length === 1) + throw new Error("Echo preparation failed") + if (requests.length === 1) echoPrepared = true + const messages = await toModelMessages(...input) + if (queuedUser && requests.length === 1 && !queuedUserID) await insertUser() + return messages + }) + const output = new OutputCollector() + const accounting = RunAccounting.create() + const compactionTextIDs: MessageID[] = [] + const textUpdates: MessageV2.TextPart[] = [] + const textPartIDs = new Set() + const textDeltas: { messageID: MessageID; partID: PartID; text: string }[] = [] + const removedTextIDs: PartID[] = [] + const clientEvents: ClientEvent[] = [] + const textEvents: { messageID: MessageID; type: string; text: string }[] = [] + const sessionErrors: unknown[] = [] + let compactions = 0 + const assistantUpdates: MessageV2.Assistant[] = [] + const requestStarts: string[] = [] + const collect = ({ payload: event }: GlobalEvent) => { + const request = event as { type: string; properties: { sessionID?: string; messageID?: string } } + if ( + request.type === "session.request.started" && + request.properties.sessionID === chat.id && + request.properties.messageID + ) + requestStarts.push(request.properties.messageID) + if (event.type === "session.error" && event.properties.sessionID === chat.id) { + sessionErrors.push(event.properties.error) + accounting.onSessionError(event.properties.error?.name) + } + if (event.type === "session.compacted" && event.properties.sessionID === chat.id) { + compactions++ + accounting.onCompactionRecovered() + } + if (event.type === MessageV2.Event.Updated.type) { + const message = event.properties.info + if (message.sessionID === chat.id && message.role === "assistant") { + clientEvents.push(structuredClone(event) as unknown as ClientEvent) + assistantUpdates.push(structuredClone(message)) + accounting.onAssistantMessage(message) + } + } + if (event.type === MessageV2.Event.PartUpdated.type) { + const part = event.properties.part as MessageV2.Part + if (part.sessionID !== chat.id) return + if (part.type === "step-start") output.stepStart(accounting.isCompactionStep(part.messageID)) + if (part.type !== "text") return + clientEvents.push(structuredClone(event) as unknown as ClientEvent) + // Snapshot the published value: later mutations must not rewrite what a client observed. + textUpdates.push(structuredClone(part)) + textEvents.push({ messageID: part.messageID, type: part.time?.end ? "completion" : "start", text: part.text }) + textPartIDs.add(part.id) + // Match run.ts: only completed text parts are printed and collected for --output. + if (part.time?.end) { + const compaction = accounting.isCompactionStep(part.messageID) + if (compaction) compactionTextIDs.push(part.messageID) + output.text(part.text.trim(), { partID: part.id, synthetic: part.synthetic === true, compaction }) + } + } + if ( + event.type === MessageV2.Event.PartDelta.type && + event.properties.sessionID === chat.id && + event.properties.field === "text" && + textPartIDs.has(event.properties.partID) + ) { + // ACP forwards deltas for known text parts and ignores later text updates. + clientEvents.push(structuredClone(event) as unknown as ClientEvent) + textDeltas.push({ messageID: event.properties.messageID, partID: event.properties.partID, text: event.properties.delta }) + textEvents.push({ messageID: event.properties.messageID, type: "delta", text: event.properties.delta }) + } + if (event.type === MessageV2.Event.PartRemoved.type && event.properties.sessionID === chat.id) { + clientEvents.push(structuredClone(event) as unknown as ClientEvent) + removedTextIDs.push(event.properties.partID) + output.remove(event.properties.partID) + } + } + GlobalBus.on("event", collect) + try { + if (priorCommit) { + yield* prompt.prompt({ + sessionID: chat.id, + agent: "analyst", + model: promptModel, + parts: [{ type: "text", text: "How many records? Reply with only the count." }], + }) + const history = yield* sessions.messages({ sessionID: chat.id }) + const commit = history + .flatMap((message) => message.parts) + .find((part) => part.type === "tool" && part.tool === "answer_commit") + if (commit?.type !== "tool" || commit.state.status !== "completed") + throw new Error("missing prior commit") + const state = commit.state + yield* Effect.promise(() => + LegacySession.updatePart({ + ...commit, + state: { + ...state, + output: "UNMASKED_COMMIT_OUTPUT", + metadata: { ...state.metadata, observation_mask: "Previous committed answer was masked." }, + time: { ...state.time, compacted: Date.now() }, + }, + }), + ) + } + const pending = prompt.prompt({ + sessionID: chat.id, + ...(originalUserID ? { messageID: originalUserID } : {}), + agent: "analyst", + model: promptModel, + parts: [{ type: "text", text: "How many records? Reply with only the count." }], + ...(structured + ? { + format: { + type: "json_schema" as const, + retryCount: 0, + schema: { + type: "object", + properties: { count: { type: "number" } }, + required: ["count"], + additionalProperties: false, + }, + }, + } + : {}), + }) + if (scenario === "echo-preparation-error") { + const outcome = yield* Effect.exit(pending) + expect(outcome._tag).toBe("Failure") + expect(requests).toHaveLength(1) + expect(output.content()).toBe("(no text output — tool-only response)") + return + } + const result = yield* pending + if (result.info.role === "assistant") accounting.onPromptResult(result.info) + if (budgetFinalization || ["echo-harness-deadline", "echo-user-cancelled"].includes(scenario)) { + if (scenario === "echo-budget-finalization-publishing") expect(publicationAborts).toBe(1) + if (scenario === "echo-user-cancelled") { + expect(result.info).toHaveProperty("error.name", "MessageAbortedError") + expect(result.parts.filter((part) => part.type === "text")).toEqual([]) + expect(textUpdates.filter((part) => part.time?.end)).toEqual([]) + expect(textDeltas).toEqual([]) + expect(requests).toHaveLength(2) + return + } + if (budgetFinalization) { + const messageID = MessageID.ascending() + const response = yield* Effect.promise(() => Promise.resolve(SessionRoutes().request(`/${chat.id}/message`, { + method: "POST", + headers: { + "content-type": "application/json", + "x-altimate-run-budget": "finalization", + traceparent: "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01", + }, + body: JSON.stringify({ + messageID, + agent: "analyst", + model: promptModel, + parts: [{ type: "text", text: SessionTermination.REPLY_AFTER_BUDGET, synthetic: true }], + }), + }))) + expect(response.status).toBe(200) + const finalized = yield* Effect.promise(() => response.json()) + expect(requests).toHaveLength(2) + expect(TraceContext.forMessage(messageID)).toBeUndefined() + expect(finalized.info.id).toBe(result.info.id) + expect(finalized.parts.filter((part: MessageV2.Part) => part.type === "text").map((part: MessageV2.TextPart) => part.text)) + .toEqual([renderedAnswer]) + } + expect(result.info).not.toHaveProperty("error") + expect(result.info).toHaveProperty("finish", "stop") + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([renderedAnswer]) + expect(textUpdates.filter((part) => part.time?.end).map((part) => part.text)).toEqual([renderedAnswer]) + expect(textDeltas.map((part) => part.text)).toEqual([renderedAnswer]) + expect(output.content()).toBe(renderedAnswer) + expect(requests).toHaveLength(2) + expect(requests[1].messages.at(-1)).toEqual({ role: "user", content: echoInstruction }) + const history = yield* sessions.messages({ sessionID: chat.id }) + const commit = history.flatMap((message) => message.parts) + .find((part) => part.type === "tool" && part.tool === "answer_commit") + expect(commit).toHaveProperty("state.metadata.committed_text", renderedAnswer) + return + } + if (userDuringFailedCompaction) { + if (!queuedUserID) throw new Error("missing queued user request") + const callbacks = yield* Effect.promise(() => Promise.all(queuedReplies)) + expect(callbacks).toHaveLength(2) + for (const reply of [result, ...callbacks]) { + expect(reply.info).toHaveProperty("parentID", queuedUserID) + expect(reply.info).toHaveProperty("finish", "stop") + expect(reply.info).not.toHaveProperty("error") + expect(reply.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual(["3"]) + expect(reply.info.id).toBe(result.info.id) + } + expect(requests).toHaveLength(emptySummary ? 4 : 3) + const summaries = requests.slice(1, emptySummary ? 3 : 2) + for (const request of summaries) { + expect(JSON.stringify(request.messages)).toContain("Provide a detailed prompt for continuing") + expect(request.tools ?? []).toEqual([]) + } + if (emptySummary) expect(summaries[1].messages).toEqual(summaries[0].messages) + const resumed = requests.at(-1)! + expect((resumed.tools ?? []).map((tool) => tool.function.name)).toContain("answer_commit") + expect(JSON.stringify(resumed.messages)).not.toContain(echoInstruction) + expect(JSON.stringify(resumed.messages)).toContain("A new question: how many sources?") + const history = yield* sessions.messages({ sessionID: chat.id }) + const commit = history.find((message) => message.parts.some((part) => part.type === "tool" && part.tool === "answer_commit")) + if (commit?.info.role !== "assistant") throw new Error("missing committed request") + const answers = history.filter((message) => message.info.role === "assistant" && + message.parts.some((part) => part.type === "text" && part.text === renderedAnswer)) + expect(answers).toHaveLength(1) + const answer = answers[0] + expect(answer.info).toMatchObject({ parentID: commit.info.parentID, finish: "stop" }) + expect(answer.info).not.toHaveProperty("summary", true) + expect(answer.info).not.toHaveProperty("error") + expect(answer.info).toHaveProperty("metadata.answer_commit_echo_error.data.message", emptySummary + ? "Compaction summarizer produced no summary text after retry" + : "Compaction summariser rejected the request") + const ordered = Database.use((db) => db + .select({ id: MessageTable.id }) + .from(MessageTable) + .where(eq(MessageTable.session_id, chat.id)) + .orderBy(MessageTable.time_created, sql`rowid`) + .all()) + const answerIndex = ordered.findIndex((message) => message.id === answer.info.id) + expect(answerIndex).toBeGreaterThanOrEqual(0) + expect(ordered.findIndex((message) => message.id === queuedUserID)).toBeGreaterThan(answerIndex) + const modelHistory = resumed.messages as { role: string; content: unknown }[] + const answerTurn = modelHistory.findIndex((message) => message.role === "assistant" && message.content === renderedAnswer) + const queuedTurn = modelHistory.findIndex((message) => message.role === "user" && + JSON.stringify(message.content).includes("A new question: how many sources?")) + expect(answerTurn).toBeGreaterThanOrEqual(0) + expect(queuedTurn).toBeGreaterThan(answerTurn) + expect(modelHistory.findLastIndex((message) => message.role === "user")).toBe(queuedTurn) + expect(textEvents.filter((event) => event.messageID === answer.info.id)).toEqual([ + { messageID: answer.info.id, type: "start", text: "" }, + { messageID: answer.info.id, type: "delta", text: renderedAnswer }, + { messageID: answer.info.id, type: "completion", text: renderedAnswer }, + ]) + // Run prints completed, non-compaction text; ACP consumes the same + // immutable event sequence through its real subscription handler. + expect(textUpdates.filter((part) => part.time?.end && !compactionTextIDs.includes(part.messageID)) + .map((part) => part.text)).toEqual([renderedAnswer, "3"]) + expect(output.content()).toBe("3") + expect(yield* acpText(clientEvents, chat.id)).toEqual([renderedAnswer, "3"]) + expect(sessionErrors).toEqual([]) + expect(assistantUpdates.filter((message) => message.error)).toEqual([]) + expect(accounting.fatal).toBe(false) + expect(requestStarts).toEqual([commit.info.parentID, queuedUserID]) + return + } + if (emptySummary) { + expect(requests).toHaveLength(3) + expect(JSON.stringify(requests[1].messages)).toContain("Provide a detailed prompt for continuing") + expect(requests[2].messages).toEqual(requests[1].messages) + expect(requests.slice(1).map((request) => request.tools ?? [])).toEqual([[], []]) + if (scenario === "compaction-empty-summary-without-commit") { + expect(result.info).toHaveProperty("error.name", "UnknownError") + expect(result.info).toHaveProperty( + "error.data.message", + "Compaction summarizer produced no summary text after retry", + ) + expect(result.info).toHaveProperty("finish", "error") + expect(result.info).not.toHaveProperty("metadata.answer_commit_echo_error") + expect(result.parts.filter((part) => part.type === "text")).toEqual([]) + expect(accounting.fatal).toBe(true) + const history = yield* sessions.messages({ sessionID: chat.id }) + expect(history.flatMap((message) => message.parts).filter( + (part) => part.type === "tool" && part.tool === "answer_commit", + )).toEqual([]) + return + } + } + if ( + scenario === "echo-snapshot-error" || + scenario === "echo-policy-denied" || + scenario === "echo-guardrail-denied" || + scenario === "echo-guardrail-overflow-text" || + scenario === "echo-forbidden" || + scenario === "echo-aborted" || + scenario === "echo-content-filter" || + scenario === "echo-http-content-filter" || + scenario === "compaction-aborted" || + scenario === "compaction-forbidden" || + scenario === "compaction-guardrail-denied" || + scenario === "compaction-content-filter" + ) { + expect(result.info).toHaveProperty( + "error.name", + scenario === "echo-snapshot-error" + ? "UnknownError" + : scenario === "echo-aborted" || scenario === "compaction-aborted" + ? "MessageAbortedError" + : scenario === "echo-http-content-filter" || scenario === "compaction-content-filter" || + scenario === "echo-policy-denied" || scenario === "echo-guardrail-denied" || scenario === "echo-guardrail-overflow-text" || scenario === "echo-forbidden" || + scenario === "compaction-forbidden" || scenario === "compaction-guardrail-denied" + ? "APIError" + : "ContentFilterError", + ) + expect(result.info).not.toHaveProperty("metadata.answer_commit_echo_error") + expect(result.info).not.toHaveProperty("finish", "stop") + expect(requests).toHaveLength(scenario === "echo-snapshot-error" ? 1 : 2) + expect(sessionErrors).toHaveLength(1) + expect(accounting.fatal).toBe(true) + expect(assistantUpdates.some((message) => message.id === result.info.id && message.error)).toBe(true) + if (scenario === "echo-guardrail-overflow-text") { + expect(compactions).toBe(0) + const history = yield* sessions.messages({ sessionID: chat.id }) + expect(history.flatMap((message) => message.parts).filter((part) => part.type === "compaction")).toEqual([]) + expect(textUpdates.filter((part) => part.time?.end)).toEqual([]) + expect(yield* acpText(clientEvents, chat.id)).toEqual([]) + } + if (scenario !== "echo-content-filter") { + expect(result.parts.filter((part) => part.type === "text")).toEqual([]) + expect(output.content()).toBe("(no text output — tool-only response)") + expect(textDeltas.filter((part) => part.messageID === result.info.id)).toEqual([]) + } else { + expect(result.parts).toContainEqual(expect.objectContaining({ type: "text", text: "42" })) + } + return + } + expect(result.info).not.toHaveProperty("error") + if (userAfterCompaction || overflowCodeCompaction) { + expect(compactions).toBe(1) + expect(requests).toHaveLength(3) + expect(JSON.stringify(requests[1].messages)).toContain("Provide a detailed prompt for continuing") + expect(requests[1].tools ?? []).toEqual([]) + expect((requests[2].tools ?? []).map((tool) => tool.function.name)).toContain("answer_commit") + expect(JSON.stringify(requests[2].messages)).not.toContain(echoInstruction) + expect(JSON.stringify(requests[2].messages)).toContain(summaryText) + const history = [...MessageV2.stream(chat.id)].reverse() + const summary = history.find((message) => message.info.role === "assistant" && message.info.summary) + if (!summary) throw new Error("missing successful compaction summary") + expect(summary.info).toHaveProperty("finish", "stop") + expect(summary.info).not.toHaveProperty("error") + expect(summary.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([summaryText]) + const filtered = MessageV2.filterCompacted(MessageV2.stream(chat.id)) + expect(filtered[0].parts.some((part) => part.type === "compaction")).toBe(true) + expect(filtered[1].info.id).toBe(summary.info.id) + expect(accounting.fatal).toBe(false) + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual(["3"]) + if (overflowCodeCompaction) { + expect(sessionErrors).toEqual([expect.objectContaining({ name: "ContextOverflowError" })]) + expect(history.flatMap((message) => message.parts)).toContainEqual(expect.objectContaining({ + type: "compaction", auto: true, overflow: true, + })) + return + } + expect(sessionErrors).toEqual([]) + if (!completedSummary) throw new Error("missing saved compaction summary") + expect(summary).toEqual(completedSummary) + const commit = history.find((message) => message.parts.some((part) => part.type === "tool" && part.tool === "answer_commit")) + if (commit?.info.role !== "assistant") throw new Error("missing committed request") + const answers = history.filter((message) => message.info.role === "assistant" && + message.parts.some((part) => part.type === "text" && part.text === renderedAnswer)) + expect(answers).toHaveLength(1) + const answer = answers[0] + if (answer.info.role !== "assistant") throw new Error("missing recovered committed answer") + expect(answer.info.id).not.toBe(summary.info.id) + expect(answer.info.id).not.toBe(commit.info.id) + expect(answer.info).toMatchObject({ + parentID: commit.info.parentID, + agent: commit.info.agent, + mode: commit.info.mode, + modelID: commit.info.modelID, + providerID: commit.info.providerID, + finish: "stop", + }) + expect(answer.info).not.toHaveProperty("summary") + expect(answer.info).not.toHaveProperty("error") + expect(answer.info).not.toHaveProperty("metadata.answer_commit_echo_error") + const ordered = Database.use((db) => db + .select({ id: MessageTable.id, created: MessageTable.time_created }) + .from(MessageTable) + .where(eq(MessageTable.session_id, chat.id)) + .orderBy(MessageTable.time_created, sql`rowid`) + .all()) + const summaryIndex = ordered.findIndex((message) => message.id === summary.info.id) + const answerIndex = ordered.findIndex((message) => message.id === answer.info.id) + const queuedIndex = ordered.findIndex((message) => message.id === queuedUserID) + expect(summaryIndex).toBeGreaterThanOrEqual(0) + expect(answerIndex).toBeGreaterThan(summaryIndex) + expect(queuedIndex).toBeGreaterThan(answerIndex) + expect(ordered[answerIndex].created).toBe(ordered[queuedIndex].created - 1) + expect(answer.info.time.completed).toBeGreaterThanOrEqual(answer.info.time.created) + const modelHistory = requests[2].messages as { role: string; content: unknown }[] + const answerTurn = modelHistory.findIndex((message) => message.role === "assistant" && message.content === renderedAnswer) + const queuedTurn = modelHistory.findIndex((message) => message.role === "user" && + JSON.stringify(message.content).includes("A new question: how many sources?")) + expect(answerTurn).toBeGreaterThanOrEqual(0) + expect(queuedTurn).toBeGreaterThan(answerTurn) + expect(modelHistory.findLastIndex((message) => message.role === "user")).toBe(queuedTurn) + expect(textEvents.filter((event) => event.messageID === answer.info.id)).toEqual([ + { messageID: answer.info.id, type: "start", text: "" }, + { messageID: answer.info.id, type: "delta", text: renderedAnswer }, + { messageID: answer.info.id, type: "completion", text: renderedAnswer }, + ]) + expect(yield* acpText(clientEvents, chat.id)).toEqual([renderedAnswer, "3"]) + expect(compactionTextIDs).not.toContain(answer.info.id) + expect(removedTextIDs).toEqual([]) + expect(queuedUserID).toBeDefined() + expect(result.info).toHaveProperty("parentID", queuedUserID) + expect(JSON.stringify(requests[2].messages)).toContain("A new question: how many sources?") + return + } + if (streamedSummary) { + const chunks = yield* acpText(clientEvents, chat.id) + expect(chunks).toEqual([renderedAnswer]) + expect(output.content()).toBe(renderedAnswer) + const partials = textDeltas.filter((part) => part.text.includes("Summary so far")) + expect(partials).toHaveLength(emptySummary ? 2 : 1) + const parts = result.parts.filter((part) => part.type === "text") + expect(parts.map((part) => part.text)).toEqual([renderedAnswer]) + for (const partial of partials) { + expect(removedTextIDs).toContain(partial.partID) + expect(parts[0].id).not.toBe(partial.partID) + } + expect(result.info).toHaveProperty("finish", "stop") + expect(result.info).not.toHaveProperty("summary", true) + expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.data.message", emptySummary + ? "Compaction summarizer produced no summary text after retry" + : "Compaction summariser failed after partial text") + if (!emptySummary) expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.data.statusCode", 503) + expect(sessionErrors).toEqual([]) + expect(accounting.fatal).toBe(false) + expect(requests).toHaveLength(emptySummary ? 3 : 2) + expect(JSON.stringify(requests[1].messages)).toContain("Provide a detailed prompt for continuing") + const persisted = (yield* sessions.messages({ sessionID: chat.id })).find((message) => message.info.id === result.info.id) + expect(persisted?.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([renderedAnswer]) + return + } + if (scenario === "echo-reactive-compaction") { + expect(result.info).toHaveProperty("finish", "stop") + expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.result", "compact") + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([renderedAnswer]) + expect(textUpdates.filter((part) => part.time?.end).map((part) => part.text)).toEqual([renderedAnswer]) + expect(textDeltas.map((part) => part.text)).toEqual([renderedAnswer]) + expect(output.content()).toBe(renderedAnswer) + expect(requests).toHaveLength(2) + expect(JSON.stringify(requests[1].messages)).toContain(echoInstruction) + const history = yield* sessions.messages({ sessionID: chat.id }) + expect(history.flatMap((message) => message.parts).filter((part) => part.type === "compaction")).toEqual([]) + const users = history.filter((message) => message.info.role === "user") + expect(users).toHaveLength(1) + expect(requestStarts).toEqual([users[0].info.id]) + expect(history.find((message) => message.info.id === result.info.id)?.info) + .toHaveProperty("metadata.answer_commit_echo_error.result", "compact") + return + } + if ( + scenario === "compaction-error" || scenario === "compaction-empty-summary" || + scenario === "echo-overflow-disabled" || scenario === "echo-overflow-enabled" + ) { + const cause = + scenario === "compaction-error" + ? "Compaction summariser rejected the request" + : emptySummary + ? "Compaction summarizer produced no summary text after retry" + : "maximum context length exceeded" + expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.data.message", cause) + if (emptySummary) expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.name", "UnknownError") + expect(result.info).toHaveProperty("finish", "stop") + expect(result.info).not.toHaveProperty("summary", true) + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([renderedAnswer]) + expect(textUpdates.filter((part) => part.messageID === result.info.id).map((part) => part.text)).toEqual([ + "", renderedAnswer, + ]) + expect(textDeltas.filter((part) => part.messageID === result.info.id).map((part) => part.text)).toEqual([ + renderedAnswer, + ]) + expect(output.content()).toBe(renderedAnswer) + expect(requests).toHaveLength(emptySummary ? 3 : 2) + expect(sessionErrors).toEqual([]) + expect(assistantUpdates.filter((message) => message.error)).toEqual([]) + expect(accounting.fatal).toBe(false) + expect(compactionTextIDs).not.toContain(result.info.id) + const history = yield* sessions.messages({ sessionID: chat.id }) + if (compacting) { + expect(JSON.stringify(requests[1].messages)).toContain("Provide a detailed prompt for continuing") + expect(JSON.stringify(requests[1].messages)).not.toContain(echoInstruction) + // Only the original request and the compaction marker exist: no continuation was created. + expect(history.filter((message) => message.info.role === "user")).toHaveLength(2) + const request = history.find( + (message) => message.info.role === "user" && !message.parts.some((part) => part.type === "compaction"), + ) + if (!request) throw new Error("missing original request") + expect(requestStarts).toEqual([request.info.id]) + } + const persisted = history.find((message) => message.info.id === result.info.id) + expect(persisted?.info).toHaveProperty("metadata.answer_commit_echo_error.data.message", cause) + expect(persisted?.info).not.toHaveProperty("error") + return + } + if (scenario === "echo-transport-error" || scenario === "echo-socket-reset") { + const cause = scenario === "echo-socket-reset" + ? "Cannot connect to API: socket reset" + : "Echo transport rejected the request" + expect(sessionErrors).toEqual([]) + expect(assistantUpdates.filter((message) => message.error)).toEqual([]) + expect(result.info).toHaveProperty( + "metadata.answer_commit_echo_error.data.message", + cause, + ) + const persisted = (yield* sessions.messages({ sessionID: chat.id })).find( + (message) => message.info.id === result.info.id, + ) + expect(persisted?.info).toHaveProperty( + "metadata.answer_commit_echo_error.data.message", + cause, + ) + expect(persisted?.info).not.toHaveProperty("error") + } + expect(requests).toHaveLength(priorCommit ? 4 : userDuringEcho ? 3 : 2) + const tools = (index: number) => (requests[index].tools ?? []).map((tool) => tool.function.name) + if (structured) { + for (const request of priorCommit ? requests.slice(2) : requests) { + expect((request.tools ?? []).map((tool) => tool.function.name)).not.toContain("answer_commit") + expect((request.tools ?? []).map((tool) => tool.function.name)).toContain("StructuredOutput") + expect(request.tool_choice).toBe("required") + expect(JSON.stringify(request.messages)).not.toContain(echoInstruction) + if (priorCommit) { + expect(JSON.stringify(request.messages)).toContain("Previous committed answer was masked.") + expect(JSON.stringify(request.messages)).not.toContain("UNMASKED_COMMIT_OUTPUT") + } + } + expect(result.info).toHaveProperty("structured", { count: 42 }) + } else { + expect(tools(0)).toContain("answer_commit") + const messages = yield* sessions.messages({ sessionID: chat.id }) + const commit = messages + .flatMap((message) => message.parts) + .find((part) => part.type === "tool" && part.tool === "answer_commit") + expect(commit?.type === "tool" && commit.state.status).toBe(scenario === "failed" ? "error" : "completed") + if (scenario === "failed-after-success") { + expect( + messages + .flatMap((message) => message.parts) + .filter((part) => part.type === "tool" && part.tool === "answer_commit") + .map((part) => part.type === "tool" && part.state.status), + ).toEqual(["completed", "error"]) + } + if (scenario === "text" || scenario === "sibling-tool" || scenario.startsWith("echo-")) { + if (commit?.type !== "tool" || commit.state.status !== "completed") throw new Error("missing commit") + expect(tools(1)).toEqual([]) + expect(JSON.stringify(requests[1].messages)).toContain(echoInstruction) + // The echo instruction must be the final user turn: Bedrock's Converse API rejects + // a conversation that ends with an assistant message. + const last = requests[1].messages.at(-1) as { role?: string; content?: unknown } + expect(last.role).toBe("user") + expect(JSON.stringify(last.content)).toContain(echoInstruction) + if (tinyCap) { + expect(Token.estimate(commit.state.output)).toBeLessThanOrEqual(100) + if (scenario === "echo-capped") { + expect(Token.estimate(renderedAnswer)).toBeGreaterThan(100) + expect(commit.state.output).not.toBe(renderedAnswer) + expect(commit.state.output).toContain("truncated before dispatch") + } else { + expect(commit.state.output).toBe(renderedAnswer) + } + expect(requests[1].messages).toContainEqual( + expect.objectContaining({ content: expect.stringContaining(commit.state.output) }), + ) + expect(last.content).toBe(echoInstruction) + } + const expectedText = renderedAnswer + expect(result.info).toHaveProperty("finish", scenario === "echo-other" ? "other" : "stop") + if (scenario === "echo-other") expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.finish", "other") + if (scenario === "echo-other") expect(accounting.fatal).toBe(true) + if (scenario === "echo-write-order") { + expect(finishedEchoText.length).toBeGreaterThan(0) + expect(finishedEchoText.every((texts) => texts.length === 1 && texts[0] === renderedAnswer)).toBe(true) + } + expect(result.parts).toContainEqual(expect.objectContaining({ type: "text", text: expectedText })) + if (scenario === "echo-no-text") { + const part = result.parts.find((part) => part.type === "text") + if (part?.type !== "text" || !part.time) throw new Error("missing completed echo text") + expect(typeof part.time.start).toBe("number") + expect(typeof part.time.end).toBe("number") + expect(part.time.end).toBeGreaterThanOrEqual(part.time.start) + } + expect( + result.parts + .filter((part) => part.type === "text") + .map((part) => part.text) + .join(""), + ).toBe(expectedText) + const finalUpdates = textUpdates.filter((part) => part.messageID === result.info.id) + if (scenario === "text" || scenario === "echo-mismatch" || scenario === "echo-write-order") { + // The ordinary echo reuses its buffered part, with one delivery. + expect(completedTextIDs).toEqual([finalUpdates[0].id]) + expect(finalUpdates.map((part) => part.id)).toEqual([completedTextIDs[0], completedTextIDs[0]]) + expect(removedTextIDs).toEqual([]) + expect(yield* acpText(clientEvents, chat.id)).toEqual([expectedText]) + } + expect(finalUpdates.filter((part) => part.time?.end).map((part) => part.text)).toEqual([expectedText]) + expect(output.content()).toBe(expectedText) + expect( + textDeltas + .filter((part) => part.messageID === result.info.id) + .map((part) => part.text), + ).toEqual([expectedText]) + if (scenario === "echo-capped") expect(commit.state.metadata.committed_text).toBe(renderedAnswer) + if (scenario === "text" || scenario === "echo-transport-error" || scenario === "echo-other") { + // A correct echo publishes only its initial and completed text parts. + expect(finalUpdates).toHaveLength(2) + } + } else if (userDuringEcho) { + if (commit?.type !== "tool" || commit.state.status !== "completed") throw new Error("missing commit") + const commitMessage = messages.find((message) => message.info.id === commit.messageID) + if (commitMessage?.info.role !== "assistant") throw new Error("missing commit message") + const committedUserID = commitMessage.info.parentID + const echo = messages.find( + (message) => message.info.role === "assistant" && + message.info.parentID === committedUserID && message.info.finish === "stop", + ) + if (!echo) throw new Error("missing completed echo for the original request") + expect(echo.info).not.toHaveProperty("error") + expect(echo.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual([renderedAnswer]) + expect(textEvents.filter((event) => event.messageID === echo.info.id)).toEqual([ + { messageID: echo.info.id, type: "start", text: "" }, + { messageID: echo.info.id, type: "delta", text: renderedAnswer }, + { messageID: echo.info.id, type: "completion", text: renderedAnswer }, + ]) + expect(tools(1)).toEqual([]) + expect(JSON.stringify(requests[1].messages)).toContain(echoInstruction) + expect(tools(2)).toContain("answer_commit") + expect(JSON.stringify(requests[2].messages)).not.toContain(echoInstruction) + expect(JSON.stringify(requests[2].messages)).toContain("A new question: how many sources?") + expect(queuedUserID).toBeDefined() + expect(result.info).toHaveProperty("parentID", queuedUserID) + expect(result.info).toHaveProperty("finish", "stop") + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual(["3"]) + } else { + expect(tools(1)).toContain("answer_commit") + expect(JSON.stringify(requests[1].messages)).not.toContain(echoInstruction) + if (queuedUser || userAfterCommit) { + expect(queuedUserID).toBeDefined() + expect(JSON.stringify(requests[1].messages)).toContain("A new question: how many sources?") + expect(result.info).toHaveProperty("parentID", queuedUserID) + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text)).toEqual(["3"]) + if (reversedIDs) { + const originalAnswer = messages.find( + (message) => message.info.role === "assistant" && + message.info.parentID === originalUserID && message.info.finish === "stop", + ) + expect(originalAnswer?.parts.filter((part) => part.type === "text").map((part) => part.text)) + .toEqual([renderedAnswer]) + expect(textUpdates.filter((part) => part.messageID === originalAnswer?.info.id && part.time?.end) + .map((part) => part.text)).toEqual([renderedAnswer]) + } + } + } + } + } finally { + GlobalBus.off("event", collect) + commitSpy?.mockRestore() + compactionSpy?.mockRestore() + finishSpy?.mockRestore() + retrySpy?.mockRestore() + snapshotSpy.mockRestore() + historySpy.mockRestore() + languageSpy.mockRestore() + streamSpy?.mockRestore() + textHookSpy?.mockRestore() + } + }), + ), + { + config: { + snapshot: false, + learn: { enabled: false }, + ...(scenario === "echo-overflow-disabled" ? { compaction: { auto: false } } : {}), + ...(tinyCap ? { tool_output: { dispatch_max_tokens: 100 } } : {}), + agent: { analyst: { permission: { StructuredOutput: "allow" } } }, + provider: { + test: { + name: "Test", + npm: "@ai-sdk/openai-compatible", + env: [], + models: { + "test-model": { + name: "Test Model", + tool_call: true, + limit: { context: 100000, output: 10000 }, + }, + }, + options: { apiKey: "test-key", baseURL: "https://unused.invalid/v1" }, + }, + }, + }, + }, + 30_000, + ) +} + +describe("committed-answer echo error classification", () => { + for (const statusCode of [408, 429, 500, 503, 599]) { + test(`HTTP ${statusCode} is a recoverable echo transport failure`, () => { + const error = new MessageV2.APIError({ message: "Request failed", statusCode, isRetryable: false }).toObject() + expect(isEchoTransportError(error)).toBe(true) + }) + } + for (const statusCode of [400, 401, 403, 404]) { + test(`HTTP ${statusCode} is never a recoverable echo transport failure`, () => { + const error = new MessageV2.APIError({ message: "Request failed", statusCode, isRetryable: true }).toObject() + expect(isEchoTransportError(error)).toBe(false) + }) + } + for (const code of [ + "policy_violation", "content_filter", "content_policy", "content_policy_violation", + "guardrail_intervened", "safety_rejection", "moderation_blocked", + ]) { + test(`structured ${code} overrides an otherwise recoverable HTTP status`, () => { + const error = new MessageV2.APIError({ + message: "Request denied", + statusCode: 503, + isRetryable: true, + responseBody: JSON.stringify({ error: { code } }), + }).toObject() + expect(isEchoTransportError(error)).toBe(false) + }) + } + test("a policy code beyond the response-body limit survives API error normalization", () => { + const error = MessageV2.fromError(new APICallError({ + message: "Request denied", + url: "https://example.com/v1/chat/completions", + requestBodyValues: {}, + statusCode: 503, + isRetryable: true, + responseBody: JSON.stringify({ details: "x".repeat(5000), error: { code: "policy_violation" } }), + }), { providerID: promptModel.providerID }) + expect(error.name).toBe("APIError") + expect(isEchoTransportError(error)).toBe(false) + }) + test("a structured policy code never overrides an explicit context overflow code", () => { + const error = MessageV2.fromError(new APICallError({ + message: "maximum context length exceeded", + url: "https://example.com/v1/chat/completions", + requestBodyValues: {}, + statusCode: 400, + isRetryable: false, + responseBody: JSON.stringify({ + error: { code: "context_length_exceeded", message: "maximum context length exceeded" }, + orchestrationError: { code: "policy_violation" }, + }), + }), { providerID: promptModel.providerID }) + expect(error.name).toBe("ContextOverflowError") + expect(isEchoTransportError(error)).toBe(false) + }) + test("a 503 orchestration guardrail code survives normalization and vetoes echo recovery", () => { + const error = MessageV2.fromError(new APICallError({ + message: "Request denied", + url: "https://example.com/v1/chat/completions", + requestBodyValues: {}, + statusCode: 503, + isRetryable: true, + responseBody: JSON.stringify({ orchestrationError: { code: "guardrail_intervened" } }), + }), { providerID: promptModel.providerID }) + expect(error.name).toBe("APIError") + expect(isEchoTransportError(error)).toBe(false) + }) + test("a 413 content_length_exceeded code remains a context overflow", () => { + const error = MessageV2.fromError(new APICallError({ + message: "Request entity too large", + url: "https://example.com/v1/chat/completions", + requestBodyValues: {}, + statusCode: 413, + isRetryable: false, + responseBody: JSON.stringify({ error: { code: "content_length_exceeded" } }), + }), { providerID: promptModel.providerID }) + expect(error.name).toBe("ContextOverflowError") + expect(isEchoTransportError(error)).toBe(false) + }) + test("a wrapped socket reset without a status remains recoverable even when the SDK disables retries", () => { + const error = MessageV2.fromError(new APICallError({ + message: "Connection interrupted", + url: "https://example.com/v1/chat/completions", + requestBodyValues: {}, + isRetryable: false, + cause: Object.assign(new Error("socket reset"), { code: "ECONNRESET" }), + }), { providerID: promptModel.providerID }) + expect(error.name).toBe("APIError") + expect(isEchoTransportError(error)).toBe(true) + }) + test("statusless socket and watchdog failures are recoverable but local failures and auth are not", () => { + for (const code of ["ECONNRESET", "ETIMEDOUT", "ProviderStreamIdleTimeoutError"]) { + const error = new MessageV2.APIError({ + message: "Transport interrupted", + isRetryable: false, + metadata: { code }, + }).toObject() + expect(isEchoTransportError(error)).toBe(true) + } + expect(isEchoTransportError( + new MessageV2.APIError({ message: "Unclassified failure", isRetryable: false }).toObject(), + )).toBe(false) + expect(isEchoTransportError( + MessageV2.fromError(new Error("Snapshot tracking failed"), { providerID: promptModel.providerID }), + )).toBe(false) + expect(isEchoTransportError( + new MessageV2.AuthError({ message: "Authentication failed", providerID: promptModel.providerID }).toObject(), + )).toBe(false) + }) +}) +// altimate_change end + +test("analyst prompt gives StructuredOutput precedence only when an output JSON schema is supplied", async () => { + const prompt = await Bun.file(new URL("../../src/altimate/prompts/analyst.txt", import.meta.url)).text() + expect(prompt).toContain( + "When the request supplies an output JSON schema (the `StructuredOutput` tool is available), finish with `StructuredOutput` instead of `answer_commit` or a plain-text reply; follow that schema. The text finalization rules below apply when no output schema is supplied.", + ) + expect(prompt).not.toContain("When a JSON schema is requested") +}) diff --git a/packages/opencode/test/altimate/adversarial.test.ts b/packages/opencode/test/altimate/adversarial.test.ts index 808fced237..918f2c4585 100644 --- a/packages/opencode/test/altimate/adversarial.test.ts +++ b/packages/opencode/test/altimate/adversarial.test.ts @@ -7,7 +7,14 @@ import { describe, expect, test, beforeEach, beforeAll, afterAll, mock } from "bun:test" -// Mock DuckDB driver so tests don't require the native duckdb package +// Mock DuckDB driver so tests don't require the native duckdb package. +// Bun's mock.module leaks across test files: snapshot the genuine exports before +// mocking and restore them in afterAll so later DuckDB-backed tests see the real driver. +import * as realDuckdb from "@altimateai/drivers/duckdb" +const genuineDuckdb = { ...realDuckdb } +afterAll(() => { + mock.module("@altimateai/drivers/duckdb", () => genuineDuckdb) +}) mock.module("@altimateai/drivers/duckdb", () => ({ connect: async (config: any) => ({ execute: async (sql: string) => ({ @@ -261,7 +268,9 @@ describe("Adversarial: Connection Registry", () => { } Registry.setConfigs(configs) const result = Registry.list() - expect(result.warehouses.length).toBe(1000) + // list() appends the implicit session-scoped `scratch` warehouse when any + // real warehouse is configured; count only the configured ones here. + expect(result.warehouses.filter((w: any) => w.name !== "scratch").length).toBe(1000) }) test("remove() non-existent connection returns success", async () => { diff --git a/packages/opencode/test/altimate/connections.test.ts b/packages/opencode/test/altimate/connections.test.ts index 38467134ce..38e33db0be 100644 --- a/packages/opencode/test/altimate/connections.test.ts +++ b/packages/opencode/test/altimate/connections.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test, beforeEach, afterEach, beforeAll, afterAll } from "bun:test" +import { describe, expect, test, beforeEach, afterEach, beforeAll, afterAll, mock, spyOn } from "bun:test" import * as Dispatcher from "../../src/altimate/native/dispatcher" // Disable telemetry via env var instead of mock.module @@ -109,13 +109,38 @@ describe("ConnectionRegistry", () => { snowprod: { type: "snowflake", account: "abc123" }, }) const result = Registry.list() - expect(result.warehouses).toHaveLength(2) + // the implicit session `scratch` warehouse is always appended last + expect(result.warehouses).toHaveLength(3) + expect(result.warehouses[2].name).toBe("scratch") expect(result.warehouses[0].name).toBe("mydb") expect(result.warehouses[0].type).toBe("postgres") expect(result.warehouses[1].name).toBe("snowprod") expect(result.warehouses[1].type).toBe("snowflake") }) + test.each(["postgres", "postgresql", "sqlite"])( + "connection test protects PostgreSQL read probes and preserves other connector options (%s)", + async (type) => { + Registry.setConfigs({ probe: { type } }) + const driver = type === "sqlite" + ? await import("@altimateai/drivers/sqlite") + : await import("@altimateai/drivers/postgres") + const execute = mock(async () => ({ columns: ["ok"], rows: [[1]], row_count: 1, truncated: false })) + const connect = spyOn(driver, "connect").mockResolvedValue({ connect: async () => {}, execute } as any) + try { + expect(await Registry.test("probe")).toEqual({ connected: true }) + expect(execute).toHaveBeenCalledTimes(1) + const args = execute.mock.calls[0] as unknown as [string, unknown, unknown, { readOnly?: boolean } | undefined] + expect(args[0]).toBe("SELECT 1") + if (type === "sqlite") expect(args[3]).toBeUndefined() + else expect(args[3]?.readOnly).toBe(true) + } finally { + connect.mockRestore() + Registry.reset() + } + }, + ) + test("get throws for unknown connection", async () => { Registry.setConfigs({}) await expect(Registry.get("nonexistent")).rejects.toThrow( @@ -166,7 +191,7 @@ describe("ConnectionRegistry", () => { expect(config).toBeDefined() expect(config?.type).toBe("fabric") const result = Registry.list() - expect(result.warehouses).toHaveLength(1) + expect(result.warehouses.filter((w) => w.name !== "scratch")).toHaveLength(1) expect(result.warehouses[0].type).toBe("fabric") }) @@ -186,10 +211,10 @@ describe("ConnectionRegistry", () => { test("setConfigs overrides existing state", () => { Registry.setConfigs({ a: { type: "postgres" } }) - expect(Registry.list().warehouses).toHaveLength(1) + expect(Registry.list().warehouses.filter((w) => w.name !== "scratch")).toHaveLength(1) Registry.setConfigs({ b: { type: "mysql" }, c: { type: "duckdb" } }) - expect(Registry.list().warehouses).toHaveLength(2) + expect(Registry.list().warehouses.filter((w) => w.name !== "scratch")).toHaveLength(2) expect(Registry.getConfig("a")).toBeUndefined() }) }) @@ -1056,7 +1081,7 @@ describe("Connection dispatcher registration", () => { pg_local: { type: "postgres", host: "localhost", database: "testdb" }, }) const result = await Dispatcher.call("warehouse.list", {}) - expect(result.warehouses).toHaveLength(1) + expect(result.warehouses.filter((w) => w.name !== "scratch")).toHaveLength(1) expect(result.warehouses[0].name).toBe("pg_local") expect(result.warehouses[0].type).toBe("postgres") expect(result.warehouses[0].database).toBe("testdb") diff --git a/packages/opencode/test/altimate/data-diff-cross-dialect.test.ts b/packages/opencode/test/altimate/data-diff-cross-dialect.test.ts index bf349e323e..9674db7322 100644 --- a/packages/opencode/test/altimate/data-diff-cross-dialect.test.ts +++ b/packages/opencode/test/altimate/data-diff-cross-dialect.test.ts @@ -24,7 +24,7 @@ * (zero coupling to NAPI availability / Registry state) and more reliable in a * single-process test runner. */ -import { describe, test, expect, beforeAll, afterAll, beforeEach } from "bun:test" +import { describe, test, expect, beforeAll, afterAll, beforeEach, mock, spyOn } from "bun:test" import { buildPartitionWhereClause, @@ -230,3 +230,37 @@ describe("joindiff + cross-warehouse guard", () => { } }) }) + +describe("data.diff read-only warehouse probes", () => { + test.each(["postgres", "postgresql", "sqlite"])( + "partition discovery protects PostgreSQL reads and preserves other connector options (%s)", + async (type) => { + Registry.setConfigs({ probe: { type } }) + const execute = mock(async () => ({ columns: ["partition_value"], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as any) + try { + const result = await runDataDiff({ + source: "public.orders", + target: "public.orders_copy", + key_columns: ["id"], + partition_column: "region", + }) + expect(result.success).toBe(true) + expect(execute).toHaveBeenCalledTimes(2) + expect(get).toHaveBeenCalledWith("probe") + for (const call of execute.mock.calls) { + const [sql, limit, binds, options] = call as unknown as [string, unknown, unknown, { noLimit: boolean; readOnly?: boolean }] + expect(sql).toContain("SELECT DISTINCT") + expect(limit).toBeUndefined() + expect(binds).toBeUndefined() + expect(options.noLimit).toBe(true) + if (type === "sqlite") expect(options).not.toHaveProperty("readOnly") + else expect(options.readOnly).toBe(true) + } + } finally { + get.mockRestore() + Registry.reset() + } + }, + ) +}) diff --git a/packages/opencode/test/altimate/datamate.test.ts b/packages/opencode/test/altimate/datamate.test.ts index 50ff9ad2a8..f28e8a413e 100644 --- a/packages/opencode/test/altimate/datamate.test.ts +++ b/packages/opencode/test/altimate/datamate.test.ts @@ -11,6 +11,7 @@ import { slugify } from "../../src/altimate/tools/datamate" // --------------------------------------------------------------------------- const tmpRoot = path.join(os.tmpdir(), "datamate-test-" + process.pid + "-" + Math.random().toString(36).slice(2)) +const originalTestHome = process.env.OPENCODE_TEST_HOME // --------------------------------------------------------------------------- // buildMcpConfig @@ -83,7 +84,8 @@ describe("getCredentials", () => { }) afterEach(async () => { - delete process.env.OPENCODE_TEST_HOME + if (originalTestHome === undefined) delete process.env.OPENCODE_TEST_HOME + else process.env.OPENCODE_TEST_HOME = originalTestHome await fsp.rm(testHome, { recursive: true, force: true }).catch(() => {}) }) @@ -342,7 +344,8 @@ describe("saveCredentials", () => { }) afterEach(async () => { - delete process.env.OPENCODE_TEST_HOME + if (originalTestHome === undefined) delete process.env.OPENCODE_TEST_HOME + else process.env.OPENCODE_TEST_HOME = originalTestHome await fsp.rm(testHome, { recursive: true, force: true }).catch(() => {}) }) @@ -415,7 +418,8 @@ describe("TUI credential round-trip", () => { }) afterEach(async () => { - delete process.env.OPENCODE_TEST_HOME + if (originalTestHome === undefined) delete process.env.OPENCODE_TEST_HOME + else process.env.OPENCODE_TEST_HOME = originalTestHome await fsp.rm(testHome, { recursive: true, force: true }).catch(() => {}) }) diff --git a/packages/opencode/test/altimate/dbt-first-execution.test.ts b/packages/opencode/test/altimate/dbt-first-execution.test.ts index 5812924b12..1133f39113 100644 --- a/packages/opencode/test/altimate/dbt-first-execution.test.ts +++ b/packages/opencode/test/altimate/dbt-first-execution.test.ts @@ -22,6 +22,13 @@ import * as Dispatcher from "../../src/altimate/native/dispatcher" // NOTE: mock.module leaks across test files in Bun — we spread the real // module exports to minimize damage to other test files. import * as realDuckdb from "@altimateai/drivers/duckdb" +// Snapshot the genuine exports BEFORE mocking: Bun live-updates the namespace +// binding once mock.module runs, so this copy is the only way to restore the +// real driver for test files that run later in the same process. +const genuineDuckdb = { ...realDuckdb } +afterAll(() => { + mock.module("@altimateai/drivers/duckdb", () => genuineDuckdb) +}) mock.module("@altimateai/drivers/duckdb", () => ({ ...realDuckdb, connect: async (config: any) => ({ diff --git a/packages/opencode/test/altimate/drivers-mongodb-e2e.test.ts b/packages/opencode/test/altimate/drivers-mongodb-e2e.test.ts index d10e5966a7..7741fdc4ab 100644 --- a/packages/opencode/test/altimate/drivers-mongodb-e2e.test.ts +++ b/packages/opencode/test/altimate/drivers-mongodb-e2e.test.ts @@ -1976,15 +1976,16 @@ describe.skipIf(!DOCKER && !MONGODB_USE_CI)("MongoDB Driver E2E", () => { ).rejects.toThrow() }) - test("handles queries on non-existent collection (find returns empty)", async () => { - const result = await connector.execute( - cmd({ - command: "find", - database: "testdb", - collection: "totally_nonexistent_collection_xyz", - }), - ) - expect(result.row_count).toBe(0) + test("rejects queries on a non-existent collection and lists the available ones", async () => { + await expect( + connector.execute( + cmd({ + command: "find", + database: "testdb", + collection: "totally_nonexistent_collection_xyz", + }), + ), + ).rejects.toThrow(/does not exist or is not accessible.*Available collections: .*users/) }) test("handles numeric edge cases in documents", async () => { diff --git a/packages/opencode/test/altimate/duckdb-lock-helper.ts b/packages/opencode/test/altimate/duckdb-lock-helper.ts index c35f36ee7f..61a10d8fe7 100644 --- a/packages/opencode/test/altimate/duckdb-lock-helper.ts +++ b/packages/opencode/test/altimate/duckdb-lock-helper.ts @@ -34,6 +34,7 @@ export async function holdWriteLock(storePath: string, scratchDir: string): Prom fs.writeFileSync( scriptPath, [ + `let c`, `try {`, // Inside the try, so a driver that fails to load is reported through the // same HOLD_FAILED channel as any other failure rather than surfacing as @@ -42,7 +43,7 @@ export async function holdWriteLock(storePath: string, scratchDir: string): Prom // The lock-holder always creates a fresh store, so it must opt in to // creation — otherwise the store-existence guard would refuse it before // it can take the lock the caller is waiting on. - ` const c = await connect({ type: "duckdb", path: process.argv[2], create: true })`, + ` c = await connect({ type: "duckdb", path: process.argv[2], create: true })`, ` await c.connect()`, // A real write, so the lock is unambiguously a writer's. ` await c.execute("CREATE TABLE IF NOT EXISTS lock_probe (x INTEGER)")`, @@ -51,6 +52,15 @@ export async function holdWriteLock(storePath: string, scratchDir: string): Prom ` process.stderr.write("HOLD_FAILED " + (e instanceof Error ? e.message : String(e)) + "\\n")`, ` process.exit(1)`, `}`, + // The store is held by the driver's helper process, a child of this + // script, not by this script. Exiting on a bare signal would orphan that + // helper with the lock still taken until it notices its parent is gone, + // which is long enough for the next open in the calling test to collide + // with it on a slow runner. Close the connector first: that kills and + // reaps the helper, so the lock is gone before release() resolves. + `process.on("SIGTERM", () => {`, + ` Promise.resolve(c?.close()).catch(() => {}).finally(() => process.exit(0))`, + `})`, `setInterval(() => {}, 1 << 30)`, ].join("\n"), "utf-8", @@ -98,11 +108,24 @@ export async function holdWriteLock(storePath: string, scratchDir: string): Prom return { async release() { + // SIGTERM lets the script close its connector (and so reap the helper + // that actually holds the lock) before exiting; SIGKILL is the fallback + // if it does not finish in time. child.kill() + let killTimer: ReturnType | undefined + const forceKill = new Promise((resolve) => { + killTimer = setTimeout(() => { + child.kill("SIGKILL") + resolve() + }, 10_000) + }) try { + await Promise.race([child.exited, forceKill]) await child.exited } catch { // the process is gone either way + } finally { + if (killTimer) clearTimeout(killTimer) } }, } diff --git a/packages/opencode/test/altimate/duckdb-open-e2e.test.ts b/packages/opencode/test/altimate/duckdb-open-e2e.test.ts index 49dcd65362..937b88f40f 100644 --- a/packages/opencode/test/altimate/duckdb-open-e2e.test.ts +++ b/packages/opencode/test/altimate/duckdb-open-e2e.test.ts @@ -146,6 +146,135 @@ describe("DuckDB driver: opening a real store", () => { expect(results).toEqual(Array(8).fill(1)) }) + ddbTest("shares the engine until the last overlapping connector closes", async () => { + const connectors = await Promise.all( + Array.from({ length: 8 }, () => connect({ type: "duckdb", path: storePath })), + ) + try { + // Keep the first writer alive until all other opens have settled. This + // forces overlap without relying on helper startup speed or a sleep. + await connectors[0].connect() + const opened = await Promise.allSettled(connectors.slice(1).map((c) => c.connect())) + expect(opened.filter((result) => result.status === "rejected")).toEqual([]) + + const counts = await Promise.all( + connectors.map(async (c) => Number((await c.execute("SELECT count(*) AS n FROM t")).rows[0][0])), + ) + expect(counts).toEqual(Array(8).fill(1)) + + await Promise.all(connectors.slice(0, -1).map((c) => c.close())) + const survivor = await connectors[7].execute("SELECT count(*) AS n FROM t") + expect(Number(survivor.rows[0][0])).toBe(1) + } finally { + await Promise.all(connectors.map((c) => c.close())) + } + + // A different process must be able to take the write lock once every + // connector releases the shared helper. + const lock = await holdWriteLock(storePath, dir) + await lock.release() + }) + + ddbTest("keeps overlapping connectors in independent sessions", async () => { + const first = await connect({ type: "duckdb", path: storePath }) + const second = await connect({ type: "duckdb", path: storePath }) + const table = `connector_transaction_${crypto.randomUUID().replaceAll("-", "")}` + try { + await Promise.all([first.connect(), second.connect()]) + await first.execute("CREATE TEMP TABLE session_probe AS SELECT 1 AS value") + await second.execute("CREATE TEMP TABLE session_probe AS SELECT 2 AS value") + expect(Number((await first.execute("SELECT value FROM session_probe")).rows[0][0])).toBe(1) + expect(Number((await second.execute("SELECT value FROM session_probe")).rows[0][0])).toBe(2) + + await first.execute(`CREATE TABLE ${table} (value INTEGER)`) + await first.execute("BEGIN") + await first.execute(`INSERT INTO ${table} VALUES (3)`) + expect(Number((await first.execute(`SELECT count(*) AS n FROM ${table}`)).rows[0][0])).toBe(1) + expect(Number((await second.execute(`SELECT count(*) AS n FROM ${table}`)).rows[0][0])).toBe(0) + await first.execute("COMMIT") + expect(Number((await second.execute(`SELECT count(*) AS n FROM ${table}`)).rows[0][0])).toBe(1) + } finally { + await first.execute("ROLLBACK").catch(() => {}) + await first.execute(`DROP TABLE IF EXISTS ${table}`).catch(() => {}) + await Promise.all([first.close(), second.close()]) + } + }) + + ddbTest.each([undefined, 4096])("keeps sandbox restrictions on shared connector sessions (maxResultBytes=%s)", async (maxResultBytes) => { + const allowed = path.join(fs.realpathSync(dir), `sandbox's-${maxResultBytes ?? "buffered"}`) + fs.mkdirSync(allowed) + const inside = path.join(allowed, "inside.csv") + const outside = path.join(fs.realpathSync(dir), "outside.csv") + fs.writeFileSync(inside, "value\n42\n") + fs.writeFileSync(outside, "value\n99\n") + const quote = (value: string) => `'${value.replaceAll("'", "''")}'` + const config = { type: "duckdb", path: path.join(allowed, "store.duckdb"), create: true, sandbox_directory: allowed } + const first = await connect(config) + const second = await connect(config) + const blocked = [outside, "https://example.invalid/blocked.csv", `${allowed}/../outside.csv`] + try { + await first.connect() + await second.connect() + // Overlapping writers require one shared engine; equal temp table names + // below prove that each connector still has its own native connection. + for (const [index, c] of [first, second].entries()) { + // Exercise denied file and remote reads as the first user statement on + // a fresh native connection, before any successful query can initialize it. + for (const target of index === 0 ? blocked : [blocked[1], blocked[0], blocked[2]]) { + await expect(c.execute(`SELECT * FROM read_csv(${quote(target)})`, undefined, undefined, { maxResultBytes })) + .rejects.toThrow("file system operations are disabled by configuration") + } + const settings = await c.execute(`SELECT name, value, scope FROM duckdb_settings() + WHERE name IN ('autoinstall_known_extensions', 'autoload_known_extensions', 'enable_external_access', 'lock_configuration') + ORDER BY name`) + expect(settings.rows).toEqual([ + ["autoinstall_known_extensions", "false", "GLOBAL"], + ["autoload_known_extensions", "false", "GLOBAL"], + ["enable_external_access", "false", "GLOBAL"], + ["lock_configuration", "true", "GLOBAL"], + ]) + expect((await c.execute("SELECT scope FROM duckdb_settings() WHERE name = 'allowed_directories'")).rows) + .toEqual([["GLOBAL"]]) + for (const sql of [ + "SET enable_external_access = true", + `SET allowed_directories = [${quote(allowed)}]`, + `SET home_directory = ${quote(allowed)}`, + ]) await expect(c.execute(sql)).rejects.toThrow("the configuration has been locked") + const result = await c.execute(`SELECT * FROM read_csv(${quote(inside)})`, undefined, undefined, { maxResultBytes }) + expect(result.rows).toEqual([[42n]]) + await c.execute(`CREATE TEMP TABLE sandbox_session AS SELECT ${index} AS value`) + } + expect((await first.execute("SELECT * FROM sandbox_session")).rows).toEqual([[0]]) + expect((await second.execute("SELECT * FROM sandbox_session")).rows).toEqual([[1]]) + + await second.close() + await second.connect() + for (const target of blocked) { + await expect(second.execute(`SELECT * FROM read_csv(${quote(target)})`, undefined, undefined, { maxResultBytes })) + .rejects.toThrow("file system operations are disabled by configuration") + } + expect((await second.execute(`SELECT * FROM read_csv(${quote(inside)})`)).rows).toEqual([[42n]]) + } finally { + await Promise.all([first.close(), second.close()]) + } + }) + + ddbTest("overlapping read-only connectors cannot write through their shared engine", async () => { + const readers = await Promise.all( + Array.from({ length: 2 }, () => connect({ type: "duckdb", path: storePath, readonly: true })), + ) + try { + await Promise.all(readers.map((c) => c.connect())) + for (const [i, reader] of readers.entries()) { + expect(Number((await reader.execute("SELECT count(*) AS n FROM t")).rows[0][0])).toBe(1) + const message = await messageFrom(() => reader.execute(`CREATE TABLE reader_must_not_write_${i} (x INTEGER)`)) + expect(message.toLowerCase()).toContain("read-only") + } + } finally { + await Promise.all(readers.map((c) => c.close())) + } + }) + ddbTest("honours config.readonly by actually opening READ_ONLY", async () => { const c = await connect({ type: "duckdb", path: storePath, readonly: true }) await c.connect() diff --git a/packages/opencode/test/altimate/inspection-default-schema.test.ts b/packages/opencode/test/altimate/inspection-default-schema.test.ts new file mode 100644 index 0000000000..0df7f6ffca --- /dev/null +++ b/packages/opencode/test/altimate/inspection-default-schema.test.ts @@ -0,0 +1,18 @@ +import { afterEach, describe, expect, spyOn, test } from "bun:test" +import * as Registry from "../../src/altimate/native/connections/registry" +import { defaultInspectionSchema } from "../../src/altimate/native/connections/inspection-target" + +afterEach(() => spyOn(Registry, "getConfig").mockRestore()) + +describe("defaultInspectionSchema for MongoDB", () => { + test.each([ + [{ type: "mongodb", connection_string: "mongodb://host:27017/analytics?retryWrites=true" }, "analytics"], + [{ type: "mongodb", connection_string: "mongodb+srv://u:p@cluster.example.net/my%20db" }, "my db"], + [{ type: "mongodb", connection_string: "mongodb://host/", database: "explicit" }, "explicit"], + [{ type: "mongodb", connection_string: "mongodb://host:27017/?tls=true" }, undefined], + [{ type: "mongodb", connection_string: "mongodb://host" }, undefined], + ])("%j -> %s", (config, expected) => { + spyOn(Registry, "getConfig").mockReturnValue(config as never) + expect(defaultInspectionSchema("w")).toBe(expected) + }) +}) diff --git a/packages/opencode/test/altimate/json-bigint.test.ts b/packages/opencode/test/altimate/json-bigint.test.ts new file mode 100644 index 0000000000..f149223d67 --- /dev/null +++ b/packages/opencode/test/altimate/json-bigint.test.ts @@ -0,0 +1,52 @@ +import { expect, test } from "bun:test" +import { bigintReplacer, normalizeBigInts } from "../../src/altimate/util/json" +import { estimateInputTokens } from "../../src/provider/output-token-budget" + +test("request normalization preserves exact integers, source data, and SDK media", () => { + const image = new Uint8Array([137, 80, 78, 71]) + const url = new URL("https://example.com/image.png") + const source = { + rows: [{ counts: [0n, 42n, 9223372036854775807n, -9223372036854775808n], nullable: null }], + attachments: [{ image }, { image: url }], + sparse: new Array(2), + } + const result = normalizeBigInts(source) + expect(result.rows as unknown).toEqual([ + { counts: ["0", "42", "9223372036854775807", "-9223372036854775808"], nullable: null }, + ]) + expect(result.attachments[0]!.image).toBe(image) + expect(result.attachments[1]!.image).toBe(url) + expect(result.sparse.length).toBe(2) + expect(source.rows[0]!.counts[2]).toBe(9223372036854775807n) + expect(JSON.stringify(source.rows, bigintReplacer)).toBe(JSON.stringify(result.rows)) +}) + +test("request estimator handles BigInts in message output, schema metadata, and instructions", () => { + const input = { + system: [], + messages: [ + { + role: "tool", + content: [{ type: "tool-result", output: { type: "json", value: { count: 9223372036854775807n } } }], + }, + ], + tools: { count: { inputSchema: { default: 42n } } }, + instructions: { count: -9223372036854775808n }, + } + expect(estimateInputTokens(input)).toBe(estimateInputTokens(normalizeBigInts(input))) + expect(estimateInputTokens(input)).toBeGreaterThan(0) +}) + +test("storage normalization uses numbers only for exactly representable integers", () => { + const counts = [0n, 42n, -42n, 9007199254740991n, -9007199254740991n, 9007199254740992n, -9007199254740992n] + const source = { rows: [{ counts, nullable: null }], optional: undefined } + const result = normalizeBigInts(source, "safe-number") + + expect(result.rows as unknown).toEqual([ + { counts: [0, 42, -42, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, "9007199254740992", "-9007199254740992"], nullable: null }, + ]) + expect(result).toHaveProperty("optional", undefined) + expect(source.rows[0]!.counts).toBe(counts) + expect(counts[1]).toBe(42n) + expect(() => JSON.stringify(result)).not.toThrow() +}) diff --git a/packages/opencode/test/altimate/llm-request-tracing.test.ts b/packages/opencode/test/altimate/llm-request-tracing.test.ts new file mode 100644 index 0000000000..22115503d3 --- /dev/null +++ b/packages/opencode/test/altimate/llm-request-tracing.test.ts @@ -0,0 +1,283 @@ +import { afterEach, describe, expect, spyOn, test } from "bun:test" +import { jsonSchema, tool } from "ai" +import { convertArrayToReadableStream, MockLanguageModelV3 } from "ai/test" +import z from "zod" +import { Auth } from "../../src/auth" +import { Bus } from "../../src/bus" +import { Config } from "../../src/config/config" +import { Plugin } from "../../src/plugin" +import { Provider } from "../../src/provider/provider" +import { ModelID, ProviderID } from "../../src/provider/schema" +import { LLM } from "../../src/session/llm" +import { MessageID, SessionID } from "../../src/session/schema" +import { SystemPrompt } from "../../src/session/system" +import { Retrieval } from "../../src/tool/retrieval" +import { RunTracing } from "../../src/cli/cmd/run-tracing" +import { Trace, type TraceFile } from "../../src/altimate/observability/tracing" + +const spies: Array<{ mockRestore(): void }> = [] +afterEach(() => { + for (const spy of spies.splice(0).reverse()) spy.mockRestore() +}) + +const sessionID = SessionID.make("ses_request_trace") +const providerID = ProviderID.make("openai") +const model: Provider.Model = { + id: ModelID.make("gpt-4.1"), + providerID, + api: { id: "gpt-4.1", npm: "@ai-sdk/openai", url: "https://unused.invalid" }, + name: "Fake request model", + capabilities: { + temperature: true, + reasoning: false, + attachment: false, + toolcall: true, + input: { text: true, image: false, audio: false, video: false, pdf: false }, + output: { text: true, image: false, audio: false, video: false, pdf: false }, + interleaved: false, + }, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 128_000, output: 4096 }, + status: "active", + release_date: "2025-01-01", + options: { apiKey: "model-options-secret" }, + headers: { Authorization: "model-header-secret" }, + variants: { high: { reasoningEffort: "high" } }, +} + +function input(): LLM.StreamInput { + return { + sessionID, + messageID: "msg_assistant_request", + model, + agent: { + name: "analyst", + mode: "primary", + prompt: "agent prompt", + options: {}, + permission: [ + { permission: "*", pattern: "*", action: "allow" }, + { permission: "denied", pattern: "*", action: "deny" }, + ], + }, + user: { + id: MessageID.make("msg_user_request"), + sessionID, + role: "user", + time: { created: 1 }, + agent: "analyst", + model: { providerID, modelID: model.id }, + variant: "high", + system: "user prompt", + tools: { user_disabled: false }, + }, + system: ["custom prompt"], + abort: new AbortController().signal, + messages: [ + { role: "system", content: "history system" }, + { role: "user", content: "Read the archive" }, + { + role: "assistant", + content: [{ type: "tool-call", toolCallId: "old-call", toolName: "historical", input: {} }], + }, + { + role: "tool", + content: [ + { + type: "tool-result", + toolCallId: "old-call", + toolName: "historical", + output: { type: "text", value: "archive" }, + }, + ], + }, + { role: "user", content: "Continue" }, + ], + tools: { + read: tool({ description: "Read file", inputSchema: z.object({ path: z.string() }) }), + query: tool({ + description: "Run query", + inputSchema: jsonSchema({ type: "object", properties: { sql: { type: "string" } }, required: ["sql"] }), + }), + denied: tool({ inputSchema: z.object({}) }), + user_disabled: tool({ inputSchema: z.object({}) }), + retrieved_out: tool({ inputSchema: z.object({}) }), + invalid: tool({ inputSchema: z.object({ error: z.string() }) }), + }, + } +} + +function setup(enabled = true) { + const exported: TraceFile[] = [] + const root = Trace.withExporters([ + { + name: "memory", + export: async (trace) => { + exported.push(trace) + return undefined + }, + }, + ]) + root.startTrace(sessionID, {}) + const recorder = new RunTracing(sessionID, root, { get: async () => undefined, children: async () => [] }) + const hooks = { system: "plugin prompt", instructions: "plugin instructions" } + const language = new MockLanguageModelV3({ + doStream: async () => ({ + stream: convertArrayToReadableStream([ + { type: "stream-start", warnings: [] }, + { type: "text-start", id: "text-0" }, + { type: "text-delta", id: "text-0", delta: "ok" }, + { type: "text-end", id: "text-0" }, + { + type: "finish", + finishReason: { unified: "stop", raw: "stop" }, + usage: { + inputTokens: { total: 1, noCache: 1, cacheRead: 0, cacheWrite: 0 }, + outputTokens: { total: 1, text: 1, reasoning: 0 }, + }, + }, + ]), + }), + }) + spies.push( + spyOn(Config, "get").mockResolvedValue({ tracing: { enabled } }), + spyOn(Provider, "getLanguage").mockResolvedValue(language), + spyOn(Provider, "getProvider").mockResolvedValue({ + id: providerID, + name: "Fake provider", + source: "config", + env: [], + options: { apiKey: "provider-options-secret", headers: { Authorization: "provider-header-secret" } }, + models: { [model.id]: model }, + }), + spyOn(Auth, "get").mockResolvedValue({ + type: "oauth", + access: "auth-access-secret", + refresh: "auth-refresh-secret", + expires: Number.MAX_SAFE_INTEGER, + }), + spyOn(Plugin, "trigger").mockImplementation(async (name, _input, output) => { + if (name === "experimental.chat.system.transform") (output as { system: string[] }).system.push(hooks.system) + if (name === "chat.params") { + const params = output as { options: Record } + params.options.instructions = `${params.options.instructions}\n${hooks.instructions}` + } + if (name === "chat.headers") + (output as { headers: Record }).headers.Authorization = "plugin-header-secret" + return output + }), + spyOn(Retrieval, "enabled").mockReturnValue(true), + spyOn(Retrieval, "select").mockImplementation( + (_query, _tools, options) => new Set(["read", "query", ...(options?.keep ?? [])]), + ), + ) + const publish = spyOn(Bus, "publish").mockImplementation(async (definition, properties) => { + await recorder.observe({ type: definition.type, properties }) + }) + spies.push(publish) + return { + hooks, + language, + publish, + async finish() { + await recorder.finish() + return exported[0]! + }, + } +} + +async function stream(request = input()) { + const result = await LLM.stream(request) + expect(await result.text).toBe("ok") +} + +type Snapshot = { hash: string; content?: unknown } +type RequestInput = { system: Snapshot; tools: Snapshot; instructions: Snapshot } + +describe("LLM request trace boundary", () => { + test("captures finalized inputs and deduplicates unchanged snapshots across real stream calls", async () => { + const run = setup() + await stream() + await stream() + run.hooks.system = "changed plugin prompt" + run.hooks.instructions = "changed plugin instructions" + const changed = input() + changed.tools.query = tool({ inputSchema: z.object({ sql: z.string(), limit: z.number() }) }) + await stream(changed) + + const trace = await run.finish() + const spans = trace.spans.filter((span) => span.name === "llm-request") + expect(spans).toHaveLength(3) + expect(run.language.doStreamCalls).toHaveLength(3) + expect(spans[0]!.attributes).toMatchObject({ + sessionId: sessionID, + messageId: "msg_assistant_request", + userMessageId: "msg_user_request", + agent: "analyst", + }) + expect(spans[0]!.model).toEqual({ providerId: "openai", modelId: model.id, variant: "high" }) + expect(new Set(spans.map((span) => span.attributes?.requestId)).size).toBe(3) + const [first, second, third] = spans.map((span) => span.input as RequestInput) + expect(first!.system.content).toBe("agent prompt\ncustom prompt\nuser prompt\n\nplugin prompt\n\nhistory system") + expect(first!.instructions.content).toBe(`${SystemPrompt.instructions()}\nplugin instructions`) + const catalog = first!.tools.content as Array<{ name: string; active: boolean; inputSchema: unknown }> + expect(catalog.map((entry) => [entry.name, entry.active])).toEqual([ + ["historical", true], + ["invalid", false], + ["query", true], + ["read", true], + ]) + expect(catalog.find((entry) => entry.name === "query")!.inputSchema).toEqual({ + type: "object", + properties: { sql: { type: "string" } }, + required: ["sql"], + }) + expect(catalog.find((entry) => entry.name === "read")!.inputSchema).toMatchObject({ + type: "object", + properties: { path: { type: "string" } }, + required: ["path"], + }) + expect(run.language.doStreamCalls[0]!.tools?.map((entry) => entry.name).sort()).toEqual([ + "historical", + "query", + "read", + ]) + for (const key of ["system", "tools", "instructions"] as const) { + expect(first![key].hash).toMatch(/^[a-f0-9]{64}$/) + expect(second![key]).toEqual({ hash: first![key].hash }) + expect(third![key].hash).not.toBe(first![key].hash) + expect(third![key].content).toBeDefined() + } + expect(JSON.stringify(trace)).not.toContain("-secret") + expect(JSON.stringify(run.publish.mock.calls)).not.toContain("-secret") + expect(trace.metadata.captureOmissions?.some((value) => value.startsWith("effective_system_prompt:"))).toBe(false) + }) + + test("disabled tracing skips publication and trace-only schema access without changing generation", async () => { + const run = setup(false) + const request = input() + let traceSchemaReads = 0 + Object.defineProperty(request.tools.invalid!, "inputSchema", { + get() { + traceSchemaReads++ + throw new Error("inactive schema must not be resolved") + }, + }) + await stream(request) + expect(run.publish).not.toHaveBeenCalled() + expect(traceSchemaReads).toBe(0) + const trace = await run.finish() + expect(trace.spans.filter((span) => span.name === "llm-request")).toHaveLength(0) + expect(run.language.doStreamCalls).toHaveLength(1) + }) + + test("request event failure never interrupts generation", async () => { + const run = setup() + run.publish.mockRejectedValue(new Error("trace transport unavailable")) + await stream() + expect(run.publish).toHaveBeenCalledTimes(1) + expect(run.language.doStreamCalls).toHaveLength(1) + const trace = await run.finish() + expect(trace.spans.filter((span) => span.name === "llm-request")).toHaveLength(0) + }) +}) diff --git a/packages/opencode/test/altimate/registry-env-loading.test.ts b/packages/opencode/test/altimate/registry-env-loading.test.ts index ac2e961318..ff499a1adf 100644 --- a/packages/opencode/test/altimate/registry-env-loading.test.ts +++ b/packages/opencode/test/altimate/registry-env-loading.test.ts @@ -7,8 +7,9 @@ * CI/CD users who set ALTIMATE_CODE_CONN_* env vars get correct configs. */ -import { describe, test, expect, beforeEach, afterEach } from "bun:test" +import { describe, test, expect, beforeEach, afterEach, spyOn } from "bun:test" import * as Registry from "../../src/altimate/native/connections/registry" +import { Log } from "../../src/altimate/util/log" // --------------------------------------------------------------------------- // Env var cleanup helper @@ -167,3 +168,43 @@ describe("ConnectionRegistry: list() with env-loaded connections", () => { expect(ciWarehouse?.database).toBe("analytics") }) }) + +describe("ConnectionRegistry: reserved scratch name", () => { + test("loading a configured scratch warns and keeps one conflicting configured row", () => { + setEnvVar("SCRATCH", JSON.stringify({ type: "postgres", database: "existing_warehouse" })) + const warn = spyOn(Log.Default, "warn").mockImplementation(() => {}) + try { + Registry.load() + + expect(warn).toHaveBeenCalledWith(expect.stringContaining('Connection "scratch" conflicts')) + const matches = Registry.list().warehouses.filter((warehouse) => warehouse.name === "scratch") + expect(matches).toHaveLength(1) + expect(matches[0].type).toBe("postgres") + expect(matches[0].database).toBe("existing_warehouse") + expect(matches[0].conflict).toContain("reserved") + expect(matches[0].conflict).toContain("Rename") + expect(Registry.getConfig("scratch")?.type).toBe("postgres") + } finally { + warn.mockRestore() + } + }) + + test("get loads configuration before refusing to redirect a configured scratch", async () => { + setEnvVar("SCRATCH", JSON.stringify({ type: "postgres", database: "existing_warehouse" })) + + await expect(Registry.get("scratch")).rejects.toThrow("reserved built-in scratch warehouse name") + await expect(Registry.get("scratch")).rejects.toThrow("Rename its connection key") + await expect(Registry.get("scratch")).rejects.toThrow("ALTIMATE_CODE_CONN_SOURCE_SCRATCH") + expect(Registry.getConfig("scratch")?.database).toBe("existing_warehouse") + }) + + test("an unconfigured scratch remains the synthetic warehouse without a conflict", () => { + Registry.setConfigs({ source: { type: "postgres", database: "source_data" } }) + + const matches = Registry.list().warehouses.filter((warehouse) => warehouse.name === "scratch") + expect(matches).toHaveLength(1) + expect(matches[0].type).toBe("duckdb") + expect(matches[0].conflict).toBeUndefined() + expect(Registry.getConfig("scratch")).toEqual({ type: "duckdb" }) + }) +}) diff --git a/packages/opencode/test/altimate/schema-cache.test.ts b/packages/opencode/test/altimate/schema-cache.test.ts index 2d5ac92bd2..6f3fabadb3 100644 --- a/packages/opencode/test/altimate/schema-cache.test.ts +++ b/packages/opencode/test/altimate/schema-cache.test.ts @@ -355,6 +355,23 @@ describe("large dataset handling", () => { // --------------------------------------------------------------------------- describe("re-indexing and multi-warehouse", () => { + test("all search terms respect the warehouse filter for tables and columns", async () => { + const cache = SchemaCache.createInMemory() + try { + const connector = mockConnector({ public: { orders: ["order_id"], customers: ["customer_id"] } }) + await cache.indexWarehouse("selected", "postgres", connector) + await cache.indexWarehouse("other", "postgres", connector) + + const result = cache.search("orders customers", "selected") + expect(result.tables).toHaveLength(2) + expect(result.columns).toHaveLength(2) + expect(result.tables.every((table) => table.warehouse === "selected")).toBe(true) + expect(result.columns.every((column) => column.warehouse === "selected")).toBe(true) + } finally { + cache.close() + } + }) + test("re-indexing replaces old data completely", async () => { const cache = SchemaCache.createInMemory() diff --git a/packages/opencode/test/altimate/schema-finops-dbt.test.ts b/packages/opencode/test/altimate/schema-finops-dbt.test.ts index 9f728b090a..85a4403cc4 100644 --- a/packages/opencode/test/altimate/schema-finops-dbt.test.ts +++ b/packages/opencode/test/altimate/schema-finops-dbt.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test, beforeAll, afterAll } from "bun:test" +import { describe, expect, test, beforeAll, afterAll, mock, spyOn } from "bun:test" import * as Dispatcher from "../../src/altimate/native/dispatcher" import * as Registry from "../../src/altimate/native/connections/registry" @@ -25,7 +25,7 @@ beforeAll(() => { // Import SQL template exports for template generation tests import { SQL_TEMPLATES as CreditTemplates } from "../../src/altimate/native/finops/credit-analyzer" -import { SQL_TEMPLATES as HistoryTemplates } from "../../src/altimate/native/finops/query-history" +import { getQueryHistory, SQL_TEMPLATES as HistoryTemplates } from "../../src/altimate/native/finops/query-history" import { SQL_TEMPLATES as AdvisorTemplates } from "../../src/altimate/native/finops/warehouse-advisor" import { SQL_TEMPLATES as UnusedTemplates } from "../../src/altimate/native/finops/unused-resources" import { SQL_TEMPLATES as RoleTemplates } from "../../src/altimate/native/finops/role-access" @@ -724,3 +724,29 @@ describe("Schema: tags error paths", () => { expect(result.error).toContain("Snowflake") }) }) + +describe("FinOps: query history read-only execution", () => { + test.each(["postgres", "postgresql", "snowflake", "bigquery", "databricks"])( + "query history protects PostgreSQL reads and preserves other connector options (%s)", + async (type) => { + Registry.setConfigs({ history: { type } }) + const execute = mock(async () => ({ columns: [], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as any) + try { + const result = await getQueryHistory({ warehouse: "history", limit: 17 }) + expect(result.success).toBe(true) + expect(execute).toHaveBeenCalledTimes(1) + const [sql, limit, binds, options] = execute.mock.calls[0] as unknown as [string, number, unknown[], { readOnly?: boolean } | undefined] + const built = HistoryTemplates.buildHistoryQuery(type, 7, 17)! + expect(sql).toBe(built.sql) + expect(limit).toBe(17) + expect(binds).toEqual(built.binds) + if (type === "postgres" || type === "postgresql") expect(options?.readOnly).toBe(true) + else expect(options).toBeUndefined() + } finally { + get.mockRestore() + Registry.reset() + } + }, + ) +}) diff --git a/packages/opencode/test/altimate/schema-index-duckdb.test.ts b/packages/opencode/test/altimate/schema-index-duckdb.test.ts index 9c3de5b30e..9287abfad5 100644 --- a/packages/opencode/test/altimate/schema-index-duckdb.test.ts +++ b/packages/opencode/test/altimate/schema-index-duckdb.test.ts @@ -1,7 +1,7 @@ import { expect, spyOn, test } from "bun:test" import path from "node:path" import { connect } from "../../../drivers/src/duckdb" -import { loadOptionalDriver } from "../../../drivers/src/resolve" +import { LocalEngine } from "../../../drivers/src/local-engine" import { SchemaCache } from "../../src/altimate/native/schema/cache" import { tmpdir } from "../fixture/fixture" @@ -10,8 +10,6 @@ const duckdbTest = process.env.ALTIMATE_DUCKDB_E2E === "1" ? test : test.skip duckdbTest("indexes a large catalog once with bounded metadata queries", async () => { await using tmp = await tmpdir() - const module = await loadOptionalDriver("duckdb", "duckdb") - const duckdb = module.default ?? module const connector = await connect({ type: "duckdb", path: ":memory:" }) const cache = SchemaCache.create(path.join(tmp.path, "schema-cache.db")) let metadataSpy: ReturnType | undefined @@ -25,7 +23,7 @@ duckdbTest("indexes a large catalog once with bounded metadata queries", async ( await connector.execute("ATTACH ':memory:' AS secondary") await connector.execute("CREATE TABLE secondary.main.item_0 (foreign_field BOOLEAN)") await connector.execute("CREATE TABLE secondary.main.foreign_only (id INTEGER)") - metadataSpy = spyOn(duckdb.Connection.prototype, "all") + metadataSpy = spyOn(LocalEngine.prototype, "call") const started = performance.now() const result = await cache.indexWarehouse("warehouse", "duckdb", connector) diff --git a/packages/opencode/test/altimate/schema-inspect-default-schema.test.ts b/packages/opencode/test/altimate/schema-inspect-default-schema.test.ts new file mode 100644 index 0000000000..742feffd10 --- /dev/null +++ b/packages/opencode/test/altimate/schema-inspect-default-schema.test.ts @@ -0,0 +1,151 @@ +import { afterAll, afterEach, beforeAll, describe, expect, mock, spyOn, test } from "bun:test" +import type { Connector } from "@altimateai/drivers" +import { Dispatcher } from "../../src/altimate/native" +import * as Registry from "../../src/altimate/native/connections/registry" +import { registerAll } from "../../src/altimate/native/connections/register" +import { SchemaInspectTool } from "../../src/altimate/tools/schema-inspect" +import { initTool } from "./tool-fixture" + +// `schema.inspect` defaulted the schema to "public", which is Postgres's default but not +// DuckDB's or SQLite's ("main"): every DuckDB inspection without an explicit schema came +// back empty (one evaluation run read that as "table not found" while the table was queryable). +let previousTelemetry: string | undefined +let connectorSpy: { mockRestore(): void } | undefined + +function fakeConnector(schemas: string[], tables: string[]) { + const connector = { + listSchemas: mock(async () => schemas), + describeTable: mock(async (schema: string, _table: string) => + tables.includes(schema) ? [{ name: "id", data_type: "VARCHAR", nullable: true }] : [], + ), + } + connectorSpy = spyOn(Registry, "get").mockResolvedValue(connector as unknown as Connector) + return connector +} + +beforeAll(async () => { + registerAll() + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + Registry.setConfigs({ + duck: { type: "duckdb", path: ":memory:" } as never, + lite: { type: "sqlite", path: ":memory:" } as never, + }) + for (const warehouse of ["duck", "lite"]) { + const c = await Registry.get(warehouse) + await c.execute("CREATE TABLE contents (id VARCHAR, content VARCHAR)") + } + const duck = await Registry.get("duck") + await duck.execute("CREATE SCHEMA analytics") + await duck.execute("CREATE TABLE analytics.profiled (label VARCHAR)") + await duck.execute("INSERT INTO analytics.profiled VALUES ('resolved schema')") +}) + +afterEach(() => { + connectorSpy?.mockRestore() + connectorSpy = undefined +}) + +afterAll(async () => { + await Registry.closeAll() + Registry.reset() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +describe("schema.inspect without a schema name", () => { + test("uses the default connection's engine when warehouse is omitted", async () => { + const connector = fakeConnector(["public", "main"], ["public", "main"]) + const r: any = await Dispatcher.call("schema.inspect", { table: "contents" }) + expect(r.error).toBeUndefined() + expect(r.schema_name).toBe("main") + expect(connector.describeTable.mock.calls).toEqual([["main", "contents"]]) + expect(connector.listSchemas).not.toHaveBeenCalled() + }) + + test("finds a DuckDB table in its default schema", async () => { + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "duck" }) + expect(r.error).toBeUndefined() + expect(r.schema_name).toBe("main") + expect(r.columns.map((c: any) => c.name)).toEqual(["id", "content"]) + }) + + test("finds a SQLite table", async () => { + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "lite" }) + expect(r.error).toBeUndefined() + expect(r.columns.map((c: any) => c.name)).toEqual(["id", "content"]) + }) + + test("an explicit schema is used as given", async () => { + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "duck", schema_name: "nope" }) + expect(r.schema_name).toBe("nope") + expect(r.columns).toEqual([]) + }) + + test("prefers main without listing schemas when another schema has the same table", async () => { + const connector = fakeConnector(["analytics", "main"], ["analytics", "main"]) + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "duck" }) + expect(r.schema_name).toBe("main") + expect(connector.describeTable.mock.calls).toEqual([["main", "contents"]]) + expect(connector.listSchemas).not.toHaveBeenCalled() + }) + + test("caps all table probes at 20 when many fallback schemas exist", async () => { + const schemas = Array.from({ length: 100 }, (_, i) => `schema_${i}`) + const connector = fakeConnector(schemas, ["schema_19"]) + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "duck" }) + expect(r.columns).toEqual([]) + expect(connector.listSchemas).toHaveBeenCalledTimes(1) + expect(connector.describeTable.mock.calls).toEqual( + ["main", ...schemas.slice(0, 19)].map((schema) => [schema, "contents"]), + ) + }) + + test("skips system schemas and stops probing at the first fallback hit", async () => { + const system = ["information_schema", "pg_catalog", "pg_toast", "sys", "INFORMATION_SCHEMA"] + const connector = fakeConnector( + [...system, "main", "empty", "analytics", "later"], + [...system, "analytics", "later"], + ) + const r: any = await Dispatcher.call("schema.inspect", { table: "contents", warehouse: "duck" }) + expect(r.schema_name).toBe("analytics") + expect(connector.describeTable.mock.calls).toEqual([ + ["main", "contents"], + ["empty", "contents"], + ["analytics", "contents"], + ]) + }) + + test("uses an explicit system schema without probing other schemas", async () => { + const connector = fakeConnector(["main"], ["information_schema"]) + const r: any = await Dispatcher.call("schema.inspect", { + table: "contents", warehouse: "duck", schema_name: "information_schema", + }) + expect(r.schema_name).toBe("information_schema") + expect(connector.describeTable.mock.calls).toEqual([["information_schema", "contents"]]) + expect(connector.listSchemas).not.toHaveBeenCalled() + }) + + test("profiles values from the schema resolved by the handler", async () => { + const connector = await Registry.get("duck") + const execute = spyOn(connector, "execute") + try { + const tool = await initTool(SchemaInspectTool) + const result = await tool.execute({ table: "profiled", warehouse: "duck" }, { + sessionID: "schema-default-test", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, + }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("analytics.profiled") + expect(result.output).toContain("label: 1 distinct — resolved schema") + expect(execute.mock.calls.some(([sql]) => sql.includes('FROM "analytics"."profiled"'))).toBe(true) + } finally { + execute.mockRestore() + } + }) +}) diff --git a/packages/opencode/test/altimate/scratch-sessions.test.ts b/packages/opencode/test/altimate/scratch-sessions.test.ts new file mode 100644 index 0000000000..9d408b1d33 --- /dev/null +++ b/packages/opencode/test/altimate/scratch-sessions.test.ts @@ -0,0 +1,178 @@ +import { afterEach, beforeEach, expect, test } from "bun:test" +import { Effect, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import path from "node:path" +import { closeScratch, getScratch, scratchOpened } from "../../src/altimate/native/connections/scratch" +import * as Registry from "../../src/altimate/native/connections/registry" +import { registerAll } from "../../src/altimate/native/connections/register" +import { SqlExecuteTool } from "../../src/altimate/tools/sql-execute" +import { SqlMaterializeTool } from "../../src/altimate/tools/sql-materialize" +import { MessageID, SessionID } from "../../src/session/schema" +import { Session } from "../../src/session/session" +import { testInstanceStoreLayer } from "../fixture/fixture" +import { testEffect } from "../lib/effect" +import { initTool } from "./tool-fixture" + +const it = testEffect(Layer.mergeAll(Session.defaultLayer, CrossSpawnSpawner.defaultLayer, testInstanceStoreLayer)) + +// Other suites replace the process-global dispatcher handlers with stubs. +beforeEach(() => registerAll()) +afterEach(() => closeScratch()) + +test("scratch connectors and cleanup are scoped to a session", async () => { + const [a, b] = await Promise.all([getScratch("ses_a"), getScratch("ses_b")]) + expect(a).not.toBe(b) + expect(await getScratch("ses_a")).toBe(a) + await a.execute("CREATE TABLE private_result AS SELECT 11 AS id") + await expect(b.execute("SELECT * FROM private_result")).rejects.toThrow(/does not exist/) + await b.execute("CREATE TABLE private_result AS SELECT 22 AS id") + await b.execute("DROP TABLE private_result") + expect((await a.execute("SELECT * FROM private_result")).rows).toEqual([[11]]) + await closeScratch("ses_b") + expect(scratchOpened("ses_b")).toBe(false) + expect(scratchOpened("ses_a")).toBe(true) + expect((await a.execute("SELECT * FROM private_result")).rows).toEqual([[11]]) +}) + +test("tool context scopes materialize and execute to the same session's scratch", async () => { + const materialize = await initTool(SqlMaterializeTool) + const execute = await initTool(SqlExecuteTool) + const context = (id: string) => ({ + sessionID: SessionID.make(id), messageID: MessageID.make("msg_scratch_sessions"), + agent: "analyst", abort: AbortSignal.any([]), messages: [], + metadata: () => {}, ask: async () => {}, + }) + const a = context("ses_materialize_a") + const b = context("ses_materialize_b") + for (const [ctx, value] of [[a, 11], [b, 22]] as const) { + const result = await materialize.execute({ + source_warehouse: "scratch", sql: `SELECT ${value} AS id`, target_table: "private_result", + }, ctx) + expect(result.metadata.error).toBeUndefined() + } + const read = (ctx: typeof a) => execute.execute({ query: "SELECT id FROM private_result", warehouse: "scratch" }, ctx) + expect((await read(a)).output).toMatch(/\b11\b/) + expect((await read(b)).output).toMatch(/\b22\b/) + await execute.execute({ query: "DROP TABLE private_result", warehouse: "scratch" }, b) + expect((await read(a)).output).toMatch(/\b11\b/) +}) + +test("closing a session does not wait for its running scratch query", async () => { + const scratch = await getScratch("ses_busy") + let onDispatch!: () => void + let timer: ReturnType | undefined + const dispatched = new Promise((resolve, reject) => { + onDispatch = resolve + timer = setTimeout(() => reject(new Error("Scratch query was not dispatched to its helper within 5000ms")), 5000) + }) + const pending = scratch.execute( + "SELECT sum(a.i * b.i) FROM range(1000000000) a(i), range(1000000000) b(i)", + undefined, undefined, { queryTimeoutMs: 0, onDispatch }, + ).catch((error) => error) + try { + await dispatched + } finally { + clearTimeout(timer) + } + const start = performance.now() + await closeScratch("ses_busy") + expect(performance.now() - start).toBeLessThan(1500) + expect(await pending).toBeInstanceOf(Error) + expect(scratchOpened("ses_busy")).toBe(false) +}) + +it.instance("subagents share their root's materialized tables while unrelated roots stay isolated", () => Effect.gen(function* () { + const sessions = yield* Session.Service + const parent = yield* sessions.create({}) + const child = yield* sessions.create({ parentID: parent.id }) + const grandchild = yield* sessions.create({ parentID: child.id }) + const other = yield* sessions.create({}) + const otherChild = yield* sessions.create({ parentID: other.id }) + const context = (sessionID: SessionID) => ({ + sessionID, messageID: MessageID.make("msg_scratch_subagents"), + agent: "analyst", abort: AbortSignal.any([]), messages: [], + metadata: () => {}, ask: async () => {}, + }) + const { read, materialize } = yield* Effect.promise(async () => { + const execute = await initTool(SqlExecuteTool) + const materialize = await initTool(SqlMaterializeTool) + const read = (sessionID: SessionID) => execute.execute({ + query: "SELECT id FROM parent_result", warehouse: "scratch", + }, context(sessionID)) + return { read, materialize } + }) + for (const [root, value] of [[parent, 11], [other, 22]] as const) { + const result = yield* Effect.promise(() => materialize.execute({ + source_warehouse: "scratch", sql: `SELECT ${value} AS id`, target_table: "parent_result", + }, context(root.id))) + expect(result.metadata.error).toBeUndefined() + } + for (const descendant of [child, grandchild]) { + const result = yield* Effect.promise(() => read(descendant.id)) + expect(result.metadata.error).toBeUndefined() + expect(result.output).toMatch(/\b11\b/) + expect(yield* Effect.promise(() => getScratch(descendant.id))).toBe(yield* Effect.promise(() => getScratch(parent.id))) + expect(scratchOpened(descendant.id)).toBe(true) + } + expect((yield* Effect.promise(() => read(otherChild.id))).output).toMatch(/\b22\b/) + yield* sessions.remove(child.id) + expect(scratchOpened(parent.id)).toBe(true) + expect((yield* Effect.promise(() => read(parent.id))).output).toMatch(/\b11\b/) + yield* sessions.remove(parent.id) + expect(scratchOpened(parent.id)).toBe(false) + expect((yield* Effect.promise(() => read(otherChild.id))).output).toMatch(/\b22\b/) + yield* sessions.remove(other.id) + expect(scratchOpened(other.id)).toBe(false) +})) + +test("scratch ancestry uses the core session store with an in-memory database", () => { + const script = ` + import { Effect } from "effect" + import { Database } from "@opencode-ai/core/database/database" + import { makeRuntime } from "@opencode-ai/core/effect/runtime" + import { ProjectTable } from "@opencode-ai/core/project/sql" + import { SessionTable } from "@opencode-ai/core/session/sql" + import { SessionStore } from "@opencode-ai/core/session/store" + import { getScratch, closeScratch } from "./src/altimate/native/connections/scratch" + + const database = makeRuntime(Database.Service, Database.defaultLayer) + await database.runPromise(({ db }) => Effect.gen(function* () { + yield* db.insert(ProjectTable).values({ id: "global", worktree: process.cwd(), sandboxes: [] }) + for (const [id, parent_id] of [["ses_memory_parent", null], ["ses_memory_child", "ses_memory_parent"]]) { + yield* db.insert(SessionTable).values({ + id, parent_id, project_id: "global", directory: process.cwd(), + slug: id, title: id, version: "test", + }) + } + })) + const sessions = makeRuntime(SessionStore.Service, SessionStore.defaultLayer) + const childSession = sessions.runSync((store) => store.get("ses_memory_child")) + if (childSession?.parentID !== "ses_memory_parent") throw new Error("Missing core session fixture") + try { + const parent = await getScratch("ses_memory_parent") + await parent.execute("CREATE TABLE parent_result AS SELECT 11 AS id") + const child = await getScratch("ses_memory_child") + console.log("ROWS=" + JSON.stringify((await child.execute("SELECT id FROM parent_result")).rows)) + } finally { + await closeScratch() + } + process.exit(0) + ` + const processResult = Bun.spawnSync([process.execPath, "-e", script], { + cwd: path.resolve(import.meta.dir, "../.."), + env: { ...process.env, OPENCODE_DB: ":memory:", ALTIMATE_CLI_DB: ":memory:" }, + }) + expect(processResult.stdout.toString() + processResult.stderr.toString()).toContain("ROWS=[[11]]") + expect(processResult.exitCode).toBe(0) +}) + +test("registry closeAll releases every session scratch store", async () => { + const a = await getScratch("ses_registry_a") + const b = await getScratch("ses_registry_b") + await a.execute("CREATE TABLE private_result AS SELECT 1 AS id") + await Registry.closeAll() + expect(scratchOpened("ses_registry_a")).toBe(false) + expect(scratchOpened("ses_registry_b")).toBe(false) + expect(await getScratch("ses_registry_a")).not.toBe(a) + await expect(b.execute("SELECT 1")).rejects.toThrow(/not open/) +}) diff --git a/packages/opencode/test/altimate/scratch.test.ts b/packages/opencode/test/altimate/scratch.test.ts new file mode 100644 index 0000000000..b788981fdd --- /dev/null +++ b/packages/opencode/test/altimate/scratch.test.ts @@ -0,0 +1,226 @@ +import { afterEach, describe, expect, test } from "bun:test" +import { QueryTimeoutError } from "@altimateai/drivers/types" +import * as fs from "node:fs" +import * as path from "node:path" +import { + SCRATCH_CONFIG, + closeScratch, + getScratch, + scratchOpened, + withScratchConnection, +} from "../../src/altimate/native/connections/scratch" +import { materialize } from "../../src/altimate/tools/sql-materialize" + +afterEach(() => closeScratch()) + +describe("scratch catalog recovery", () => { + test("reopening preserves existing tables and create/append semantics", async () => { + const scratch = await getScratch() + await scratch.execute("CREATE TABLE before_restart AS SELECT 42 AS id") + await scratch.close() + await scratch.connect() + expect(await getScratch()).toBe(scratch) + expect((await scratch.execute("SELECT id FROM scratch.before_restart")).rows).toEqual([[42]]) + + const input = { source_warehouse: "scratch", sql: "SELECT 7 AS id", target_table: "recovered" } + await materialize(input) + expect((await scratch.execute("SELECT id FROM scratch.recovered")).rows).toEqual([[7n]]) + expect((await scratch.execute("SELECT current_database()")).rows).toEqual([["scratch"]]) + expect( + (await scratch.execute("SELECT table_catalog FROM information_schema.tables WHERE table_name = 'recovered'")) + .rows, + ).toEqual([["scratch"]]) + + await expect(materialize(input)).rejects.toThrow(/already exists/) + const appended = await materialize({ ...input, sql: "SELECT 8 AS id", mode: "append" }) + expect(appended.total_rows).toBe(2) + expect((await scratch.execute("SELECT id FROM scratch.recovered ORDER BY id")).rows).toEqual([[7n], [8n]]) + }) + + test("reapplies the current catalog without replacing an existing attachment", async () => { + const scratch = await getScratch() + await scratch.execute("CREATE TABLE retained AS SELECT 42 AS id") + await scratch.execute("ATTACH ':memory:' AS other") + await scratch.execute("USE other") + expect((await scratch.execute("SELECT id FROM retained")).rows).toEqual([[42]]) + expect((await scratch.execute("SELECT id FROM scratch.retained")).rows).toEqual([[42]]) + }) + + test("materialized tables survive a query timeout and helper restart", async () => { + await materialize({ source_warehouse: "scratch", sql: "SELECT 7 AS id", target_table: "before_timeout" }) + const scratch = await getScratch() + const error = await scratch + .execute( + "SELECT sum(a.i * b.i) FROM range(1000000000) a(i), range(1000000000) b(i)", + undefined, + undefined, + { queryTimeoutMs: 200 }, + ) + .catch((error) => error) + expect(error).toBeInstanceOf(QueryTimeoutError) + expect(error).toMatchObject({ code: "QUERY_TIMEOUT", stateLost: true }) + expect(error.message).toContain("data already committed to the store is unaffected") + expect((await scratch.execute("SELECT id FROM scratch.before_timeout")).rows).toEqual([[7n]]) + await scratch.execute("CREATE TABLE after_timeout AS SELECT 9 AS id") + expect((await scratch.execute("SELECT id FROM scratch.after_timeout")).rows).toEqual([[9]]) + }) + + test("uses a private temporary directory and removes it on close", async () => { + expect(scratchOpened()).toBe(false) + expect(SCRATCH_CONFIG).toEqual({ type: "duckdb" }) + const scratch = await getScratch() + const store = (await scratch.execute("SELECT path FROM duckdb_databases() WHERE database_name = 'scratch'")) + .rows[0]![0] as string + const dir = path.dirname(store) + expect(path.basename(store)).toBe("scratch.duckdb") + expect(fs.existsSync(store)).toBe(true) + if (process.platform !== "win32") expect(fs.statSync(dir).mode & 0o777).toBe(0o700) + await closeScratch() + expect(fs.existsSync(dir)).toBe(false) + const fresh = await getScratch() + const reopened = (await fresh.execute("SELECT path FROM duckdb_databases() WHERE database_name = 'scratch'")) + .rows[0]![0] + expect(reopened).not.toBe(store) + }) + + test("redacts private store paths from error messages and stacks", async () => { + const scratch = await getScratch() + const store = (await scratch.execute("SELECT path FROM duckdb_databases() WHERE database_name = 'scratch'")) + .rows[0]![0] as string + const dir = path.dirname(store) + const error = await scratch + .execute("SELECT * FROM read_parquet(?)", undefined, [path.join(dir, "missing")]) + .catch((error) => error) + expect(error).toBeInstanceOf(Error) + expect(error.message).toContain("scratch") + expect(error.message).not.toContain(dir) + expect(error.stack).not.toContain(dir) + }) + + test("removes the store on process exit without closeScratch", async () => { + const source = new URL("../../src/altimate/native/connections/scratch.ts", import.meta.url).href + const child = Bun.spawn({ + cmd: [process.execPath, "--eval", ` + const { getScratch } = await import(${JSON.stringify(source)}) + const scratch = await getScratch() + const result = await scratch.execute("SELECT path FROM duckdb_databases() WHERE database_name = 'scratch'") + console.log(JSON.stringify(result.rows[0][0])) + process.exit(0) + `], + stdout: "pipe", + stderr: "pipe", + }) + const [exitCode, output, stderr] = await Promise.all([ + child.exited, + new Response(child.stdout).text(), + new Response(child.stderr).text(), + ]) + expect({ exitCode, stderr }).toEqual({ exitCode: 0, stderr: "" }) + const store = JSON.parse(output) + expect(path.basename(store)).toBe("scratch.duckdb") + expect(fs.existsSync(path.dirname(store))).toBe(false) + }) + + test("failed initialization removes its directory and redacts the open error", async () => { + const source = new URL("../../src/altimate/native/connections/scratch.ts", import.meta.url).href + const child = Bun.spawn({ + cmd: [process.execPath, "--eval", ` + import { mock } from "bun:test" + import { existsSync } from "node:fs" + import { dirname } from "node:path" + let store + mock.module("@altimateai/drivers/duckdb", () => ({ + connect: async (config) => { + store = config.path + throw new Error("Could not open " + store) + }, + })) + const { getScratch, scratchOpened } = await import(${JSON.stringify(source)}) + const error = await getScratch().catch((error) => error) + console.log(JSON.stringify({ + directoryExists: existsSync(dirname(store)), + opened: scratchOpened(), + message: error.message, + stackLeaked: error.stack.includes(store), + })) + `], + stdout: "pipe", + stderr: "pipe", + }) + const [exitCode, output, stderr] = await Promise.all([ + child.exited, + new Response(child.stdout).text(), + new Response(child.stderr).text(), + ]) + expect({ exitCode, stderr }).toEqual({ exitCode: 0, stderr: "" }) + expect(JSON.parse(output)).toEqual({ + directoryExists: false, + opened: false, + message: "Could not open scratch", + stackLeaked: false, + }) + }) +}) + +describe("scratch exclusive operations", () => { + test("external queries wait for the complete transaction", async () => { + const scratch = await getScratch() + const entered = Promise.withResolvers() + const finish = Promise.withResolvers() + const operation = withScratchConnection(async (connection) => { + await connection.execute("BEGIN TRANSACTION") + await connection.execute("CREATE TABLE atomic_result AS SELECT 1 AS id") + entered.resolve() + await finish.promise + await connection.execute("INSERT INTO atomic_result VALUES (2)") + await connection.execute("COMMIT") + }) + await entered.promise + const read = scratch.execute("SELECT count(*) FROM scratch.atomic_result") + finish.resolve() + await operation + expect((await read).rows).toEqual([[2n]]) + }) + + test("a rejected transaction can roll back and releases the connection", async () => { + await expect( + withScratchConnection(async (connection) => { + await connection.execute("BEGIN TRANSACTION") + try { + await connection.execute("CREATE TABLE rolled_back (id INTEGER)") + await connection.execute("INSERT INTO rolled_back VALUES ('invalid')") + } finally { + await connection.execute("ROLLBACK") + } + }), + ).rejects.toThrow() + const scratch = await getScratch() + await scratch.execute("CREATE TABLE rolled_back AS SELECT 3 AS id") + expect((await scratch.execute("SELECT id FROM scratch.rolled_back")).rows).toEqual([[3]]) + }) +}) + +test("scratch external access stays restricted after helper restart", async () => { + const scratch = await getScratch() + const external = path.join(import.meta.dir, "scratch.test.ts") + const verify = async () => { + for (const name of ["enable_external_access", "autoinstall_known_extensions", "autoload_known_extensions"]) { + expect((await scratch.execute(`SELECT current_setting('${name}')`)).rows).toEqual([[false]]) + } + expect((await scratch.execute("SELECT current_setting('lock_configuration')")).rows).toEqual([[true]]) + await expect(scratch.execute("SELECT * FROM read_text(?)", undefined, [external])).rejects.toThrow( + /disabled|permission/i, + ) + await expect(scratch.execute("SET enable_external_access = true")).rejects.toThrow(/locked|cannot/i) + await expect(scratch.execute("ATTACH ? AS external", undefined, [external + ".db"])).rejects.toThrow() + } + await verify() + await expect( + scratch.execute("SELECT sum(a.i * b.i) FROM range(1000000000) a(i), range(1000000000) b(i)", undefined, undefined, { + queryTimeoutMs: 100, + }), + ).rejects.toBeInstanceOf(QueryTimeoutError) + await verify() + await materialize({ source_warehouse: "scratch", sql: "SELECT 7 AS id", target_table: "allowed_load" }) + expect((await scratch.execute("SELECT * FROM allowed_load")).rows).toEqual([[7n]]) +}) diff --git a/packages/opencode/test/altimate/search-read-permissions.test.ts b/packages/opencode/test/altimate/search-read-permissions.test.ts new file mode 100644 index 0000000000..bd4ab95d3c --- /dev/null +++ b/packages/opencode/test/altimate/search-read-permissions.test.ts @@ -0,0 +1,55 @@ +// altimate_change start — isolate canonicalisation failures to individual search candidates +import { expect, spyOn, test } from "bun:test" +import fs from "fs/promises" +import path from "path" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { readableSearchResults } from "@/altimate/search-read-permissions" +import { Permission } from "@/permission" +import { tmpdir } from "../fixture/fixture" + +test("search results omit a looping symlink and retain ordinary files", async () => { + await using project = await tmpdir() + const before = path.join(project.path, "before.txt") + const loop = path.join(project.path, "loop.txt") + const after = path.join(project.path, "after.txt") + await Promise.all([before, after].map((file) => Bun.write(file, "needle public"))) + await fs.symlink("loop.txt", loop, "file") + const permissions = Permission.fromConfig({ + read: { "*": "allow", [path.join(project.path, "private.txt")]: "deny" }, + }) + + expect(readableSearchResults([before, loop, after], project.path, permissions)).toEqual({ + allowed: new Set([before, after]), + patterns: [], + }) +}) + +test.each(["EACCES", "ENOENT", "ELOOP"])( + "search results omit a candidate when canonicalisation fails with %s and keep other candidates", + async (code) => { + await using project = await tmpdir() + const before = path.join(project.path, "before.txt") + const bad = path.join(project.path, "unresolvable.txt") + const after = path.join(project.path, "after.txt") + await Promise.all([before, bad, after].map((file) => Bun.write(file, "needle public"))) + const resolve = FSUtil.resolve + const canonicalise = spyOn(FSUtil, "resolve").mockImplementation((file) => { + if (file === bad) throw Object.assign(new Error(`Cannot resolve ${file}`), { code }) + return resolve(file) + }) + try { + const permissions = Permission.fromConfig({ + read: { "*": "ask", [path.join(project.path, "private.txt")]: "deny" }, + }) + expect(readableSearchResults([before, bad, after], project.path, permissions)).toEqual({ + allowed: new Set([before, after]), + patterns: ["before.txt", "after.txt"], + }) + expect(canonicalise).toHaveBeenCalledWith(bad) + expect(canonicalise).toHaveBeenCalledWith(after) + } finally { + canonicalise.mockRestore() + } + }, +) +// altimate_change end diff --git a/packages/opencode/test/altimate/sql-classify-metadata.test.ts b/packages/opencode/test/altimate/sql-classify-metadata.test.ts new file mode 100644 index 0000000000..de48a3efe9 --- /dev/null +++ b/packages/opencode/test/altimate/sql-classify-metadata.test.ts @@ -0,0 +1,104 @@ +import { describe, expect, test } from "bun:test" +import { classify, classifyAndCheck } from "../../src/altimate/tools/sql-classify" + +// Metadata statements are filed under the parser's "other" category. A read-only +// agent (analyst, data-explorer) denies `sql_execute_write`, so classifying them +// as writes hard-blocked `SHOW TABLES` on DuckDB/SQLite — observed on the rig's +// driver probe. They cannot modify data and must classify as reads. +describe("sql-classify: metadata statements are reads", () => { + const reads = [ + "SHOW TABLES", + "SHOW TABLES;", + "show tables", + "SHOW ALL TABLES", + "DESCRIBE orders", + "DESC orders", + "DESCRIBE SELECT * FROM orders", + "EXPLAIN SELECT count(*) FROM orders", + "EXPLAIN ANALYZE SELECT 1", + "PRAGMA table_info(orders)", + "PRAGMA storage_info('orders')", + "PRAGMA integrity_check(orders)", + "PRAGMA main.integrity_check('orders')", + "PRAGMA table_list", + "PRAGMA index_list('orders')", + "PRAGMA foreign_key_list(orders)", + "PRAGMA main.table_info('orders')", + "PRAGMA user_version", + "PRAGMA journal_mode", + "PRAGMA show_tables", + "PRAGMA database_list;", + "SELECT 1; SHOW TABLES", + "-- list them\nSHOW TABLES /* all */", + ] + for (const sql of reads) { + test(`read: ${JSON.stringify(sql)}`, () => { + expect(classify(sql)).toBe("read") + expect(classifyAndCheck(sql)).toEqual({ queryType: "read", blocked: false }) + }) + } + + const writes = [ + "PRAGMA foreign_keys = ON", + "PRAGMA journal_mode=WAL", + "PRAGMA user_version(5)", + "PRAGMA journal_mode(DELETE)", + "PRAGMA wal_checkpoint(TRUNCATE)", + "PRAGMA incremental_vacuum(100)", + "PRAGMA optimize", + "PRAGMA optimize(3)", + "PRAGMA create_fts_index('orders', 'id', 'note')", + "PRAGMA main.user_version(5)", + "PRAGMA user_version = 5", + "PRAGMA foreign_keys(OFF)", + "PRAGMA unknown_setting('value')", + "PRAGMA unknown_extension_action", + "PRAGMA table_info = orders", + "PRAGMA storage_info = orders", + "PRAGMA integrity_check = orders", + "SET search_path TO public", + "USE other_db", + "SHOW TABLES; DELETE FROM orders", + "CREATE TABLE t AS SELECT 1", + "INSERT INTO orders VALUES (1)", + "ATTACH 'x.db' AS x", + ] + for (const sql of writes) { + test(`write: ${JSON.stringify(sql)}`, () => { + expect(classify(sql)).toBe("write") + expect(classifyAndCheck(sql).queryType).toBe("write") + }) + } + + test("hard denies stay blocked", () => { + expect(classifyAndCheck("SHOW TABLES; TRUNCATE orders").blocked).toBe(true) + expect(classifyAndCheck("DROP SCHEMA x").blocked).toBe(true) + }) +}) + +describe("sql-classify: quoted comment markers cannot hide other statements", () => { + for (const marker of ["--", "/*", "/* ; */"]) { + for (const statement of [ + "CALL purge_all()", + "SET ROLE admin", + "ATTACH 'other.db' AS other", + "EXECUTE IMMEDIATE 'DELETE FROM victim'", + "INSTALL httpfs", + "LOAD httpfs", + "DETACH other", + "VACUUM", + "CHECKPOINT", + ]) { + const sql = `SELECT '${marker}' AS a; ${statement}` + test(`write: ${sql}`, () => { + expect(classify(sql)).toBe("write") + expect(classifyAndCheck(sql).queryType).toBe("write") + }) + } + } + + test("quoted delimiters and real comments preserve safe metadata statements", () => { + expect(classifyAndCheck("SELECT ';--/*' AS a; /* real comment */ SHOW TABLES").queryType).toBe("read") + expect(classifyAndCheck("SELECT $$--;$$ AS a; SHOW TABLES", "duckdb").queryType).toBe("read") + }) +}) diff --git a/packages/opencode/test/altimate/sql-classify-mongo.test.ts b/packages/opencode/test/altimate/sql-classify-mongo.test.ts new file mode 100644 index 0000000000..df4d73c160 --- /dev/null +++ b/packages/opencode/test/altimate/sql-classify-mongo.test.ts @@ -0,0 +1,91 @@ +import { describe, expect, test } from "bun:test" +import { normalizeMqlCommand } from "@altimateai/drivers" +import { classifyAndCheck, classifyMongoCommand } from "../../src/altimate/tools/sql-classify" + +// MongoDB commands are JSON documents. The SQL classifier reads every one as a write, which +// denied all 52 Mongo reads for the read-only analyst in one evaluation run; models also write +// the native `{"find": "coll"}` wire shape as often as the driver's `{command, collection}` form. +describe("MongoDB command classification", () => { + test("the SQL classifier treats a JSON command as a write (the defect)", () => { + expect(classifyAndCheck('{"find":"business","filter":{}}').queryType).toBe("write") + }) + + test("native find/aggregate/count/distinct shapes are reads and are normalized", () => { + const find = classifyMongoCommand('{"find":"business","filter":{"city":"X"},"projection":{"_id":0},"limit":5}')! + expect(find.queryType).toBe("read") + expect(find.blocked).toBe(false) + expect(JSON.parse(find.normalized)).toMatchObject({ command: "find", collection: "business", limit: 5 }) + + const agg = classifyMongoCommand('{"aggregate":"reviews","pipeline":[{"$match":{"stars":5}},{"$count":"n"}]}')! + expect(agg.queryType).toBe("read") + expect(JSON.parse(agg.normalized)).toMatchObject({ command: "aggregate", collection: "reviews" }) + + const count = classifyMongoCommand('{"count":"reviews","filter":{}}')! + expect(JSON.parse(count.normalized)).toMatchObject({ command: "countDocuments", collection: "reviews" }) + + const distinct = classifyMongoCommand('{"distinct":"reviews","key":"city"}')! + expect(distinct.queryType).toBe("read") + expect(JSON.parse(distinct.normalized)).toMatchObject({ command: "distinct", collection: "reviews", field: "city" }) + }) + + test("the driver shape passes through unchanged", () => { + const r = classifyMongoCommand('{"command":"find","collection":"c","filter":{}}')! + expect(r.queryType).toBe("read") + expect(JSON.parse(r.normalized)).toEqual({ command: "find", collection: "c", filter: {} }) + }) + + test.each([ + { collection: "articles", find: { published: true } }, + { collection: "articles", aggregate: [{ $match: { published: true } }] }, + { command: "listCollections" }, + { listCollections: 1 }, + { command: "estimatedDocumentCount", collection: "articles" }, + { estimatedDocumentCount: "articles" }, + ])("recognizes collection shorthand and metadata reads: %j", (command) => { + expect(classifyMongoCommand(JSON.stringify(command))?.queryType).toBe("read") + }) + + test.each([{}, { collection: "articles", find: 3 }, { command: 3 }, { command: "" }, { command: "fin" }])( + "rejects a missing or invalid command: %j", + (command) => expect(classifyMongoCommand(JSON.stringify(command))).toBeNull(), + ) + + test("writes stay writes; drops are blocked; $out/$merge pipelines are writes", () => { + expect(classifyMongoCommand('{"command":"insertOne","collection":"c","document":{}}')!.queryType).toBe("write") + expect(classifyMongoCommand('{"command":"deleteMany","collection":"c","filter":{}}')!.queryType).toBe("write") + expect(classifyMongoCommand('{"command":"dropCollection","collection":"c"}')!.blocked).toBe(true) + expect(classifyMongoCommand('{"aggregate":"c","pipeline":[{"$match":{}},{"$out":"d"}]}')!.queryType).toBe("write") + expect(classifyMongoCommand('{"aggregate":"c","pipeline":[{"$merge":{"into":"d"}}]}')!.queryType).toBe("write") + }) + + for (const writeStage of [{ $merge: { into: "d" } }, { $out: "d" }]) { + test.each([ + { name: "$unionWith.pipeline", pipeline: [{ $unionWith: { coll: "other", pipeline: [writeStage] } }] }, + { name: "$lookup.pipeline", pipeline: [{ $lookup: { from: "other", as: "joined", pipeline: [writeStage] } }] }, + { name: "$facet branches", pipeline: [{ $facet: { reads: [{ $match: {} }], writes: [writeStage] } }] }, + { name: "nested pipeline arrays", pipeline: [{ $custom: { options: { pipeline: [writeStage] } } }] }, + { + name: "multiple nested pipelines", + pipeline: [{ $facet: { joined: [{ $lookup: { from: "other", as: "joined", pipeline: [writeStage] } }] } }], + }, + ])(`${Object.keys(writeStage)[0].slice(1)} stage in $name is a write`, ({ pipeline }) => { + expect(classifyMongoCommand(JSON.stringify({ aggregate: "c", pipeline }))!.queryType).toBe("write") + }) + } + + test("write-stage names inside ordinary literal objects are reads", () => { + const pipeline = [{ $project: { value: { $literal: { $merge: "value", $out: "value" } } } }] + expect(classifyMongoCommand(JSON.stringify({ aggregate: "c", pipeline }))!.queryType).toBe("read") + }) + + test("non-JSON text is left to the SQL classifier", () => { + expect(classifyMongoCommand("SELECT 1")).toBeNull() + expect(classifyMongoCommand("{not json")).toBeNull() + expect(classifyMongoCommand("[1,2]")).toBeNull() + }) + + test("normalizeMqlCommand never invents a command", () => { + expect(normalizeMqlCommand({ filter: {} } as any)).toEqual({ filter: {} }) + expect(normalizeMqlCommand({ find: 7 } as any)).toEqual({ find: 7 }) + }) +}) diff --git a/packages/opencode/test/altimate/sql-materialize-bulk.test.ts b/packages/opencode/test/altimate/sql-materialize-bulk.test.ts new file mode 100644 index 0000000000..f63d1906f8 --- /dev/null +++ b/packages/opencode/test/altimate/sql-materialize-bulk.test.ts @@ -0,0 +1,266 @@ +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, test } from "bun:test" +import type { Connector } from "@altimateai/drivers" +import * as fs from "node:fs" +import * as os from "node:os" +import * as path from "node:path" +import * as Registry from "../../src/altimate/native/connections/registry" +import { registerAll } from "../../src/altimate/native/connections/register" +import * as Scratch from "../../src/altimate/native/connections/scratch" +import { closeScratch, getScratch } from "../../src/altimate/native/connections/scratch" +import { materialize } from "../../src/altimate/tools/sql-materialize" + +let previousTelemetry: string | undefined +let restoreSource: (() => void) | undefined +const source_warehouse = "bulk_source" + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + registerAll() +}) + +beforeEach(async () => { + await closeScratch() + Registry.setConfigs({ [source_warehouse]: { type: "duckdb", path: ":memory:" } }) +}) + +afterEach(async () => { + restoreSource?.() + restoreSource = undefined + await Registry.closeAll() +}) + +afterAll(async () => { + await closeScratch() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +function sourceRows(columns: string[], rows: unknown[][]) { + const execute: Connector["execute"] = async (sql) => + /^SELECT count\(\*\)/i.test(sql) + ? { columns: ["count"], rows: [[rows.length]], row_count: 1, truncated: false } + : { columns, rows, row_count: rows.length, truncated: false } + const real = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === source_warehouse ? ({ execute, supportsResultByteLimit: true } as Connector) : real(name), + ) + restoreSource = () => get.mockRestore() +} + +async function scratchRows(sql: string) { + return (await (await getScratch()).execute(sql)).rows +} + +describe("sql_materialize bulk loading", () => { + test("round-trips local-engine bigint, dates, bytes, NULL and lossless text", async () => { + const source = await Registry.get(source_warehouse) + const text = "single ' and double \" quotes\nsecond line\r\n雪🙂\\slash\0tail" + await source.execute( + "CREATE TABLE typed_rows (id INTEGER, big BIGINT, huge HUGEINT, day DATE, stamp TIMESTAMP, bytes BLOB, note VARCHAR, absent VARCHAR, active BOOLEAN)", + ) + await source.execute( + `INSERT INTO typed_rows VALUES + (1, 9007199254740993, 170141183460469231731687303715884105727, + DATE '2024-02-29', TIMESTAMP '2024-02-29 12:34:56.789', from_hex('00017f80ff'), ?, NULL, true), + (2, -9223372036854775808, -170141183460469231731687303715884105728, + DATE '1970-01-01', TIMESTAMP '1970-01-01 00:00:00', from_hex(''), '', NULL, false), + (3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)`, + undefined, + [text], + ) + const sourceResult = await source.execute("SELECT * FROM typed_rows ORDER BY id") + expect(sourceResult.rows[0][1]).toBe(9007199254740993n) + expect(sourceResult.rows[0][2]).toBe(170141183460469231731687303715884105727n) + expect(sourceResult.rows[0][3]).toBeInstanceOf(Date) + expect(sourceResult.rows[0][4]).toBeInstanceOf(Date) + expect(sourceResult.rows[0][5]).toEqual(new Uint8Array([0, 1, 127, 128, 255])) + + const result = await materialize({ + source_warehouse, + sql: "SELECT * FROM typed_rows ORDER BY id", + target_table: "typed", + }) + expect(result.columns.map((column) => column.type)).toEqual([ + "BIGINT", + "BIGINT", + "HUGEINT", + "TIMESTAMP", + "TIMESTAMP", + "BLOB", + "VARCHAR", + "VARCHAR", + "BOOLEAN", + ]) + expect(result.rows).toBe(3) + expect(result.total_rows).toBe(3) + const rows = await scratchRows("SELECT * FROM typed ORDER BY id") + expect(rows).toEqual(sourceResult.rows.map(([id, ...rest]) => [BigInt(id as number), ...rest])) + expect(rows[0][6]).toBe(text) + }) + + test("keeps non-finite doubles, widening and arbitrary column names", async () => { + sourceRows( + ["n", "number", "mixed", "__proto__", 'quoted"name', "same", "SAME", ""], + [ + [1, NaN, true, "first", "雪\n\0", 1, "a", null], + [2, Infinity, { nested: 9007199254740993n, bytes: new Uint8Array([0, 255]) }, "second", "'\"", 2.5, "b", null], + [3, -Infinity, 9007199254740993n, "third", "", 3, "c", null], + [4, null, null, null, null, null, null, null], + ], + ) + const result = await materialize({ source_warehouse, sql: "SELECT values FROM source_rows", target_table: "mixed" }) + expect(result.columns).toEqual([ + { name: "n", type: "BIGINT" }, + { name: "number", type: "DOUBLE" }, + { name: "mixed", type: "VARCHAR" }, + { name: "__proto__", type: "VARCHAR" }, + { name: 'quoted"name', type: "VARCHAR" }, + { name: "same", type: "DOUBLE" }, + { name: "SAME_2", type: "VARCHAR" }, + { name: "column_8", type: "VARCHAR" }, + ]) + expect( + await scratchRows( + 'SELECT n, number, mixed, "__proto__" AS proto, "quoted""name", same, SAME_2, column_8 FROM mixed ORDER BY n', + ), + ).toEqual([ + [1n, NaN, "true", "first", "雪\n\0", 1, "a", null], + [2n, Infinity, '{"nested":"9007199254740993","bytes":"00ff"}', "second", "'\"", 2.5, "b", null], + [3n, -Infinity, "9007199254740993", "third", "", 3, "c", null], + [4n, null, null, null, null, null, null, null], + ]) + }) + + test("append maps reordered and subset columns case-insensitively", async () => { + const initial = await materialize({ + source_warehouse, + sql: "SELECT 1 AS ID, 'first' AS Note, true AS Active", + target_table: "appended", + }) + const reordered = await materialize({ + source_warehouse, + sql: "SELECT false AS active, 'second' AS NOTE, 2 AS id", + target_table: "appended", + mode: "append", + }) + const subset = await materialize({ + source_warehouse, + sql: "SELECT 3 AS id", + target_table: "appended", + mode: "append", + }) + expect(reordered.columns).toEqual(initial.columns) + expect(subset.columns).toEqual(initial.columns) + expect(reordered.rows).toBe(1) + expect(reordered.total_rows).toBe(2) + expect(subset.rows).toBe(1) + expect(subset.total_rows).toBe(3) + expect(await scratchRows("SELECT * FROM appended ORDER BY ID")).toEqual([ + [1n, "first", true], + [2n, "second", false], + [3n, null, null], + ]) + }) + + test("a failed append conversion rolls back every input row", async () => { + await materialize({ source_warehouse, sql: "SELECT 1 AS id", target_table: "rollback_rows" }) + await expect( + materialize({ + source_warehouse, + sql: "SELECT '2' AS id UNION ALL SELECT 'not an integer' AS id", + target_table: "rollback_rows", + mode: "append", + }), + ).rejects.toThrow(/scratch\.rollback_rows.*append was rolled back/s) + expect(await scratchRows("SELECT id FROM rollback_rows")).toEqual([[1n]]) + const result = await materialize({ + source_warehouse, + sql: "SELECT 3 AS id", + target_table: "rollback_rows", + mode: "append", + }) + expect(result.total_rows).toBe(2) + expect(await scratchRows("SELECT id FROM rollback_rows ORDER BY id")).toEqual([[1n], [3n]]) + }) + + test("loads one JSON record larger than DuckDB's default object limit", async () => { + const text = "x".repeat(17 * 1024 * 1024) + "雪\0tail" + sourceRows(["note"], [[text]]) + const result = await materialize({ + source_warehouse, + sql: "SELECT note FROM wide_rows", + target_table: "wide_row", + max_bytes: 20 * 1024 * 1024, + }) + expect(result.rows).toBe(1) + expect(await scratchRows("SELECT length(note), right(note, 6) FROM wide_row")).toEqual([ + [BigInt(17 * 1024 * 1024 + 6), "雪\0tail"], + ]) + }) + + test("private load files are removed after success and failed replace, with paths redacted", async () => { + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "sql-materialize-'")) + const tmpdir = spyOn(os, "tmpdir").mockReturnValue(tempDir) + const files: string[] = [] + let fail = false + const original = Scratch.withScratchConnection + const inspect: typeof Scratch.withScratchConnection = (operation) => + original(async (connection, directory) => { + const realExecute = connection.execute.bind(connection) + const execute = spyOn(connection, "execute").mockImplementation(async (sql, ...args) => { + const match = /read_json(?:_auto)?\('((?:''|[^'])+)'/.exec(sql) + if (match) { + const file = match[1].replaceAll("''", "'") + files.push(file) + expect(file).toContain(tempDir) + expect(fs.existsSync(file)).toBe(true) + if (process.platform !== "win32") { + expect(fs.statSync(file).mode & 0o777).toBe(0o600) + expect(fs.statSync(path.dirname(file)).mode & 0o777).toBe(0o700) + } + if (fail) throw new Error(`simulated load failure in ${sql} for ${file}`) + } + return realExecute(sql, ...args) + }) + try { + return await operation(connection, directory) + } finally { + execute.mockRestore() + } + }) + const withConnection = spyOn(Scratch, "withScratchConnection").mockImplementation(inspect) + try { + const input = { source_warehouse, sql: "SELECT 1 AS id", target_table: "kept" } + const result = await materialize(input) + expect(result.table).toBe("kept") + expect(files).toHaveLength(1) + expect(fs.existsSync(path.dirname(files[0]))).toBe(false) + expect(JSON.stringify(result)).not.toContain(files[0]) + + fail = true + let error: Error | undefined + try { + await materialize({ ...input, sql: "SELECT 2 AS id", mode: "replace" }) + } catch (e) { + error = e as Error + } + expect(error).toBeDefined() + expect(error!.message).toContain("Failed to write scratch.kept") + expect(error!.message).toContain("simulated load failure") + expect(files).toHaveLength(2) + for (const file of files) { + expect(fs.existsSync(path.dirname(file))).toBe(false) + expect(error!.message).not.toContain(path.dirname(file)) + expect(error!.message).not.toContain(path.dirname(file).replaceAll("'", "''")) + } + expect(await scratchRows("SELECT id FROM kept")).toEqual([[1n]]) + } finally { + withConnection.mockRestore() + tmpdir.mockRestore() + await closeScratch() + await Registry.closeAll() + fs.rmSync(tempDir, { recursive: true, force: true }) + } + }) +}) diff --git a/packages/opencode/test/altimate/sql-materialize-concurrency.test.ts b/packages/opencode/test/altimate/sql-materialize-concurrency.test.ts new file mode 100644 index 0000000000..f00d052475 --- /dev/null +++ b/packages/opencode/test/altimate/sql-materialize-concurrency.test.ts @@ -0,0 +1,332 @@ +import { afterEach, beforeEach, expect, spyOn } from "bun:test" +import type { Connector } from "@altimateai/drivers" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { Effect, Layer } from "effect" +import * as Registry from "../../src/altimate/native/connections/registry" +import { registerAll } from "../../src/altimate/native/connections/register" +import { closeScratch, getScratch, withScratchConnection } from "../../src/altimate/native/connections/scratch" +import { SqlExecuteTool } from "../../src/altimate/tools/sql-execute" +import { SqlMaterializeTool } from "../../src/altimate/tools/sql-materialize" +import { MessageID, SessionID } from "../../src/session/schema" +import { Session } from "../../src/session/session" +import { testInstanceStoreLayer } from "../fixture/fixture" +import { testEffect } from "../lib/effect" +import { initTool } from "./tool-fixture" + +const it = testEffect(Layer.mergeAll(Session.defaultLayer, CrossSpawnSpawner.defaultLayer, testInstanceStoreLayer)) + +beforeEach(() => registerAll()) +afterEach(() => closeScratch()) + +function gate() { + let open!: () => void + const promise = new Promise((resolve) => { + open = resolve + }) + return { promise, open } +} + +async function within(work: Promise, milliseconds: number, message: string): Promise { + let timer: ReturnType | undefined + try { + return await Promise.race([ + work, + new Promise((_, reject) => { + timer = setTimeout(() => reject(new Error(message)), milliseconds) + }), + ]) + } finally { + clearTimeout(timer) + } +} + +function slowSource(value: number) { + const entered = gate() + const release = gate() + const execute: Connector["execute"] = async () => { + entered.open() + await release.promise + return { columns: ["id"], rows: [[value]], row_count: 1, truncated: false } + } + return { entered, release, connector: { execute, supportsResultByteLimit: true } as Connector } +} + +function sources(connectors: Record) { + Registry.setConfigs(Object.fromEntries(Object.keys(connectors).map((name) => [name, { type: "postgres" }]))) + const original = Registry.get.bind(Registry) + return spyOn(Registry, "get").mockImplementation(async (name: string) => connectors[name] ?? original(name)) +} + +function context(sessionID: SessionID) { + return { + sessionID, + messageID: MessageID.make("msg_materialize_concurrency"), + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask: async () => {}, + } +} + +it.instance("a remote materialization lets a sibling subagent query scratch before the source returns", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const reader = yield* sessions.create({ parentID: root.id }) + const writer = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + await getScratch(root.id) + const materialize = await initTool(SqlMaterializeTool) + const execute = await initTool(SqlExecuteTool) + const source = slowSource(1) + const registry = sources({ remote_source: source.connector }) + const pending = materialize.execute( + { + source_warehouse: "remote_source", + sql: "SELECT id FROM records", + target_table: "remote_records", + }, + context(writer.id), + ) + let read: ReturnType | undefined + try { + await within(source.entered.promise, 5_000, "The source read did not start") + read = execute.execute({ query: "SELECT 1 AS id", warehouse: "scratch" }, context(reader.id)) + const result = await within(read, 1_000, "The scratch read waited for the unrelated remote source") + expect(result.metadata.error).toBeUndefined() + expect(result.output).toContain("1") + } finally { + source.release.open() + const result = await pending + await read + registry.mockRestore() + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(1) + } + }) + }), +) + +it.instance("materializations from distinct sources overlap their reads within one root session", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const first = yield* sessions.create({ parentID: root.id }) + const second = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + await getScratch(root.id) + const materialize = await initTool(SqlMaterializeTool) + const left = slowSource(1) + const right = slowSource(2) + const registry = sources({ left_source: left.connector, right_source: right.connector }) + const pending = [ + materialize.execute( + { + source_warehouse: "left_source", + sql: "SELECT id FROM records", + target_table: "left_records", + }, + context(first.id), + ), + ] + try { + await within(left.entered.promise, 5_000, "The first source read did not start") + pending.push( + materialize.execute( + { + source_warehouse: "right_source", + sql: "SELECT id FROM records", + target_table: "right_records", + }, + context(second.id), + ), + ) + await within(right.entered.promise, 1_000, "The second source read waited for the first source") + } finally { + left.release.open() + right.release.open() + const results = await Promise.all(pending) + registry.mockRestore() + for (const result of results) { + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(1) + } + } + const scratch = await getScratch(root.id) + expect( + ( + await scratch.execute( + "SELECT id::INTEGER AS id FROM left_records UNION ALL SELECT id::INTEGER FROM right_records ORDER BY id", + ) + ).rows, + ).toEqual([[1], [2]]) + }) + }), +) + +it.instance("concurrent materializations append atomically to the same scratch table", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const first = yield* sessions.create({ parentID: root.id }) + const second = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + const scratch = await getScratch(root.id) + await scratch.execute("CREATE TABLE shared_records AS SELECT 0::BIGINT AS id") + const materialize = await initTool(SqlMaterializeTool) + const left = slowSource(1) + const right = slowSource(2) + const registry = sources({ left_source: left.connector, right_source: right.connector }) + const pending = [ + materialize.execute( + { + source_warehouse: "left_source", + sql: "SELECT id FROM records", + target_table: "shared_records", + mode: "append", + }, + context(first.id), + ), + materialize.execute( + { + source_warehouse: "right_source", + sql: "SELECT id FROM records", + target_table: "shared_records", + mode: "append", + }, + context(second.id), + ), + ] + try { + await within(Promise.race([left.entered.promise, right.entered.promise]), 5_000, "Neither source read started") + } finally { + left.release.open() + right.release.open() + const results = await Promise.all(pending) + registry.mockRestore() + for (const result of results) expect(result.metadata.error).toBeUndefined() + } + expect((await scratch.execute("SELECT id::INTEGER AS id FROM shared_records ORDER BY id")).rows).toEqual([ + [0], + [1], + [2], + ]) + }) + }), +) + +it.instance("concurrent scratch-to-scratch derivations from one table lose no update", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const first = yield* sessions.create({ parentID: root.id }) + const second = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + const scratch = await getScratch(root.id) + await scratch.execute("CREATE TABLE counter AS SELECT 0::BIGINT AS n") + const materialize = await initTool(SqlMaterializeTool) + const input = { + source_warehouse: "scratch", + sql: "SELECT n + 1 AS n FROM counter", + target_table: "counter", + mode: "replace" as const, + } + const results = await Promise.all([ + materialize.execute(input, context(first.id)), + materialize.execute(input, context(second.id)), + ]) + for (const result of results) expect(result.metadata.error).toBeUndefined() + expect((await scratch.execute("SELECT n::INTEGER AS n FROM counter")).rows).toEqual([[2]]) + }) + }), +) + +it.instance("overlapping remote reads share a bounded buffer budget", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const first = yield* sessions.create({ parentID: root.id }) + const second = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + await getScratch(root.id) + const materialize = await initTool(SqlMaterializeTool) + const left = slowSource(1) + const right = slowSource(2) + const registry = sources({ left_source: left.connector, right_source: right.connector }) + // Each read reserves 384 MiB; two together exceed the 512 MiB budget and must not overlap. + const big = 384 * 1024 * 1024 + const run = (name: string, table: string, id: string) => + materialize.execute( + { source_warehouse: name, sql: "SELECT id FROM records", target_table: table, max_bytes: big }, + context(id as SessionID), + ) + const pending: Array> = [] + try { + pending.push(run("left_source", "left_t", first.id)) + await within(left.entered.promise, 5_000, "The first read did not start") + pending.push(run("right_source", "right_t", second.id)) + await new Promise((resolve) => setTimeout(resolve, 200)) + let rightStarted = false + void right.entered.promise.then(() => (rightStarted = true)) + await new Promise((resolve) => setTimeout(resolve, 100)) + expect(rightStarted).toBe(false) + } finally { + left.release.open() + right.release.open() + const results = await Promise.all(pending) + registry.mockRestore() + for (const result of results) expect(result.metadata.error).toBeUndefined() + } + }) + }), +) + +it.instance("a buffered remote result keeps its budget reservation until the scratch write finishes", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const root = yield* sessions.create({}) + const first = yield* sessions.create({ parentID: root.id }) + const second = yield* sessions.create({ parentID: root.id }) + yield* Effect.promise(async () => { + await getScratch(root.id) + const materialize = await initTool(SqlMaterializeTool) + const left = slowSource(1) + const right = slowSource(2) + const registry = sources({ left_source: left.connector, right_source: right.connector }) + const big = 384 * 1024 * 1024 + const run = (name: string, table: string, id: string) => + materialize.execute( + { source_warehouse: name, sql: "SELECT id FROM records", target_table: table, max_bytes: big }, + context(id as SessionID), + ) + // Hold the scratch connection so the first read finishes buffering but cannot write yet. + const hold = gate() + const held = gate() + const holder = withScratchConnection(async () => { + held.open() + await hold.promise + }, root.id) + await held.promise + const pending: Array> = [] + try { + pending.push(run("left_source", "left_t", first.id)) + await within(left.entered.promise, 5_000, "The first read did not start") + left.release.open() + await new Promise((resolve) => setTimeout(resolve, 200)) + pending.push(run("right_source", "right_t", second.id)) + let rightStarted = false + void right.entered.promise.then(() => (rightStarted = true)) + await new Promise((resolve) => setTimeout(resolve, 200)) + expect(rightStarted).toBe(false) + } finally { + hold.open() + right.release.open() + await holder + const results = await Promise.all(pending) + registry.mockRestore() + for (const result of results) expect(result.metadata.error).toBeUndefined() + } + }) + }), +) diff --git a/packages/opencode/test/altimate/sql-materialize-mongo.test.ts b/packages/opencode/test/altimate/sql-materialize-mongo.test.ts new file mode 100644 index 0000000000..49f8a57284 --- /dev/null +++ b/packages/opencode/test/altimate/sql-materialize-mongo.test.ts @@ -0,0 +1,277 @@ +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, test } from "bun:test" +import type { Connector } from "@altimateai/drivers" +import { QueryTimeoutError } from "@altimateai/drivers/types" +import { ResultByteLimitError } from "@altimateai/drivers/result-byte-limit" +import * as Registry from "../../src/altimate/native/connections/registry" +import { registerAll } from "../../src/altimate/native/connections/register" +import { closeScratch, getScratch } from "../../src/altimate/native/connections/scratch" +import { materialize } from "../../src/altimate/tools/sql-materialize" + +type Command = Record +type Execution = { + command: Command + limit: number | undefined + timeout: number | undefined + maxBytes: number | undefined +} + +const find = { + command: "find", + database: "articles", + collection: "articles", + filter: { topic: "science" }, + projection: { text: 1 }, + sort: { published: -1 }, + skip: 2, +} +const aggregate = { + command: "aggregate", + database: "articles", + collection: "articles", + pipeline: [{ $match: { topic: "science" } }, { $project: { text: 1 } }, { $limit: 5000 }], +} +const input = { source_warehouse: "mongo_source", target_table: "articles" } + +let previousTelemetry: string | undefined +let restoreSource: (() => void) | undefined + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + registerAll() +}) + +beforeEach(async () => { + Registry.setConfigs({ mongo_source: { type: "mongodb" } }) + await closeScratch() +}) + +afterEach(async () => { + restoreSource?.() + restoreSource = undefined + await Registry.closeAll() +}) + +afterAll(async () => { + await closeScratch() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +function result(rows: unknown[][], columns = ["text"]) { + return { columns, rows, row_count: rows.length, truncated: false } +} + +function fakeMongo(respond: (call: Execution, index: number) => ReturnType) { + const seen: Execution[] = [] + const execute: Connector["execute"] = async (sql, limit, _binds, options) => { + const call = { command: JSON.parse(sql), limit, timeout: options?.queryTimeoutMs, maxBytes: options?.maxResultBytes } + seen.push(call) + return respond(call, seen.length - 1) + } + const real = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "mongo_source" ? ({ execute, supportsResultByteLimit: true } as Connector) : real(name), + ) + restoreSource = () => get.mockRestore() + return seen +} + +function expectRead(call: Execution, command: Command, cap: number) { + expect(call.command).toEqual( + command.command === "aggregate" ? { ...command, pipeline: [...command.pipeline, { $limit: cap }] } : command, + ) + expect(call.limit).toBe(cap) +} + +describe("MongoDB materialization", () => { + for (const command of [find, aggregate]) { + test(`${command.command}: accepts collection with an inline filter or pipeline`, async () => { + const { command: name, filter, pipeline, ...options } = command as Command + const shorthand = { ...options, [name]: name === "find" ? filter : pipeline } + const seen = fakeMongo(() => result([["kept"]])) + const materialized = await materialize({ ...input, sql: JSON.stringify(shorthand), max_rows: 10 }) + expect(materialized.rows).toBe(1) + expect(seen).toHaveLength(1) + expect(seen[0].command).toEqual( + name === "aggregate" ? { ...command, pipeline: [...pipeline, { $limit: 11 }] } : command, + ) + expect((await (await getScratch()).execute("SELECT text FROM articles")).rows).toEqual([["kept"]]) + }) + + test(`${command.command}: reads the source once with row, byte and timeout bounds`, async () => { + const seen = fakeMongo(() => result([["first"], ["second"]])) + const materialized = await materialize({ + ...input, + sql: JSON.stringify(command), + max_rows: 10, + max_bytes: 32, + query_timeout_ms: 4321, + }) + expect(materialized.rows).toBe(2) + expect(materialized.warnings).toEqual([]) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 11) + expect(seen[0].maxBytes).toBe(32) + expect(seen[0].timeout).toBeGreaterThan(0) + expect(seen[0].timeout).toBeLessThanOrEqual(4321) + expect((await (await getScratch()).execute("SELECT text FROM articles ORDER BY text")).rows).toEqual([ + ["first"], + ["second"], + ]) + }) + + test(`${command.command}: refuses the extra row without creating a table`, async () => { + const seen = fakeMongo(() => result([["one"], ["two"], ["three"], ["four"]])) + await expect(materialize({ ...input, sql: JSON.stringify(command), max_rows: 3 })).rejects.toThrow( + /row cap of 3 rows/, + ) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 4) + const scratch = await getScratch() + const tables = await scratch.execute("SELECT table_name FROM information_schema.tables WHERE table_name = 'articles'") + expect(tables.rows).toEqual([]) + }) + + test(`${command.command}: refuses a truncated result without retrying`, async () => { + const seen = fakeMongo(() => ({ ...result([["first"]]), truncated: true })) + await expect(materialize({ ...input, sql: JSON.stringify(command), max_rows: 3 })).rejects.toThrow( + /row cap of 3 rows/, + ) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 4) + }) + + test(`${command.command}: checks actual UTF-8 bytes with the row codec`, async () => { + const rows = [ + [1n, new Uint8Array([0, 255]), "é"], + [22n, new Uint8Array(), "long🙂"], + ] + const actualBytes = + Buffer.byteLength('["1","00ff","é"]', "utf8") + Buffer.byteLength('["22","","long🙂"]', "utf8") + const seen = fakeMongo(() => result(rows, ["id", "binary", "text"])) + await expect( + materialize({ ...input, sql: JSON.stringify(command), max_rows: 20, max_bytes: actualBytes - 1 }), + ).rejects.toThrow(`above the ${actualBytes - 1} bytes bound`) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 21) + expect(seen[0].maxBytes).toBe(actualBytes - 1) + }) + } + + test("find: preserves a smaller user limit and all read options", async () => { + const command = { ...find, limit: 7 } + const seen = fakeMongo(() => result([["kept"]])) + await materialize({ ...input, sql: JSON.stringify(command), max_rows: 10 }) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 11) + }) + + test("find: supports a query without an explicit filter", async () => { + const command = { command: "find", collection: "articles" } + const seen = fakeMongo(() => result([["kept"]])) + await materialize({ ...input, sql: JSON.stringify(command) }) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 2_000_001) + }) + + test("aggregate: an empty result needs only one source read", async () => { + const seen = fakeMongo(() => result([], [])) + const materialized = await materialize({ ...input, sql: JSON.stringify(aggregate) }) + expect(materialized.rows).toBe(0) + expect(materialized.materialized).toBe(false) + expect(materialized.warnings).toEqual([]) + expect(seen).toHaveLength(1) + expectRead(seen[0], aggregate, 2_000_001) + }) + + test("aggregate: bounds extraction after an expanding stage", async () => { + const command = { ...aggregate, pipeline: [{ $limit: 1 }, { $unwind: "$items" }] } + const seen = fakeMongo(() => result([["one"], ["two"], ["three"], ["four"]])) + await expect(materialize({ ...input, sql: JSON.stringify(command), max_rows: 3 })).rejects.toThrow( + /row cap of 3 rows/, + ) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 4) + }) + + test("countDocuments: materializes the requested count once", async () => { + const command = { command: "countDocuments", collection: "articles", filter: { topic: "science" } } + const seen = fakeMongo(() => result([[3]], ["count"])) + const materialized = await materialize({ ...input, sql: JSON.stringify(command), max_rows: 10 }) + expect(materialized.rows).toBe(1) + expect(materialized.warnings).toEqual([]) + expect(seen).toHaveLength(1) + expectRead(seen[0], command, 11) + expect((await (await getScratch()).execute('SELECT "count" FROM articles')).rows).toEqual([[3n]]) + }) + + test("a source failure propagates without retrying the read", async () => { + const seen = fakeMongo(() => { + throw new Error("source disconnected") + }) + await expect(materialize({ ...input, sql: JSON.stringify(find) })).rejects.toThrow("source disconnected") + expect(seen).toHaveLength(1) + expectRead(seen[0], find, 2_000_001) + }) + + test("a source timeout propagates without retrying the read", async () => { + const seen = fakeMongo(() => { + throw new QueryTimeoutError({ engine: "mongodb", timeoutMs: 4321, cancelled: true }) + }) + await expect( + materialize({ ...input, sql: JSON.stringify(find), query_timeout_ms: 4321 }), + ).rejects.toBeInstanceOf(QueryTimeoutError) + expect(seen).toHaveLength(1) + expectRead(seen[0], find, 2_000_001) + }) + + test("a transfer byte limit refuses the result without creating a table", async () => { + const seen = fakeMongo(() => { + throw new ResultByteLimitError(32) + }) + await expect(materialize({ ...input, sql: JSON.stringify(find), max_bytes: 32 })).rejects.toThrow( + /above the 32 bytes bound.*nothing was materialized/, + ) + expect(seen).toHaveLength(1) + expectRead(seen[0], find, 2_000_001) + const scratch = await getScratch() + const tables = await scratch.execute("SELECT table_name FROM information_schema.tables WHERE table_name = 'articles'") + expect(tables.rows).toEqual([]) + }) + + test("distinct is refused before an unbounded driver call", async () => { + const seen = fakeMongo(() => result([["science"]])) + await expect( + materialize({ ...input, sql: JSON.stringify({ distinct: "articles", key: "topic" }) }), + ).rejects.toThrow(/distinct.*not allowed/) + expect(seen).toHaveLength(0) + }) + + test.each([null, [], {}, { collection: "articles" }, { command: 42 }, { command: "" }].map((command) => ({ command })))( + "invalid command shape %j gets JSON command guidance before execution", + async ({ command }) => { + const seen = fakeMongo(() => result([["unused"]])) + await expect(materialize({ ...input, sql: JSON.stringify(command) })).rejects.toThrow( + 'A MongoDB source query must be a JSON command, e.g. {"command":"find","collection":"c"}.', + ) + expect(seen).toHaveLength(0) + }, + ) + + test("SQL input gets MongoDB JSON command guidance before execution", async () => { + const seen = fakeMongo(() => result([["unused"]])) + await expect(materialize({ ...input, sql: "SELECT text FROM articles" })).rejects.toThrow( + 'A MongoDB source query must be a JSON command, e.g. {"command":"find","collection":"c"}.', + ) + expect(seen).toHaveLength(0) + }) + + test.each(["$out", "$merge"])("aggregate %s is refused before any source read", async (stage) => { + const seen = fakeMongo(() => result([[1]], ["n"])) + await expect( + materialize({ ...input, sql: JSON.stringify({ aggregate: "articles", pipeline: [{ [stage]: "stolen" }] }) }), + ).rejects.toThrow(/only reads/) + expect(seen).toHaveLength(0) + }) +}) diff --git a/packages/opencode/test/altimate/sql-materialize-routing.test.ts b/packages/opencode/test/altimate/sql-materialize-routing.test.ts new file mode 100644 index 0000000000..522c58ab30 --- /dev/null +++ b/packages/opencode/test/altimate/sql-materialize-routing.test.ts @@ -0,0 +1,232 @@ +import { afterEach, expect, mock, spyOn, test } from "bun:test" +import { PermissionNext } from "../../src/permission/next" +import * as Registry from "../../src/altimate/native/connections/registry" +import * as Precedence from "../../src/altimate/workspace/precedence" +import { closeScratch } from "../../src/altimate/native/connections/scratch" +import { SqlMaterializeTool } from "../../src/altimate/tools/sql-materialize" +import { initTool } from "./tool-fixture" + +afterEach(async () => { + await Registry.closeAll() + await closeScratch() + Registry.reset() +}) + +test.each([ + ["pg_source", "SELECT id FROM private_orders WHERE amount > 100"], + ["scratch", "SELECT id FROM private_orders WHERE amount > 100"], + ["mongo_source", '{"command":"find","collection":"private_orders","filter":{"amount":{"$gt":100}}}'], +])("materialize enforces denied SQL-read permission before opening %s", async (source_warehouse, sql) => { + Registry.setConfigs({ pg_source: { type: "postgres" }, mongo_source: { type: "mongodb" } }) + const ruleset = PermissionNext.fromConfig({ sql_materialize: "allow", sql_execute: "deny" }) + const ask = mock(async (request: { permission: string; patterns: string[] }) => { + for (const pattern of request.patterns) { + if (PermissionNext.evaluate(request.permission, pattern, ruleset).action === "deny") { + throw new PermissionNext.DeniedError(ruleset) + } + } + }) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("source must not be opened")) + try { + const tool = await initTool(SqlMaterializeTool) + await expect( + tool.execute( + { source_warehouse, sql, target_table: "forbidden" }, + { + sessionID: "ses_permission", + messageID: "msg_permission", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask, + }, + ), + ).rejects.toThrow(/rule which prevents/) + expect(ask).toHaveBeenCalledWith({ + permission: "sql_execute", + patterns: [sql], + always: ["*"], + metadata: { warehouse: source_warehouse }, + }) + expect(get).not.toHaveBeenCalled() + } finally { + get.mockRestore() + } +}) + +test("authorized Postgres materialization requests database read-only execution for its single source read", async () => { + Registry.setConfigs({ pg_source: { type: "postgres" } }) + const options: unknown[] = [] + const ask = mock(async () => {}) + const real = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name) => + name === "pg_source" + ? ({ + supportsResultByteLimit: true, + execute: async (_sql: string, _limit: unknown, _binds: unknown, opts: unknown) => { + expect(ask).toHaveBeenCalledWith({ + permission: "sql_execute", + patterns: ["SELECT 1 AS n"], + always: ["*"], + metadata: { warehouse: "pg_source" }, + }) + options.push(opts) + return { rows: [[1]], columns: ["n"], row_count: 1, truncated: false } + }, + } as any) + : real(name), + ) + try { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute( + { source_warehouse: "pg_source", sql: "SELECT 1 AS n", target_table: "guarded" }, + { + sessionID: "ses_permission", + messageID: "msg_permission", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask, + }, + ) + expect(result.metadata.materialized).toBe(true) + expect(result.metadata.rowCount).toBe(1) + expect(ask).toHaveBeenCalledTimes(1) + expect(options).toHaveLength(1) + for (const opts of options) expect(opts).toMatchObject({ readOnly: true }) + } finally { + get.mockRestore() + } +}) + +test.each([ + ["pg_source", "SELECT id FROM private_orders WHERE amount > 100"], + ["scratch", "SELECT id FROM private_orders WHERE amount > 100"], + ["mongo_source", '{"command":"find","collection":"private_orders","filter":{"amount":{"$gt":100}}}'], +])("materialize denies SQL-read permission before redirecting or opening shadowed %s", async (source_warehouse, sql) => { + Registry.setConfigs({ pg_source: { type: "postgres" }, mongo_source: { type: "mongodb" } }) + const ruleset = PermissionNext.fromConfig({ sql_materialize: "allow", sql_execute: "deny" }) + const ask = mock(async (request: { permission: string; patterns: string[] }) => { + for (const pattern of request.patterns) { + if (PermissionNext.evaluate(request.permission, pattern, ruleset).action === "deny") { + throw new PermissionNext.DeniedError(ruleset) + } + } + }) + const check = spyOn(Precedence, "check").mockResolvedValue({ + redirect: { title: "workspace redirect", metadata: { precedence: "redirect" }, output: "Use workspace_execute" }, + } as any) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("source must not be opened")) + try { + const tool = await initTool(SqlMaterializeTool) + await expect( + tool.execute( + { source_warehouse, sql, target_table: "forbidden" }, + { + sessionID: "ses_permission", + messageID: "msg_permission", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask, + }, + ), + ).rejects.toThrow(/rule which prevents/) + expect(ask).toHaveBeenCalledWith({ + permission: "sql_execute", + patterns: [sql], + always: ["*"], + metadata: { warehouse: source_warehouse }, + }) + expect(check).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + } finally { + check.mockRestore() + get.mockRestore() + } +}) + +test.each([ + ["pg_source", "DELETE FROM orders", /read-only SELECT/], + [ + "mongo_source", + '{"command":"aggregate","collection":"orders","pipeline":[{"$out":"copied_orders"}]}', + /MongoDB write pipeline stages are not allowed/, + ], +])( + "materialize rejects source writes before permission checks or redirecting shadowed %s", + async (source_warehouse, sql, error) => { + Registry.setConfigs({ pg_source: { type: "postgres" }, mongo_source: { type: "mongodb" } }) + const ask = mock(async () => {}) + const check = spyOn(Precedence, "check").mockResolvedValue({ + redirect: { title: "workspace redirect", metadata: { precedence: "redirect" }, output: "Use workspace_execute" }, + } as any) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("source must not be opened")) + try { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute( + { source_warehouse, sql, target_table: "forbidden" }, + { + sessionID: "ses_routing", + messageID: "msg_routing", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask, + }, + ) + // A refusal is a tool result, not a throw, and it carries no redirect. + expect(result.title).toBe("Materialize: ERROR") + expect(result.output).toMatch(error) + expect(result.metadata).toMatchObject({ materialized: false }) + expect(result.metadata.precedence).toBeUndefined() + expect(ask).not.toHaveBeenCalled() + expect(check).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + } finally { + check.mockRestore() + get.mockRestore() + } + }, +) + +test("materialize authorizes a workspace-shadowed source before redirecting without opening a local connector", async () => { + const redirect = { + title: "workspace redirect", + metadata: { precedence: "redirect" }, + output: "Use workspace_execute", + } + const ask = mock(async () => {}) + const check = spyOn(Precedence, "check").mockImplementation(async () => { + expect(ask).toHaveBeenCalledWith({ + permission: "sql_execute", + patterns: ["SELECT 1"], + always: ["*"], + metadata: { warehouse: "pg_source" }, + }) + return { redirect } as any + }) + const get = spyOn(Registry, "get") + try { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute({ source_warehouse: "pg_source", sql: "SELECT 1", target_table: "ignored" }, { + sessionID: "ses_routing", + messageID: "msg_routing", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask, + } as any) + expect(result).toMatchObject(redirect) + expect(check).toHaveBeenCalledWith("ses_routing", "sql_execute", "pg_source") + expect(get).not.toHaveBeenCalled() + } finally { + check.mockRestore() + get.mockRestore() + } +}) diff --git a/packages/opencode/test/altimate/sql-materialize.test.ts b/packages/opencode/test/altimate/sql-materialize.test.ts new file mode 100644 index 0000000000..05b9e0a5eb --- /dev/null +++ b/packages/opencode/test/altimate/sql-materialize.test.ts @@ -0,0 +1,946 @@ +/** + * `scratch` warehouse + `sql_materialize`: a data-plane bridge for cross-engine joins. + * + * Real engines throughout: two SQLite files as the "foreign" sources and the real session-scoped + * DuckDB scratch database; only telemetry is switched off. + */ +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { Database } from "bun:sqlite" +import type { Connector } from "@altimateai/drivers" +import { QueryTimeoutError } from "@altimateai/drivers/types" +import { createHash } from "node:crypto" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { initTool } from "./tool-fixture" +import * as Registry from "../../src/altimate/native/connections/registry" +import { closeScratch, getScratch } from "../../src/altimate/native/connections/scratch" +import * as Dispatcher from "../../src/altimate/native/dispatcher" +import { registerAll } from "../../src/altimate/native/connections/register" +import { MaterializeError, SqlMaterializeTool, materialize } from "../../src/altimate/tools/sql-materialize" +import { SqlExecuteTool } from "../../src/altimate/tools/sql-execute" + +const ctx = { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, +} + +let dir = "" +let ordersDb = "" +let customersDb = "" +let prevTelemetry: string | undefined + +beforeAll(() => { + prevTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + registerAll() + dir = fs.mkdtempSync(path.join(os.tmpdir(), "sql-materialize-")) + ordersDb = path.join(dir, "orders.sqlite") + customersDb = path.join(dir, "customers.sqlite") + + const o = new Database(ordersDb) + o.run("CREATE TABLE orders (id INTEGER, customer_id INTEGER, amount REAL, note TEXT, paid INTEGER)") + o.run( + "INSERT INTO orders VALUES (1, 10, 5.5, 'first', 1), (2, 11, 7, NULL, 0), (3, 10, 1.25, 'third', 1), (4, 99, 3, 'orphan', 1)", + ) + o.close() + + const c = new Database(customersDb) + c.run("CREATE TABLE customers (customer_id INTEGER, name TEXT)") + c.run("INSERT INTO customers VALUES (10, 'Ada'), (11, 'Bob'), (12, 'Cy')") + c.close() +}) + +afterAll(async () => { + await closeScratch() + fs.rmSync(dir, { recursive: true, force: true }) + if (prevTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = prevTelemetry +}) + +beforeEach(async () => { + Registry.setConfigs({ + ordersdb: { type: "sqlite", path: ordersDb }, + customersdb: { type: "sqlite", path: customersDb }, + }) + await closeScratch() // each test starts with an empty scratch database +}) + +afterEach(async () => { + await Registry.closeAll() +}) + +async function scratchSql(query: string) { + const r = await Dispatcher.call("sql.execute", { sql: query, warehouse: "scratch", limit: 1000 }) + expect((r as any).error).toBeUndefined() + return r +} + +function fakePostgres(execute: Connector["execute"]) { + Registry.setConfigs({ pg_source: { type: "postgres" } }) + const real = Registry.get.bind(Registry) + return spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "pg_source" ? ({ execute, supportsResultByteLimit: true } as Connector) : real(name), + ) +} + +describe("scratch warehouse", () => { + test("is listed after the real warehouses, so the default warehouse is unchanged", () => { + const { warehouses } = Registry.list() + expect(warehouses.map((w) => w.name)).toEqual(["ordersdb", "customersdb", "scratch"]) + const s = warehouses[2] + expect(s.type).toBe("duckdb") + expect(s.database).toBe("session-scoped, ephemeral") + }) + + test("is not listed when nothing is configured (no spurious default warehouse)", () => { + Registry.setConfigs({}) + expect(Registry.list().warehouses).toEqual([]) + }) + + test("resolves through the unchanged sql.execute path and is queryable", async () => { + const r = await scratchSql("SELECT 41 + 1 AS answer") + expect(r.rows).toEqual([[42]]) + expect(Registry.getConfig("scratch")?.type).toBe("duckdb") + }) + + test("cannot be re-registered or removed", async () => { + expect((await Registry.add("scratch", { type: "sqlite", path: ordersDb })).success).toBe(false) + expect((await Registry.remove("scratch")).success).toBe(false) + }) + + test("is isolated per process: a fresh process starts empty", async () => { + await materialize({ source_warehouse: "ordersdb", sql: "SELECT * FROM orders", target_table: "iso_t" }) + const here = await scratchSql("SELECT count(*) FROM information_schema.tables WHERE table_name = 'iso_t'") + expect(Number(here.rows[0][0])).toBe(1) + + const script = ` + import { getScratch } from "./src/altimate/native/connections/scratch" + const c = await getScratch() + const r = await c.execute("SELECT count(*) FROM information_schema.tables WHERE table_name = 'iso_t'") + console.log("COUNT=" + String(r.rows[0][0])) + process.exit(0) + ` + const proc = Bun.spawnSync(["bun", "-e", script], { cwd: path.resolve(__dirname, "../.."), env: process.env }) + expect(proc.stdout.toString()).toContain("COUNT=0") + }) +}) + +describe("sql_materialize", () => { + test("materializes from two SQLite files and joins them in scratch via sql_execute", async () => { + const tool = await initTool(SqlMaterializeTool) + const a = await tool.execute( + { source_warehouse: "ordersdb", sql: "SELECT id, customer_id, amount FROM orders", target_table: "orders" }, + ctx as any, + ) + expect(a.metadata.error).toBeUndefined() + expect(a.metadata.rowCount).toBe(4) + expect(a.output).toContain("scratch.orders: 4 rows") + expect(a.output).toContain("SELECT id, customer_id, amount FROM orders") + expect(a.output).toContain('sql_execute(warehouse: "scratch"') + + const b = await tool.execute( + { source_warehouse: "customersdb", sql: "SELECT customer_id, name FROM customers", target_table: "customers" }, + ctx as any, + ) + expect(b.metadata.rowCount).toBe(3) + + const exec = await initTool(SqlExecuteTool) + const joined = await exec.execute( + { + warehouse: "scratch", + query: + "SELECT c.name, sum(o.amount) AS total FROM orders o JOIN scratch.customers c USING (customer_id) GROUP BY c.name ORDER BY c.name", + limit: 100, + }, + ctx as any, + ) + expect(joined.title).not.toContain("ERROR") + expect(joined.output).toContain("Ada | 6.75") + expect(joined.output).toContain("Bob | 7") + expect(joined.output).not.toContain("Cy") + }) + + test("stores every row beyond the default 1000-row display limit", async () => { + const big = path.join(dir, "big.sqlite") + const db = new Database(big) + db.run("CREATE TABLE t (n INTEGER)") + db.run( + "WITH RECURSIVE s(n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM s WHERE n < 5000) INSERT INTO t SELECT n FROM s", + ) + db.close() + Registry.setConfigs({ bigdb: { type: "sqlite", path: big } }) + const r = await materialize({ source_warehouse: "bigdb", sql: "SELECT n FROM t", target_table: "big_t" }) + expect(r.rows).toBe(5000) + const count = await scratchSql("SELECT count(*), sum(n) FROM big_t") + expect(Number(count.rows[0][0])).toBe(5000) + expect(Number(count.rows[0][1])).toBe(12_502_500) + }) + + test("type mapping: NULL, big ints, booleans, timestamps, nested JSON, doubles", async () => { + const r = await materialize({ + source_warehouse: "scratch", + sql: `SELECT * FROM (VALUES + (1, 9223372036854775807::BIGINT, TRUE, TIMESTAMP '2024-05-06 07:08:09.123', {'a': 1, 'b': [1, 2]}, 1.5, 'it''s'), + (2, NULL, NULL, NULL, NULL, 2, NULL) + ) AS v(id, big, flag, ts, nested, dbl, txt)`, + target_table: "typed", + }) + const types = Object.fromEntries(r.columns.map((c) => [c.name, c.type])) + expect(types).toEqual({ + id: "BIGINT", + big: "BIGINT", + flag: "BOOLEAN", + ts: "TIMESTAMP", + nested: "VARCHAR", + dbl: "DOUBLE", + txt: "VARCHAR", + }) + const rows = (await scratchSql("SELECT big::VARCHAR, flag, ts::VARCHAR, nested, dbl, txt FROM typed ORDER BY id")) + .rows + expect(rows[0][0]).toBe("9223372036854775807") + expect(rows[0][1]).toBe(true) + expect(rows[0][2]).toBe("2024-05-06 07:08:09.123") + expect(JSON.parse(rows[0][3])).toEqual({ a: 1, b: [1, 2] }) + expect(rows[0][4]).toBe(1.5) + expect(rows[0][5]).toBe("it's") + expect(rows[1]).toEqual([null, null, null, null, 2, null]) + }) + + test("SQLite source: ints stay BIGINT, reals DOUBLE, NULLs survive", async () => { + const r = await materialize({ + source_warehouse: "ordersdb", + sql: "SELECT id, amount, note FROM orders ORDER BY id", + target_table: "o", + }) + expect(r.columns.map((c) => c.type)).toEqual(["BIGINT", "DOUBLE", "VARCHAR"]) + const rows = (await scratchSql("SELECT note FROM o WHERE id = 2")).rows + expect(rows).toEqual([[null]]) + }) + + test("mode semantics: create refuses an existing table, replace overwrites, append adds", async () => { + const base = { source_warehouse: "ordersdb", sql: "SELECT id FROM orders WHERE id <= 2", target_table: "m" } + await materialize(base) + await expect(materialize(base)).rejects.toThrow(/already exists/) + + const appended = await materialize({ ...base, sql: "SELECT id FROM orders WHERE id > 2", mode: "append" }) + expect(appended.rows).toBe(2) + expect(appended.total_rows).toBe(4) + + const replaced = await materialize({ ...base, sql: "SELECT id FROM orders WHERE id = 1", mode: "replace" }) + expect(replaced.total_rows).toBe(1) + expect(Number((await scratchSql("SELECT count(*) FROM m")).rows[0][0])).toBe(1) + + // append to a missing table creates it + const fresh = await materialize({ ...base, target_table: "m2", mode: "append" }) + expect(fresh.total_rows).toBe(2) + }) + + test("default create with an empty column-less SQLite source refuses an existing table and preserves its rows", async () => { + const base = { source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "empty_create" } + await materialize(base) + + const pending = materialize({ ...base, sql: "SELECT id FROM orders WHERE 1=0" }) + await expect(pending).rejects.toBeInstanceOf(MaterializeError) + await expect(pending).rejects.toThrow(/already exists/) + expect((await scratchSql("SELECT id FROM empty_create ORDER BY id")).rows.map((row) => Number(row[0]))).toEqual([ + 1, 2, 3, 4, + ]) + }) + + test("mode replace with an empty column-less SQLite source drops the existing scratch table", async () => { + const base = { source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "empty_replace" } + await materialize(base) + + const result = await materialize({ ...base, sql: "SELECT id FROM orders WHERE 1=0", mode: "replace" }) + const tables = await scratchSql( + "SELECT table_name FROM information_schema.tables WHERE table_name = 'empty_replace'", + ) + expect(tables.rows).toEqual([]) + expect(result).toMatchObject({ materialized: false, rows: 0, total_rows: 0, columns: [] }) + expect(result.warnings).toContain("replaced with an empty result: scratch.empty_replace was dropped") + }) + + test("mode append with an empty column-less SQLite source preserves existing rows and reports their count", async () => { + const base = { source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "empty_append" } + await materialize(base) + + const result = await materialize({ ...base, sql: "SELECT id FROM orders WHERE 1=0", mode: "append" }) + expect((await scratchSql("SELECT id FROM empty_append ORDER BY id")).rows.map((row) => Number(row[0]))).toEqual([ + 1, 2, 3, 4, + ]) + expect(result).toMatchObject({ materialized: false, rows: 0, total_rows: 4, columns: [], warnings: [] }) + }) + + test("mode replace tool output reports the dropped table for an empty column-less SQLite source", async () => { + const tool = await initTool(SqlMaterializeTool) + const base = { source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "empty_tool" } + const created = await tool.execute(base, ctx as any) + expect(created.metadata.materialized).toBe(true) + + const result = await tool.execute({ ...base, sql: "SELECT id FROM orders WHERE 1=0", mode: "replace" }, ctx as any) + expect(result.metadata.materialized).toBe(false) + expect(result.output).toContain("replaced with an empty result: scratch.empty_tool was dropped") + expect(result.output).not.toContain("was not created or changed") + }) + + test("concurrent materializations to different tables both commit", async () => { + const results = await Promise.all( + ["parallel_a", "parallel_b"].map((target_table) => + materialize({ source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table }), + ), + ) + expect(results.map((r) => r.total_rows)).toEqual([4, 4]) + expect( + (await scratchSql("SELECT count(*) FROM parallel_a UNION ALL SELECT count(*) FROM parallel_b")).rows.map((r) => + Number(r[0]), + ), + ).toEqual([4, 4]) + }) + + test("concurrent create of the same table has exactly one winner", async () => { + const results = await Promise.allSettled( + [1, 2].map((id) => + materialize({ source_warehouse: "ordersdb", sql: `SELECT ${id} AS id`, target_table: "one_winner" }), + ), + ) + expect(results.filter((r) => r.status === "fulfilled")).toHaveLength(1) + const failed = results.find((r) => r.status === "rejected") as PromiseRejectedResult + expect(failed.reason.message).toMatch(/already exists/) + expect((await scratchSql("SELECT count(*) FROM one_winner")).rows.map((r) => Number(r[0]))).toEqual([1]) + }) + + test("append with an incompatible column fails and leaves the table untouched", async () => { + await materialize({ source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "keep" }) + await expect( + materialize({ + source_warehouse: "ordersdb", + sql: "SELECT id, note FROM orders", + target_table: "keep", + mode: "append", + }), + ).rejects.toThrow(/no column/) + expect(Number((await scratchSql("SELECT count(*) FROM keep")).rows[0][0])).toBe(4) + }) + + test("rejects unsafe target_table identifiers", async () => { + for (const bad of ["a b", "x;DROP TABLE y", 'q"q', "main.t", "1abc", "", "a".repeat(64), "other.schema.t"]) { + await expect(materialize({ source_warehouse: "ordersdb", sql: "SELECT 1", target_table: bad })).rejects.toThrow( + /Invalid target_table/, + ) + } + }) + + test("refuses a non-read source query and does not run it", async () => { + for (const sql of [ + "INSERT INTO orders VALUES (9, 9, 9, 'x', 1)", + "DELETE FROM orders", + "DROP TABLE orders", + "SELECT 1; DELETE FROM orders", + ]) { + await expect(materialize({ source_warehouse: "ordersdb", sql, target_table: "nope" })).rejects.toThrow( + /only reads/, + ) + } + const db = new Database(ordersDb, { readonly: true }) + expect((db.query("SELECT count(*) AS n FROM orders").get() as any).n).toBe(4) + db.close() + }) + + for (const source_warehouse of ["ordersdb", "scratch", "pg_source"]) { + test(`${source_warehouse}: refuses read-shaped writes before execution, preserving the source file`, async () => { + Registry.setConfigs({ + ordersdb: { type: "sqlite", path: ordersDb }, + pg_source: { type: "postgres" }, + }) + const hash = () => createHash("sha256").update(fs.readFileSync(ordersDb)).digest("hex") + const before = hash() + const execute = spyOn(await getScratch(), "execute") + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as any) + try { + for (const sql of [ + "WITH d AS (DELETE FROM orders RETURNING *) SELECT * FROM d", + "SELECT 1 INTO new_table", + "SELECT nextval('my_seq')", + "SELECT lo_unlink(123)", + ]) { + await expect(materialize({ source_warehouse, sql, target_table: "refused" })).rejects.toThrow(/only reads/) + } + expect(get).not.toHaveBeenCalled() + expect(execute).not.toHaveBeenCalled() + expect(hash()).toBe(before) + } finally { + get.mockRestore() + execute.mockRestore() + } + }) + } + + test("preserves NUL-bearing text distinctly from text without a NUL", async () => { + const result = await materialize({ + source_warehouse: "scratch", + sql: "SELECT 'a' || chr(0) || 'b' AS note UNION ALL SELECT 'ab' AS note", + target_table: "nul_text", + }) + expect(result.rows).toBe(2) + const rows = (await scratchSql("SELECT note FROM nul_text ORDER BY note")).rows + expect(rows).toEqual([["a\0b"], ["ab"]]) + expect(Number((await scratchSql("SELECT count(DISTINCT note) FROM nul_text")).rows[0][0])).toBe(2) + }) + + test("Postgres sources run as a bounded derived table and refuse modifying forms lexically", async () => { + Registry.setConfigs({ pg_source: { type: "postgres" } }) + const seen: string[] = [] + const fakeSource = { + supportsResultByteLimit: true, + execute: async (sql: string) => { + seen.push(sql) + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }, + } + const real = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "pg_source" ? (fakeSource as any) : real(name), + ) + try { + const r = await materialize({ source_warehouse: "pg_source", sql: "SELECT 1 AS n", target_table: "pg_ok" }) + expect(r.rows).toBe(1) + // The statement reaches Postgres wrapped as a derived table: a data-modifying CTE or + // SELECT INTO inside it is rejected by the server itself. + expect(seen).toEqual(["SELECT * FROM (\nSELECT 1 AS n\n) AS __sql_materialize_source LIMIT 2000001"]) + for (const sql of [ + "WITH d AS (DELETE FROM accounts RETURNING *) SELECT * FROM d", + "SELECT 1 INTO new_table", + "SELECT nextval('my_seq')", + ]) { + await expect(materialize({ source_warehouse: "pg_source", sql, target_table: "pg_bad" })).rejects.toThrow( + /only reads/, + ) + } + expect(seen).toHaveLength(1) + } finally { + get.mockRestore() + } + }) + + test("a conflicting configured scratch destination refuses materialization", async () => { + Registry.setConfigs({ + ordersdb: { type: "sqlite", path: ordersDb }, + scratch: { type: "postgres", database: "user_data" }, + }) + const source = await Registry.get("ordersdb") + const execute = spyOn(source, "execute") + try { + await expect( + materialize({ source_warehouse: "ordersdb", sql: "SELECT id FROM orders", target_table: "conflict" }), + ).rejects.toThrow(/reserved.*scratch/) + expect(execute).not.toHaveBeenCalled() + } finally { + execute.mockRestore() + } + }) + + test("the tool reports a refusal as an error result, not a throw", async () => { + const tool = await initTool(SqlMaterializeTool) + const r = await tool.execute( + { source_warehouse: "ordersdb", sql: "DELETE FROM orders", target_table: "t" }, + ctx as any, + ) + expect(r.title).toContain("ERROR") + expect(r.output).toContain("only reads") + }) + + test("row cap exceeded fails cleanly and creates nothing", async () => { + await expect( + materialize({ source_warehouse: "ordersdb", sql: "SELECT * FROM orders", target_table: "capped", max_rows: 3 }), + ).rejects.toThrow(/row cap of 3/) + const t = await scratchSql("SELECT count(*) FROM information_schema.tables WHERE table_name = 'capped'") + expect(Number(t.rows[0][0])).toBe(0) + }) + + test("a source failure is propagated without another read", async () => { + const seen: string[] = [] + const get = fakePostgres(async (sql) => { + seen.push(sql) + throw new Error("source unavailable") + }) + try { + await expect( + materialize({ source_warehouse: "pg_source", sql: "SELECT n FROM numbers", target_table: "unavailable" }), + ).rejects.toThrow("source unavailable") + expect(seen).toHaveLength(1) + } finally { + get.mockRestore() + } + }) + + for (const { type, sql } of [ + { type: "oracle", sql: "SELECT * FROM (\nSELECT n FROM numbers\n) WHERE ROWNUM <= 4" }, + { type: "sqlserver", sql: "SELECT TOP (4) * FROM (\nSELECT n FROM numbers\n) AS __sql_materialize_source" }, + ]) { + test(`bounds the single extraction for ${type}`, async () => { + const seen: string[] = [] + const get = fakePostgres(async (sql, limit) => { + seen.push(sql) + expect(limit).toBe(4) + return { columns: ["n"], rows: [[1], [2], [3], [4]], row_count: 4, truncated: false } + }) + Registry.setConfigs({ pg_source: { type } }) + try { + await expect( + materialize({ source_warehouse: "pg_source", sql: "SELECT n FROM numbers", target_table: "large", max_rows: 3 }), + ).rejects.toThrow(/row cap of 3/) + expect(seen).toEqual([sql]) + } finally { + get.mockRestore() + } + }) + } + + for (const { name, max_bytes, bytes, bound } of [ + { name: "default byte budget", max_bytes: undefined, bytes: 256 * 1024 ** 2, bound: "256.00 MiB" }, + { name: "hard byte ceiling", max_bytes: 4 * 1024 ** 3, bytes: 2 * 1024 ** 3, bound: "2.0 GiB" }, + ]) { + test(`enforces the ${name} during the single source read`, async () => { + const previous = process.env.ALTIMATE_SCRATCH_MAX_BYTES + delete process.env.ALTIMATE_SCRATCH_MAX_BYTES + const limits: (number | undefined)[] = [] + const get = fakePostgres(async (_sql, _limit, _binds, options) => { + limits.push(options?.maxResultBytes) + throw Object.assign(new Error("result byte limit"), { code: "RESULT_BYTE_LIMIT" }) + }) + try { + await expect( + materialize({ + source_warehouse: "pg_source", + sql: "SELECT description FROM languages", + target_table: "byte_ceiling", + max_bytes, + }), + ).rejects.toThrow(`${bound} bound`) + expect(limits).toEqual([bytes]) + } finally { + get.mockRestore() + if (previous === undefined) delete process.env.ALTIMATE_SCRATCH_MAX_BYTES + else process.env.ALTIMATE_SCRATCH_MAX_BYTES = previous + } + }) + } + + test("the tool clamps oversized max_bytes to the hard 2 GiB ceiling for the source read", async () => { + const limits: (number | undefined)[] = [] + const get = fakePostgres(async (_sql, _limit, _binds, options) => { + limits.push(options?.maxResultBytes) + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }) + try { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute( + { + source_warehouse: "pg_source", + sql: "SELECT 1 AS n", + target_table: "capped_transfer", + max_bytes: 4 * 1024 ** 3, + }, + ctx as any, + ) + expect(result.metadata.error).toBeUndefined() + expect(limits).toEqual([2 * 1024 ** 3]) + } finally { + get.mockRestore() + } + }) + + test("small materialization with both caps preserves rows in the real scratch engine", async () => { + const result = await materialize({ + source_warehouse: "ordersdb", + sql: "SELECT id, note FROM orders ORDER BY id", + target_table: "small", + max_rows: 4, + max_bytes: 256, + }) + expect(result.rows).toBe(4) + expect((await scratchSql("SELECT id, note FROM small ORDER BY id")).rows).toEqual([ + [1n, "first"], + [2n, null], + [3n, "third"], + [4n, "orphan"], + ]) + }) + + test("reads a small source result once with one deadline and both bounds", async () => { + const seen: { sql: string; limit: number | undefined; timeout: number | undefined; bytes: number | undefined }[] = [] + const get = fakePostgres(async (sql, limit, _binds, options) => { + seen.push({ sql, limit, timeout: options?.queryTimeoutMs, bytes: options?.maxResultBytes }) + return { columns: ["n"], rows: [[1], [2], [3]], row_count: 3, truncated: false } + }) + try { + const result = await materialize({ + source_warehouse: "pg_source", + sql: "SELECT n FROM numbers", + target_table: "single_read", + max_rows: 3, + max_bytes: 64, + query_timeout_ms: 4321, + }) + expect(result.rows).toBe(3) + expect(result.warnings).toEqual([]) + expect(seen).toEqual([ + { + sql: "SELECT * FROM (\nSELECT n FROM numbers\n) AS __sql_materialize_source LIMIT 4", + limit: 4, + timeout: 4321, + bytes: 64, + }, + ]) + expect((await scratchSql("SELECT n FROM single_read ORDER BY n")).rows).toEqual([[1n], [2n], [3n]]) + } finally { + get.mockRestore() + } + }) + + for (const [label, query_timeout_ms, expected] of [ + ["omitted", undefined, undefined], + ["zero", 0, undefined], + ["empty array", [], undefined], + ["empty string", "", undefined], + ["null", null, undefined], + ["positive", 4321, 4321], + ] as const) { + test(`the registered tool normalizes ${label} deadlines before running source queries`, async () => { + const seen: { sql: string; timeout: number | undefined }[] = [] + const get = fakePostgres(async (sql, _limit, _binds, options) => { + seen.push({ sql, timeout: options?.queryTimeoutMs }) + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }) + try { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute( + { + source_warehouse: "pg_source", + sql: "SELECT 1 AS n", + target_table: "deadline", + query_timeout_ms, + }, + ctx as any, + ) + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(1) + expect(seen).toHaveLength(1) + expect(seen[0].sql).toMatch(/LIMIT 2000001$/) + expect(seen[0].timeout).toBe(expected ?? 120_000) + } finally { + get.mockRestore() + } + }) + } + + test("a remote source cannot outlast its deadline and later write to scratch", async () => { + await getScratch() + const finished = Promise.withResolvers() + let calls = 0 + let signal: AbortSignal | undefined + const get = fakePostgres(async (_sql, _limit, _binds, options) => { + calls++ + signal = options?.signal + await new Promise((resolve) => setTimeout(resolve, 150)) + finished.resolve() + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }) + try { + const started = performance.now() + await expect( + materialize({ + source_warehouse: "pg_source", + sql: "SELECT 1 AS n", + target_table: "late_result", + query_timeout_ms: 30, + }), + ).rejects.toBeInstanceOf(QueryTimeoutError) + expect(performance.now() - started).toBeLessThan(150) + expect(signal?.aborted).toBe(true) + await finished.promise + expect(calls).toBe(1) + expect( + (await scratchSql("SELECT table_name FROM information_schema.tables WHERE table_name = 'late_result'")).rows, + ).toEqual([]) + } finally { + await finished.promise + get.mockRestore() + } + }) + + test("a zero deadline uses the configured default for the single source read", async () => { + const get = fakePostgres(async (_sql, _limit, _binds, options) => { + expect(options?.queryTimeoutMs).toBe(120_000) + await new Promise((resolve) => setTimeout(resolve, 30)) + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }) + try { + const result = await materialize({ + source_warehouse: "pg_source", + sql: "SELECT 1 AS n", + target_table: "no_deadline", + query_timeout_ms: 0, + }) + expect(result.rows).toBe(1) + } finally { + get.mockRestore() + } + }) + + test("a source timeout propagates without retrying", async () => { + const seen: string[] = [] + const get = fakePostgres(async (sql) => { + seen.push(sql) + throw new QueryTimeoutError({ engine: "postgres", timeoutMs: 4321, cancelled: true }) + }) + try { + await expect( + materialize({ + source_warehouse: "pg_source", + sql: "SELECT description FROM languages", + target_table: "timed_out", + query_timeout_ms: 4321, + }), + ).rejects.toBeInstanceOf(QueryTimeoutError) + expect(seen).toHaveLength(1) + expect(seen[0]).toMatch(/AS __sql_materialize_source LIMIT/) + } finally { + get.mockRestore() + } + }) + + test("a truncated extraction is refused even when returned rows are below the cap", async () => { + const get = fakePostgres(async () => ({ + columns: ["n"], + rows: [[1]], + row_count: 1, + truncated: true, + })) + try { + await expect( + materialize({ source_warehouse: "pg_source", sql: "SELECT 1 AS n", target_table: "truncated", max_rows: 3 }), + ).rejects.toThrow(/row cap of 3/) + } finally { + get.mockRestore() + } + }) + + test("stops extraction at max_bytes when later rows are wider", async () => { + let produced = 0 + const limits: (number | undefined)[] = [] + const get = fakePostgres(async (_sql, _limit, _binds, options) => { + limits.push(options?.maxResultBytes) + const rows = [] + let bytes = 0 + for (const value of ["x", "y".repeat(128), "must not be fetched", "nor this"]) { + produced++ + bytes += Buffer.byteLength(JSON.stringify([value])) + if (options?.maxResultBytes !== undefined && bytes > options.maxResultBytes) { + throw Object.assign(new Error("result byte limit"), { code: "RESULT_BYTE_LIMIT" }) + } + rows.push([value]) + } + return { columns: ["description"], rows, row_count: rows.length, truncated: false } + }) + try { + const error = await materialize({ + source_warehouse: "pg_source", + sql: "SELECT description FROM languages", + target_table: "bounded", + max_bytes: 32, + }).catch((error: unknown) => error) + expect(error).toBeInstanceOf(Error) + expect(error instanceof Error ? error.message : undefined).toMatch(/32 bytes bound/) + expect(produced).toBe(2) + expect(limits).toEqual([32]) + expect( + Number( + (await scratchSql("SELECT count(*) FROM information_schema.tables WHERE table_name = 'bounded'")).rows[0][0], + ), + ).toBe(0) + } finally { + get.mockRestore() + } + }) + + test("refuses an unbounded connector before extraction", async () => { + const real = Registry.get.bind(Registry) + let calls = 0 + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "ordersdb" + ? { + connect: async () => {}, + execute: async () => { + calls++ + return { columns: ["n"], rows: [[1]], row_count: 1, truncated: false } + }, + listSchemas: async () => [], + listTables: async () => [], + describeTable: async () => [], + close: async () => {}, + } + : real(name), + ) + try { + const error = await materialize({ + source_warehouse: "ordersdb", + sql: "SELECT 1 AS n", + target_table: "unbounded", + }).catch((error: unknown) => error) + expect(error).toBeInstanceOf(Error) + expect(error instanceof Error ? error.message : undefined).toMatch(/does not support bounded result transfer/) + expect(calls).toBe(0) + } finally { + get.mockRestore() + } + }) + + test("the byte backstop refuses oversized rows before changing an existing target", async () => { + await materialize({ source_warehouse: "ordersdb", sql: "SELECT 7 AS id", target_table: "preserved" }) + const seen: string[] = [] + const get = fakePostgres(async (sql) => { + seen.push(sql) + return { columns: ["description"], rows: [["x".repeat(128)]], row_count: 1, truncated: false } + }) + try { + await expect( + materialize({ + source_warehouse: "pg_source", + sql: "SELECT description FROM languages", + target_table: "preserved", + mode: "replace", + max_bytes: 32, + }), + ).rejects.toThrow(/32 bytes bound/) + expect(seen).toHaveLength(1) + expect((await scratchSql("SELECT id FROM preserved")).rows).toEqual([[7n]]) + } finally { + get.mockRestore() + } + }) + + test("bounds the source fetch to cap + 1 despite nested limits and passes the deadline", async () => { + const source = await Registry.get("ordersdb") + const original = source.execute.bind(source) + const fetched: number[] = [] + const execute = spyOn(source, "execute").mockImplementation(async (sql, limit, binds, options) => { + expect(options?.noLimit).not.toBe(true) + expect(options?.queryTimeoutMs).toBe(4321) + expect(limit).toBe(3) + expect(sql).toMatch(/\) AS __sql_materialize_source LIMIT 3$/) + const result = await original(sql, limit, binds, options) + fetched.push(result.rows.length) + return result + }) + try { + for (const sql of [ + "SELECT id FROM orders LIMIT 99999", + "WITH x AS (SELECT id FROM orders LIMIT 99999) SELECT * FROM x; -- trailing comment", + "SELECT id, 'LIMIT' AS label FROM orders", + ]) { + await expect( + materialize({ + source_warehouse: "ordersdb", + sql, + target_table: "bounded", + max_rows: 2, + query_timeout_ms: 4321, + }), + ).rejects.toThrow(/row cap of 2/) + } + expect(fetched).toEqual([3, 3, 3]) + } finally { + execute.mockRestore() + } + }) + + test("a fake source fetch observes the sentinel bound and resolved common deadline", async () => { + const source = await Registry.get("ordersdb") + let fetched = 0 + const execute = spyOn(source, "execute").mockImplementation(async (sql, limit, _binds, options) => { + expect(options?.noLimit).not.toBe(true) + expect(options).toHaveProperty("queryTimeoutMs", 120_000) + expect(options?.signal).toBeInstanceOf(AbortSignal) + expect(limit).toBe(4) + const rows = Array.from({ length: Math.min(100, limit!) }, (_, n) => [n]) + fetched = rows.length + return { columns: ["id"], rows, row_count: rows.length, truncated: false } + }) + try { + await expect( + materialize({ + source_warehouse: "ordersdb", + sql: "SELECT id FROM orders", + target_table: "fake_bound", + max_rows: 3, + }), + ).rejects.toThrow(/row cap of 3/) + expect(fetched).toBe(4) + } finally { + execute.mockRestore() + } + }) + + test("byte bound exceeded fails cleanly", async () => { + await expect( + materialize({ source_warehouse: "ordersdb", sql: "SELECT * FROM orders", target_table: "fat", max_bytes: 10 }), + ).rejects.toThrow(/10 bytes bound/) + }) + + test("unknown source warehouse is reported", async () => { + const tool = await initTool(SqlMaterializeTool) + const r = await tool.execute({ source_warehouse: "nowhere", sql: "SELECT 1", target_table: "t" }, ctx as any) + expect(r.title).toContain("ERROR") + expect(r.output).toContain("not found") + }) + + test("a zero-row result with no columns reports without creating a table", async () => { + const tool = await initTool(SqlMaterializeTool) + const r = await tool.execute( + { source_warehouse: "ordersdb", sql: "SELECT * FROM orders WHERE id < 0", target_table: "empty_t" }, + ctx as any, + ) + expect(r.metadata.materialized).toBe(false) + expect(r.output).toContain("0 rows") + }) + + test("derives a table from scratch itself", async () => { + await materialize({ source_warehouse: "ordersdb", sql: "SELECT id, amount FROM orders", target_table: "base" }) + const r = await materialize({ + source_warehouse: "scratch", + sql: "SELECT id FROM base WHERE amount > 3", + target_table: "derived", + }) + expect(r.rows).toBe(2) + }) + + test("MongoDB sources accept only read commands", async () => { + Registry.setConfigs({ mongo1: { type: "mongodb", host: "localhost" } }) + await expect( + materialize({ + source_warehouse: "mongo1", + sql: '{"command":"dropCollection","collection":"c"}', + target_table: "m", + }), + ).rejects.toThrow(/not allowed/) + await expect(materialize({ source_warehouse: "mongo1", sql: "SELECT 1", target_table: "m" })).rejects.toThrow( + /JSON command/, + ) + }) + + test("a failed source query creates nothing", async () => { + const tool = await initTool(SqlMaterializeTool) + const r = await tool.execute( + { source_warehouse: "ordersdb", sql: "SELECT * FROM no_such_table", target_table: "t" }, + ctx as any, + ) + expect(r.title).toContain("ERROR") + }) +}) diff --git a/packages/opencode/test/altimate/sql-query-deadline.test.ts b/packages/opencode/test/altimate/sql-query-deadline.test.ts new file mode 100644 index 0000000000..7e38de9233 --- /dev/null +++ b/packages/opencode/test/altimate/sql-query-deadline.test.ts @@ -0,0 +1,471 @@ +// altimate_change - new file +// +// Deadline behaviour at the sql.execute boundary: a timeout is an error result +// (never an empty successful table), and it never causes the query to be +// re-executed on another backend. +import { afterAll, afterEach, beforeAll, beforeEach, mock, describe, expect, spyOn, test } from "bun:test" +import * as fs from "fs" +import * as os from "os" +import * as path from "path" +import { + dbtAdapterInternals, + registerAll, + resolveDefaultTarget, + resetDbtAdapter, +} from "../../src/altimate/native/connections/register" +import { Dispatcher } from "../../src/altimate/native" +import * as Registry from "../../src/altimate/native/connections/registry" +import { QueryTimeoutError, type Connector } from "@altimateai/drivers/types" +import { RunBudget } from "../../src/altimate/run-budget" + +const FOREVER_SQLITE = + "WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c" + +// The real adapter drags in a Python bridge; the tests hand the register module a scripted one. +let scriptedAdapter: unknown +mock.module("../../../dbt-tools/src/adapter", () => ({ create: async () => scriptedAdapter })) + +// The real `pg` module, captured before any test replaces it, so the replacement can be undone. +// `pg` is an optional dependency of the drivers package, not of this one, so resolve it from there. +let realPg: Record | undefined +beforeAll(async () => { + try { + const driversDir = path.resolve(import.meta.dir, "../../../drivers") + realPg = await import(require.resolve("pg", { paths: [driversDir] })) + } catch { + realPg = undefined + } + registerAll() +}) +afterAll(() => { + // mock.module leaks across files: leave the adapter unavailable, which callers treat as "no dbt". + mock.module("../../../dbt-tools/src/adapter", () => ({ + create: async () => { + throw new Error("dbt adapter unavailable") + }, + })) + // Likewise put the real `pg` back (or an unreachable pool when it is not installed) so a later + // file's connection probe against an unresolvable host fails instead of talking to the queued fake. + const restored = realPg ? { ...realPg } : undefined + mock.module( + "pg", + () => + restored ?? { + default: { + Pool: class { + async connect() { + throw new Error("pg unavailable") + } + async end() {} + }, + }, + }, + ) +}) +beforeEach(() => { + resetDbtAdapter() + Registry.reset() +}) +afterEach(() => { + resetDbtAdapter() + delete dbtAdapterInternals.readConfig + Registry.reset() +}) + +const run = (params: Record, context?: { signal?: AbortSignal; sessionID?: string }) => + Dispatcher.call("sql.execute", params as never, context) as Promise + +async function queuedPostgres() { + const queries: string[] = [] + const releases: unknown[] = [] + const client = { + async query(sql: string) { + queries.push(sql) + if (sql === "SHOW statement_timeout") return { fields: [], rows: [{ statement_timeout: "0" }] } + return { fields: [], rows: [] } + }, + release(discard?: boolean) { releases.push(discard) }, + } + const admitted = Promise.withResolvers() + const connecting = Promise.withResolvers() + mock.module("pg", () => ({ + default: { + Pool: class { + connect() { + connecting.resolve() + return admitted.promise + } + async end() {} + }, + }, + })) + const { connect } = await import("@altimateai/drivers/postgres") + const connector = await connect({ type: "postgres" }) + await connector.connect() + const execute = spyOn(connector, "execute") + const get = spyOn(Registry, "get").mockResolvedValue(connector) + Registry.setConfigs({ pg: { type: "postgres" } }) + return { connector, execute, get, queries, releases, connecting: connecting.promise, admit: () => admitted.resolve(client) } +} + +describe("sql.execute deadline — native engines", () => { + test.each([0, 10_000])("query_timeout_ms %i is capped by the remaining run budget", async (queryTimeoutMs) => { + Registry.setConfigs({ source: { type: "mongodb", query_timeout_ms: 0 } }) + const dispose = RunBudget.registerQueryDeadline("deadline-session", Date.now() + 200) + const execute = mock(() => new Promise(() => {})) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + const before = performance.now() + const result = await run( + { sql: "SELECT 1", warehouse: "source", query_timeout_ms: queryTimeoutMs }, + { sessionID: "deadline-session" }, + ) + expect(performance.now() - before).toBeLessThan(1000) + expect(result.error).toContain("QUERY_TIMEOUT") + const options = execute.mock.calls[0]?.[3] + expect(options?.queryTimeoutMs).toBeGreaterThan(0) + expect(options?.queryTimeoutMs).toBeLessThanOrEqual(200) + expect(options?.signal?.aborted).toBe(true) + } finally { + dispose() + get.mockRestore() + } + }) + + test("session abort reaches the connector and returns promptly", async () => { + Registry.setConfigs({ source: { type: "mongodb" } }) + const controller = new AbortController() + const started = Promise.withResolvers() + let receivedSignal: AbortSignal | undefined + const get = spyOn(Registry, "get").mockResolvedValue({ + execute: (_sql: string, _limit: number, _binds: unknown, options: { signal?: AbortSignal }) => { + receivedSignal = options.signal + started.resolve() + return new Promise(() => {}) + }, + } as never) + try { + const pending = run({ sql: "SELECT 1", warehouse: "source" }, { signal: controller.signal }) + await started.promise + const before = performance.now() + controller.abort(new Error("session stopped")) + const result = await Promise.race([pending, Bun.sleep(1000).then(() => ({ error: "abort was ignored" }))]) + expect(result.error).toContain("session stopped") + expect(performance.now() - before).toBeLessThan(2000) + expect(receivedSignal?.aborted).toBe(true) + } finally { + get.mockRestore() + } + }) + + test("the outer PostgreSQL deadline abandons a queued acquisition and releases its late client without executing SQL", async () => { + const db = await queuedPostgres() + try { + const result = await run({ sql: "INSERT INTO sentinel VALUES (1)", warehouse: "pg", query_timeout_ms: 10 }) + expect(result.error).toContain("QUERY_TIMEOUT") + db.admit() + await Promise.resolve(db.execute.mock.results[0]!.value).catch(() => {}) + expect(db.queries).toEqual([]) + expect(db.releases).toEqual([undefined]) + } finally { + db.admit() + db.get.mockRestore() + db.execute.mockRestore() + await db.connector.close() + } + }, 15_000) + + test("a PostgreSQL client admitted before the outer deadline executes normally", async () => { + const db = await queuedPostgres() + try { + const execution = run({ sql: "INSERT INTO sentinel VALUES (1)", warehouse: "pg", query_timeout_ms: 1000 }) + await db.connecting + db.admit() + expect((await execution).error).toBeUndefined() + expect(db.queries).toContain("INSERT INTO sentinel VALUES (1)") + expect(db.releases).toEqual([undefined]) + } finally { + db.get.mockRestore() + db.execute.mockRestore() + await db.connector.close() + } + }) + + test("sql.execute forwards requested read-only protection to PostgreSQL connectors", async () => { + for (const type of ["postgres", "postgresql"]) { + Registry.setConfigs({ source: { type } }) + const execute = mock(async () => ({ columns: [], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + expect((await run({ sql: "SELECT writing_view()", warehouse: "source", read_only: true })).error).toBeUndefined() + expect(execute.mock.calls[0]?.[3]).toMatchObject({ readOnly: true }) + } finally { + get.mockRestore() + } + } + }) + + test("sql.execute refuses a named non-PostgreSQL warehouse for read-only requests before executing SQL", async () => { + Registry.setConfigs({ source: { type: "snowflake" } }) + const execute = mock(async () => ({ columns: [], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + const result = await run({ sql: "SELECT writing_view()", warehouse: "source", read_only: true }) + expect(result.error).toContain("Read-only SQL execution requires a native PostgreSQL connection. Configure one with warehouse.add or set ALTIMATE_CODE_CONN_* env vars.") + expect(get).not.toHaveBeenCalled() + expect(execute).not.toHaveBeenCalled() + } finally { + get.mockRestore() + } + }) + + test("sql.execute forwards bounded options without read-only protection to non-PostgreSQL connectors", async () => { + Registry.setConfigs({ source: { type: "snowflake" } }) + const execute = mock(async () => ({ columns: [], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + expect((await run({ sql: "SELECT 1", warehouse: "source", read_only: false })).error).toBeUndefined() + expect(execute.mock.calls[0]?.[3]).toMatchObject({ queryTimeoutMs: expect.any(Number), signal: expect.any(AbortSignal) }) + expect(execute.mock.calls[0]?.[3]).not.toHaveProperty("readOnly") + } finally { + get.mockRestore() + } + }) + + test("a timeout is an error result with a stable code, and the connection recovers", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:", query_timeout_ms: 400 } as never }) + const t = performance.now() + const slow = await run({ sql: FOREVER_SQLITE, warehouse: "lite" }) + expect(performance.now() - t).toBeLessThan(4000) + expect(slow.error).toContain("QUERY_TIMEOUT") + expect(slow.rows).toEqual([]) + expect(slow.row_count).toBe(0) + + const fast = await run({ sql: "SELECT 1 AS one", warehouse: "lite" }) + expect(fast.error).toBeUndefined() + expect(fast.rows).toEqual([[1]]) + await Registry.reset() + }) + + test("query_timeout_ms on the call overrides the connection", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:", query_timeout_ms: 0 } as never }) + const slow = await run({ sql: FOREVER_SQLITE, warehouse: "lite", query_timeout_ms: 300 }) + expect(slow.error).toContain("QUERY_TIMEOUT") + expect(slow.error).toContain("300ms") + }) + + // Policy for local engines: the engine's own deadline (execution only, queue + // wait excluded) is authoritative and no outer race abandons a queued call. A + // restart rejects calls already queued on a session that may have lost state. + // They must never execute after being reported as failed; a fresh call can use + // the new session. Stateless file-backed sessions can survive a restart. + test("a call queued before a timeout loses its session without executing and fresh work succeeds", async () => { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), "queued-deadline-")) + const db = path.join(dir, "q.db") + const { Database } = await import("bun:sqlite") + const seed = new Database(db) + seed.exec("CREATE TABLE sentinel(x)") + seed.close() + Registry.setConfigs({ lite: { type: "SQLite", path: db } as never }) + try { + // The merged timeout-isolation policy lets stateless file sessions recover. + // Establish transaction state so B must not silently execute in autocommit + // after A's timeout discards that transaction. + expect((await run({ sql: "BEGIN", warehouse: "lite" })).error).toBeUndefined() + // Observe A's dispatch to the helper so B is queued strictly behind it. + const dispatched = Promise.withResolvers() + const connector = await Registry.get("lite") + const execute = connector.execute.bind(connector) + const spy = spyOn(connector, "execute").mockImplementation((sql, limit, binds, options) => + execute(sql, limit, binds, sql === FOREVER_SQLITE ? { ...options, onDispatch: dispatched.resolve } : options), + ) + // A holds the engine for 7s (past B's 500ms budget + the 5s outer grace). + const a = run({ sql: FOREVER_SQLITE, warehouse: "lite", query_timeout_ms: 7000 }) + await dispatched.promise + spy.mockRestore() + const b = await Promise.race([ + run({ sql: "INSERT INTO sentinel VALUES (1)", warehouse: "lite", query_timeout_ms: 500 }), + Bun.sleep(20_000).then(() => "stuck"), + ]) + expect((await a).error).toContain("QUERY_TIMEOUT") + expect(b).not.toBe("stuck") + expect((b as any).error).toContain("session state was lost") + expect((b as any).error).toContain("This statement was not executed") + expect((b as any).rows).toEqual([]) + expect((b as any).row_count).toBe(0) + // Allow SQLite to recover the helper's interrupted journal before reading. + const check = new Database(db) + try { + expect(check.query("SELECT count(*) AS n FROM sentinel").get()).toEqual({ n: 0 }) + const fresh = await run({ sql: "INSERT INTO sentinel VALUES (2)", warehouse: "lite", query_timeout_ms: 500 }) + expect(fresh.error).toBeUndefined() + expect(check.query("SELECT x FROM sentinel").all()).toEqual([{ x: 2 }]) + } finally { + check.close() + } + } finally { + await Registry.closeAll() + Registry.reset() + fs.rmSync(dir, { recursive: true, force: true }) + } + }, 40_000) + + test("an engine that cannot cancel is bounded by the outer deadline and reported as abandoned", async () => { + Registry.setConfigs({ remote: { type: "snowflake", account: "a", query_timeout_ms: 200 } as never }) + const get = spyOn(Registry, "get").mockResolvedValue({ + execute: () => new Promise(() => {}), + } as never) + try { + const t = performance.now() + const r = await run({ sql: "SELECT 1", warehouse: "remote" }) + const elapsed = performance.now() - t + expect(r.error).toContain("QUERY_TIMEOUT") + expect(r.error).toContain("may still be running") + expect(r.rows).toEqual([]) + // deadline + grace, not forever + expect(elapsed).toBeGreaterThan(190) + expect(elapsed).toBeLessThan(8000) + } finally { + get.mockRestore() + } + }, 15000) +}) + +describe("sql.execute deadline — dbt path never falls back", () => { + let projectRoot: string + beforeEach(() => { + projectRoot = fs.mkdtempSync(path.join(os.tmpdir(), "dbt-deadline-")) + fs.writeFileSync(path.join(projectRoot, "dbt_project.yml"), "name: t\n") + dbtAdapterInternals.readConfig = async () => ({ projectRoot }) as never + }) + + async function withAdapter(adapter: any, body: () => Promise) { + scriptedAdapter = adapter + await body() + } + + test("aborting a dbt query returns promptly without retrying on the native connection", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:" } as never }) + const controller = new AbortController() + const started = Promise.withResolvers() + const get = spyOn(Registry, "get") + try { + await withAdapter({ immediatelyExecuteSQL: () => { + started.resolve() + return new Promise(() => {}) + } }, async () => { + const pending = run({ sql: "SELECT 1" }, { signal: controller.signal }) + await started.promise + controller.abort(new Error("session stopped")) + const result = await Promise.race([pending, Bun.sleep(1000).then(() => ({ error: "abort was ignored" }))]) + expect(result.error).toContain("session stopped") + expect(get).not.toHaveBeenCalled() + }) + } finally { + get.mockRestore() + } + }) + + test("a read-only PostgreSQL request skips the configured dbt adapter and uses a read-only transaction", async () => { + const db = await queuedPostgres() + const dbtExecute = mock(async () => ({ columnNames: ["one"], data: [{ one: 1 }] })) + try { + await withAdapter({ getAdapterType: () => "postgres", immediatelyExecuteSQL: dbtExecute, immediatelyExecuteSQLWithLimit: dbtExecute }, async () => { + // Confirm dbt is configured and cached before exercising the protected path. + expect(await resolveDefaultTarget("sql.execute")).toMatchObject({ source: "dbt", type: "postgres" }) + const sql = "SELECT writing_view() LIMIT 1" + db.admit() + expect((await run({ sql, read_only: true })).error).toBeUndefined() + expect(dbtExecute).not.toHaveBeenCalled() + expect(db.execute.mock.calls[0]?.[3]).toMatchObject({ readOnly: true }) + expect(db.queries).toContain("BEGIN READ ONLY") + expect(db.queries.indexOf("BEGIN READ ONLY")).toBeLessThan(db.queries.indexOf(sql)) + expect(db.queries.indexOf("ROLLBACK")).toBeGreaterThan(db.queries.indexOf(sql)) + }) + } finally { + db.admit() + db.get.mockRestore() + db.execute.mockRestore() + await db.connector.close() + } + }) + + test("a read-only request with only a dbt profile fails without executing unprotected SQL", async () => { + Registry.setConfigs({}) + const dbtExecute = mock(async () => ({ columnNames: ["one"], data: [{ one: 1 }] })) + const get = spyOn(Registry, "get") + try { + await withAdapter({ getAdapterType: () => "postgres", immediatelyExecuteSQL: dbtExecute, immediatelyExecuteSQLWithLimit: dbtExecute }, async () => { + expect(await resolveDefaultTarget("sql.execute")).toMatchObject({ source: "dbt", type: "postgres" }) + const result = await run({ sql: "SELECT writing_view()", read_only: true, limit: 1 }) + expect(result.error).toContain("No warehouse configured") + expect(result.error).toContain("requires a native PostgreSQL connection") + expect(dbtExecute).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + }) + } finally { + get.mockRestore() + } + }) + + test("a read-only PostgreSQL dbt request refuses a non-PostgreSQL native fallback", async () => { + Registry.setConfigs({ source: { type: "snowflake", account: "a" } }) + const dbtExecute = mock(async () => ({ columnNames: ["one"], data: [{ one: 1 }] })) + const execute = mock(async () => ({ columns: [], rows: [], row_count: 0, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + await withAdapter({ getAdapterType: () => "postgres", immediatelyExecuteSQL: dbtExecute, immediatelyExecuteSQLWithLimit: dbtExecute }, async () => { + expect(await resolveDefaultTarget("sql.execute")).toMatchObject({ + source: "dbt", type: "postgres", fallback: { name: "source", type: "snowflake" }, + }) + const result = await run({ sql: "SELECT writing_view()", read_only: true }) + expect(result.error).toContain("requires a native PostgreSQL connection") + expect(dbtExecute).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + expect(execute).not.toHaveBeenCalled() + }) + } finally { + get.mockRestore() + } + }) + + test("a dbt query that outruns the deadline errors without running on the native connection", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:" } as never }) + const get = spyOn(Registry, "get") + await withAdapter({ immediatelyExecuteSQL: () => new Promise(() => {}), immediatelyExecuteSQLWithLimit: () => new Promise(() => {}) }, async () => { + const t = performance.now() + const r = await run({ sql: "SELECT 1 AS one", query_timeout_ms: 200 }) + expect(performance.now() - t).toBeLessThan(4000) + expect(r.error).toContain("QUERY_TIMEOUT") + expect(r.rows).toEqual([]) + expect(get).not.toHaveBeenCalled() + }) + get.mockRestore() + }) + + test("a dbt adapter that reports a timeout itself is not retried natively", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:" } as never }) + const get = spyOn(Registry, "get") + const failing = async () => { + throw new QueryTimeoutError({ engine: "dbt", timeoutMs: 1000 }) + } + await withAdapter({ immediatelyExecuteSQL: failing, immediatelyExecuteSQLWithLimit: failing }, async () => { + const r = await run({ sql: "SELECT 1 AS one" }) + expect(r.error).toContain("QUERY_TIMEOUT") + expect(get).not.toHaveBeenCalled() + }) + get.mockRestore() + }) + + test("an ordinary dbt failure still falls back to the native connection", async () => { + Registry.setConfigs({ lite: { type: "sqlite", path: ":memory:" } as never }) + const failing = async () => { + throw new Error("adapter exploded") + } + await withAdapter({ immediatelyExecuteSQL: failing, immediatelyExecuteSQLWithLimit: failing }, async () => { + const r = await run({ sql: "SELECT 1 AS one" }) + expect(r.error).toBeUndefined() + expect(r.rows).toEqual([[1]]) + }) + }) +}) diff --git a/packages/opencode/test/altimate/sql-tool-cancellation.test.ts b/packages/opencode/test/altimate/sql-tool-cancellation.test.ts new file mode 100644 index 0000000000..2f1d760393 --- /dev/null +++ b/packages/opencode/test/altimate/sql-tool-cancellation.test.ts @@ -0,0 +1,217 @@ +import { afterEach, expect, spyOn, test } from "bun:test" +import type { Connector, ExecuteOptions } from "@altimateai/drivers/types" +import * as Registry from "../../src/altimate/native/connections/registry" +import * as Dispatcher from "../../src/altimate/native/dispatcher" +import * as Precedence from "../../src/altimate/workspace/precedence" +import { closeScratch, getScratch } from "../../src/altimate/native/connections/scratch" +import * as Scratch from "../../src/altimate/native/connections/scratch" +import { SqlMaterializeTool, materialize } from "../../src/altimate/tools/sql-materialize" +import { SqlCheckTool } from "../../src/altimate/tools/sql-check" +import { SqlExecuteTool } from "../../src/altimate/tools/sql-execute" +import { initTool } from "./tool-fixture" +import { RunBudget } from "../../src/altimate/run-budget" + +afterEach(async () => { + await closeScratch() + await Registry.reset() +}) + +const context = (abort: AbortSignal) => ({ + sessionID: "sql-cancellation-session", + messageID: "sql-cancellation-message", + agent: "test", + abort, + messages: [], + metadata: () => {}, + ask: async () => {}, +}) + +for (const kind of ["materialize", "check"] as const) { + test(`${kind} forwards session abort to its active read without retrying`, async () => { + Registry.setConfigs({ source: { type: "postgres" } }) + const started = Promise.withResolvers() + const pending = Promise.withResolvers() + let reads = 0 + let closed = false + const execute: Connector["execute"] = (_sql, _limit, _binds, options) => { + reads++ + started.resolve(options) + options?.signal?.addEventListener("abort", () => { + closed = true + pending.reject(options.signal!.reason) + }, { once: true }) + return pending.promise + } + const original = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "source" ? { execute, supportsResultByteLimit: true } as Connector : original(name), + ) + const precedence = spyOn(Precedence, "check").mockResolvedValue({}) + const abort = new AbortController() + let timer: ReturnType | undefined + let task: Promise | undefined + try { + const tool = await initTool(kind === "materialize" ? SqlMaterializeTool : SqlCheckTool) + task = tool.execute(kind === "materialize" + ? { source_warehouse: "source", sql: "SELECT id FROM items", target_table: "items" } + : { warehouse: "source", check: "nulls", sql: "SELECT id FROM items", columns: ["id"] }, context(abort.signal)) + await started.promise + const start = performance.now() + abort.abort(new Error("Session cancelled")) + const result = await Promise.race([ + task, + new Promise((resolve) => { timer = setTimeout(() => resolve(undefined), 1000) }), + ]) + expect(result).toBeDefined() + expect(performance.now() - start).toBeLessThan(2000) + expect(result.metadata.error).toContain("Session cancelled") + expect(closed).toBe(true) + expect(reads).toBe(1) + } finally { + clearTimeout(timer) + pending.reject(new Error("Session cancelled")) + await task?.catch(() => {}) + precedence.mockRestore() + get.mockRestore() + } + }) +} + +test("sql_execute passes the session signal and budget identity through dispatch", async () => { + const abort = new AbortController() + const dispatch = spyOn(Dispatcher, "call").mockResolvedValue({ error: "Stopped", columns: [], rows: [], row_count: 0, truncated: false } as never) + const precedence = spyOn(Precedence, "check").mockResolvedValue({}) + try { + const tool = await initTool(SqlExecuteTool) + await tool.execute({ warehouse: "source", query: "SELECT id FROM items" }, context(abort.signal)) + const call = dispatch.mock.calls.find(([method]) => method === "sql.execute") + expect(call?.[2]).toEqual({ signal: abort.signal, sessionID: "sql-cancellation-session" }) + } finally { + dispatch.mockRestore() + precedence.mockRestore() + } +}) + +test("a zero materialize deadline cannot outlive the run cutoff or start another probe", async () => { + Registry.setConfigs({ source: { type: "postgres", query_timeout_ms: 0 } }) + await getScratch() + let reads = 0 + let closed = false + let timeout: number | undefined + const execute: Connector["execute"] = (_sql, _limit, _binds, options) => { + reads++ + timeout = options?.queryTimeoutMs + return new Promise((_resolve, reject) => options?.signal?.addEventListener("abort", () => { + closed = true + reject(options.signal!.reason) + }, { once: true })) + } + const original = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "source" ? { execute, supportsResultByteLimit: true } as Connector : original(name), + ) + const release = RunBudget.registerQueryDeadline("short-run", Date.now() + 100) + try { + const start = performance.now() + await expect(materialize({ source_warehouse: "source", sql: "SELECT id FROM items", target_table: "items", query_timeout_ms: 0 }, + { sessionID: "short-run" })).rejects.toMatchObject({ code: "QUERY_TIMEOUT" }) + expect(performance.now() - start).toBeLessThan(2000) + expect(timeout).toBeGreaterThan(0) + expect(timeout).toBeLessThanOrEqual(100) + expect(closed).toBe(true) + expect(reads).toBe(1) + } finally { + release() + get.mockRestore() + } +}) + +test("materialize rolls back when cancellation arrives between scratch statements", async () => { + Registry.setConfigs({ source: { type: "postgres" } }) + const original = Registry.get.bind(Registry) + const get = spyOn(Registry, "get").mockImplementation(async (name: string) => + name === "source" ? { + supportsResultByteLimit: true, + connect: async () => {}, + close: async () => {}, + listSchemas: async () => [], + listTables: async () => [], + describeTable: async () => [], + execute: async () => ({ columns: ["id"], rows: [[1]], row_count: 1, truncated: false }), + } as Connector : original(name), + ) + const scratch = await getScratch() + const abort = new AbortController() + const statements: string[] = [] + const rolledBack = Promise.withResolvers() + const withScratch = Scratch.withScratchConnection + const operation = spyOn(Scratch, "withScratchConnection").mockImplementation((run, sessionID) => + withScratch((connection, directory) => run({ + ...connection, + execute: async (...args) => { + statements.push(args[0]) + const result = await connection.execute(...args) + if (args[0] === "ROLLBACK") rolledBack.resolve() + if (args[0].startsWith("CREATE TABLE")) abort.abort(new Error("Session cancelled")) + return result + }, + }, directory), sessionID), + ) + try { + await expect(materialize({ source_warehouse: "source", sql: "SELECT id FROM items", target_table: "items" }, + { signal: abort.signal })).rejects.toThrow("Session cancelled") + await rolledBack.promise + expect(statements).toContain("ROLLBACK") + expect((await scratch.execute("SELECT table_name FROM information_schema.tables WHERE table_name = 'items'")).rows).toEqual([]) + } finally { + operation.mockRestore() + get.mockRestore() + } +}) + +for (const kind of ["materialize", "check"] as const) { + test(`${kind} aborts during connection admission and cannot execute a late read`, async () => { + Registry.setConfigs({ source: { type: "postgres" } }) + const entered = Promise.withResolvers() + const admitted = Promise.withResolvers() + let reads = 0 + const connector: Connector = { + execute: async () => { reads++; throw new Error("Unexpected late read") }, + supportsResultByteLimit: true, + connect: async () => {}, + close: async () => {}, + listSchemas: async () => [], + listTables: async () => [], + describeTable: async () => [], + } + const get = spyOn(Registry, "get").mockImplementation(() => { + entered.resolve() + return admitted.promise + }) + const precedence = spyOn(Precedence, "check").mockResolvedValue({}) + const abort = new AbortController() + let timer: ReturnType | undefined + let task: Promise | undefined + try { + const tool = await initTool(kind === "materialize" ? SqlMaterializeTool : SqlCheckTool) + task = tool.execute(kind === "materialize" + ? { source_warehouse: "source", sql: "SELECT id FROM items", target_table: "items" } + : { warehouse: "source", check: "nulls", sql: "SELECT id FROM items", columns: ["id"] }, context(abort.signal)) + await entered.promise + abort.abort(new Error("Session cancelled")) + const result = await Promise.race([task, new Promise((resolve) => { + timer = setTimeout(() => resolve(undefined), 1000) + })]) + expect(result?.metadata.error).toContain("Session cancelled") + admitted.resolve(connector) + await new Promise((resolve) => setImmediate(resolve)) + expect(reads).toBe(0) + } finally { + clearTimeout(timer) + admitted.resolve(connector) + await task?.catch(() => {}) + precedence.mockRestore() + get.mockRestore() + } + }) +} diff --git a/packages/opencode/test/altimate/sql-validation-adversarial.test.ts b/packages/opencode/test/altimate/sql-validation-adversarial.test.ts index 6d923eafd7..ef373e8469 100644 --- a/packages/opencode/test/altimate/sql-validation-adversarial.test.ts +++ b/packages/opencode/test/altimate/sql-validation-adversarial.test.ts @@ -11,7 +11,14 @@ import { describe, expect, test, beforeAll, afterAll, mock } from "bun:test" import { initTool } from "./tool-fixture" -// Mock DuckDB driver so sql.execute tests don't need native duckdb +// Mock DuckDB driver so sql.execute tests don't need native duckdb. +// Bun's mock.module leaks across test files: snapshot the genuine exports before +// mocking and restore them in afterAll so later DuckDB-backed tests see the real driver. +import * as realDuckdb from "@altimateai/drivers/duckdb" +const genuineDuckdb = { ...realDuckdb } +afterAll(() => { + mock.module("@altimateai/drivers/duckdb", () => genuineDuckdb) +}) mock.module("@altimateai/drivers/duckdb", () => ({ connect: async () => ({ execute: async (sql: string) => ({ @@ -281,17 +288,27 @@ describe("Adversarial: sql-classify bypass attempts", () => { // --- EXPLAIN variants --- - test("EXPLAIN SELECT is classified as write (ambiguous)", () => { + // EXPLAIN inherits the class of the statement it explains: planning a SELECT reads + // nothing but metadata, while `EXPLAIN ANALYZE` executes the statement, so an + // explained write is still a write. Treating every EXPLAIN as a write hard-denied + // read-only agents from inspecting query plans on DuckDB/SQLite. + test("EXPLAIN SELECT is classified as read", () => { const r = classifyAndCheck("EXPLAIN SELECT * FROM users") - expect(r.queryType).toBe("write") + expect(r.queryType).toBe("read") expect(r.blocked).toBe(false) }) - test("EXPLAIN ANALYZE SELECT is classified as write (ambiguous)", () => { + test("EXPLAIN ANALYZE SELECT is classified as read", () => { const r = classifyAndCheck("EXPLAIN ANALYZE SELECT * FROM users") - expect(r.queryType).toBe("write") + expect(r.queryType).toBe("read") expect(r.blocked).toBe(false) }) + + test("EXPLAIN ANALYZE of a write executes it and stays a write", () => { + expect(classifyAndCheck("EXPLAIN ANALYZE DELETE FROM users").queryType).toBe("write") + expect(classifyAndCheck("EXPLAIN UPDATE users SET a = 1").queryType).toBe("write") + expect(classifyAndCheck("EXPLAIN (ANALYZE, BUFFERS) INSERT INTO t VALUES (1)").queryType).toBe("write") + }) }) // ========================================================================== diff --git a/packages/opencode/test/altimate/sql-validation-e2e.test.ts b/packages/opencode/test/altimate/sql-validation-e2e.test.ts index c69c20421b..452c15a49c 100644 --- a/packages/opencode/test/altimate/sql-validation-e2e.test.ts +++ b/packages/opencode/test/altimate/sql-validation-e2e.test.ts @@ -83,18 +83,52 @@ describe("Tool name consistency in prompts", () => { }) }) - test("analyst prompt references altimate_core_validate (the real tool)", async () => { + test("analyst prompt references only real tool names", async () => { + // The mandatory validate/analyze ritual was removed (an A/B showed no demonstrated + // score benefit); the prompt no longer names altimate_core_validate. + // It still names the tools it relies on; each must be a registered tool id. await using tmp = await tmpdir() await Instance.provide({ directory: tmp.path, fn: async () => { const analyst = await Agent.get("analyst") expect(analyst).toBeDefined() - expect(analyst!.prompt).toContain("altimate_core_validate") + for (const name of ["sql_analyze", "sql_materialize", "answer_commit", "task", "skill", "read"]) { + expect(analyst!.prompt).toContain(name) + } + expect(analyst!.prompt).not.toContain("altimate_core_validate") }, }) }) + test("analyst prompt requires deterministic answer finalization", async () => { + const prompt = await Bun.file(path.join(import.meta.dir, "../../src/altimate/prompts/analyst.txt")).text() + const paragraph = prompt.trim().split("\n\n").at(-1) + // altimate_change start - require one field for each requested answer item + expect(paragraph).toContain( + "Finish by calling `answer_commit` with the single chosen value(s) with one field per item the request asks for (every named item, such as an entity and its related item or count, must be its own field: when the request asks for only the answer, anything left in the basis or prose is dropped), a one-or-two-sentence basis (population, grain, source object/column), or `unresolved` with the reason, then reply with exactly the text it returns and nothing else.", + ) + // altimate_change end + expect(paragraph).toContain("Always supply `basis`, even when unresolved") + expect(paragraph).toContain("it is never shown when the request asks for only the answer") + expect(paragraph).toContain("Never list excluded candidates or alternative answers") + expect(paragraph).toContain("when the request asks for only the answer or a specific format, set `answer_only`") + }) + + test("analyst prompt preserves the top-N boundary-tie contract", async () => { + const prompt = await Bun.file(path.join(import.meta.dir, "../../src/altimate/prompts/analyst.txt")).text() + expect(prompt.trim().split("\n\n").at(-1)).toContain( + "a top-N with a tie at the boundary still returns N concrete rows (note the tie briefly in `rows.note`)", + ) + }) + + test("analyst prompt unavailable-tool fallback omits the answer_only label and basis", async () => { + const prompt = await Bun.file(path.join(import.meta.dir, "../../src/altimate/prompts/analyst.txt")).text() + expect(prompt.trim().split("\n\n").at(-1)).toContain( + "If `answer_commit` is unavailable, finish with one or two sentences of basis and a final line `**Answer:** `, or `**Answer:** unable to determine — `; when the request asks for only the answer or a specific format, the final message is exactly the requested value(s) or table in the requested format, with no label and no basis (or `unable to determine — ` if unresolved); never guess.", + ) + }) + test("builder prompt contains pre-execution protocol with correct tool names", async () => { await using tmp = await tmpdir() await Instance.provide({ diff --git a/packages/opencode/test/altimate/telemetry-safety.test.ts b/packages/opencode/test/altimate/telemetry-safety.test.ts index a4fd78ba3f..5de6172599 100644 --- a/packages/opencode/test/altimate/telemetry-safety.test.ts +++ b/packages/opencode/test/altimate/telemetry-safety.test.ts @@ -146,8 +146,10 @@ describe("Telemetry Safety: Registry operations survive telemetry explosions", ( }) const result = Registry.list() - expect(result.warehouses.length).toBe(2) - expect(result.warehouses.map((w: any) => w.name).sort()).toEqual(["pg", "sf"]) + // The implicit `scratch` warehouse is appended whenever real warehouses exist. + const configured = result.warehouses.filter((w: any) => w.name !== "scratch") + expect(configured.length).toBe(2) + expect(configured.map((w: any) => w.name).sort()).toEqual(["pg", "sf"]) // Census telemetry was attempted and threw — but list worked fine }) @@ -158,7 +160,7 @@ describe("Telemetry Safety: Registry operations survive telemetry explosions", ( for (let i = 0; i < 10; i++) { const r = Registry.list() - expect(r.warehouses.length).toBe(1) + expect(r.warehouses.filter((w: any) => w.name !== "scratch").length).toBe(1) } }) @@ -225,7 +227,7 @@ describe("Telemetry Safety: Telemetry calls are attempted but swallowed", () => // This should NOT throw even though telemetry is exploding const result = Registry.list() - expect(result.warehouses.length).toBe(1) + expect(result.warehouses.filter((w: any) => w.name !== "scratch").length).toBe(1) expect(result.warehouses[0].name).toBe("pg") }) }) diff --git a/packages/opencode/test/altimate/telemetry-signals.test.ts b/packages/opencode/test/altimate/telemetry-signals.test.ts index 378b09c45b..71b388af1b 100644 --- a/packages/opencode/test/altimate/telemetry-signals.test.ts +++ b/packages/opencode/test/altimate/telemetry-signals.test.ts @@ -961,24 +961,29 @@ describe("altimate-core failure isolation", () => { require("path").join(__dirname, "../../src/altimate/tools/sql-execute.ts"), "utf8", ) - const execIdx = src.indexOf('Dispatcher.call("sql.execute"') const responseErrorIdx = src.indexOf("if (responseError !== undefined) {") - const fpCallIdx = src.indexOf("computeSqlFingerprint(args.query)") - const formatIdx = src.indexOf("formatResult(result)") + // query_from also dispatches a generator query earlier. Check the target + // execution and fingerprint its resolved SQL (direct or generated). + const execIdx = src.lastIndexOf('Dispatcher.call("sql.execute"', responseErrorIdx) + const fpCallIdx = src.indexOf("computeSqlFingerprint(sql, dialect)") + // The success-path formatter was renamed from formatResult(result) to + // formatSqlResult(result, …) when the result contract (preview envelope + + // JSONL spill) landed; the ordering invariant is unchanged. + const formatIdx = src.indexOf("formatSqlResult(result") const guardComment = src.indexOf("Fingerprinting must never break query execution") expect(execIdx).toBeGreaterThan(0) expect(responseErrorIdx).toBeGreaterThan(execIdx) // The single fingerprint call sits strictly between the error check and - // formatResult() — i.e. only on the success path — and BEFORE formatting, so a - // formatResult() throw cannot cause a genuinely-executed query to go uncounted. + // formatSqlResult() — i.e. only on the success path — and BEFORE formatting, so a + // formatSqlResult() throw cannot cause a genuinely-executed query to go uncounted. expect(fpCallIdx).toBeGreaterThan(responseErrorIdx) expect(formatIdx).toBeGreaterThan(fpCallIdx) expect(guardComment).toBeGreaterThan(fpCallIdx) expect(guardComment).toBeLessThan(formatIdx) // Exactly one call site — no more "every outcome" fan-out. - const callSites = [...src.matchAll(/computeSqlFingerprint\(args\.query\)/g)] + const callSites = [...src.matchAll(/\bcomputeSqlFingerprint\s*\(/g)] expect(callSites.length).toBe(1) // Neither the result-error branch nor the catch block references it. diff --git a/packages/opencode/test/altimate/tool-response-normalization.test.ts b/packages/opencode/test/altimate/tool-response-normalization.test.ts index 1abea2241e..f72192aee9 100644 --- a/packages/opencode/test/altimate/tool-response-normalization.test.ts +++ b/packages/opencode/test/altimate/tool-response-normalization.test.ts @@ -4,6 +4,7 @@ import * as Dispatcher from "../../src/altimate/native/dispatcher" import { SqlAnalyzeTool } from "../../src/altimate/tools/sql-analyze" import { SchemaInspectTool } from "../../src/altimate/tools/schema-inspect" import { LineageCheckTool } from "../../src/altimate/tools/lineage-check" +import { SchemaCacheStatusTool } from "../../src/altimate/tools/schema-cache-status" import { AltimateCoreColumnLineageTool } from "../../src/altimate/tools/altimate-core-column-lineage" const ctx = { @@ -158,6 +159,18 @@ describe("tool response normalization", () => { expect(result.metadata.success).toBe(false) expect(result.metadata.error).toContain("ECONNREFUSED") + expect(result.output).not.toContain("Ensure the dispatcher is running") + }) + + test("schema_cache_status preserves native failures without dispatcher startup advice", async () => { + Dispatcher.register("schema.cache_status", async () => { + throw new Error("Schema cache is unavailable") + }) + const tool = await initTool(SchemaCacheStatusTool) + const result = await tool.execute({}, ctx as any) + + expect(result.metadata.error).toBe("Schema cache is unavailable") + expect(result.output).toBe("Failed to get cache status: Schema cache is unavailable") }) test("altimate_core_column_lineage unwraps data envelopes and errors cleanly", async () => { diff --git a/packages/opencode/test/altimate/tools/answer-commit.test.ts b/packages/opencode/test/altimate/tools/answer-commit.test.ts new file mode 100644 index 0000000000..23a43fe90e --- /dev/null +++ b/packages/opencode/test/altimate/tools/answer-commit.test.ts @@ -0,0 +1,1242 @@ +import { describe, expect, test } from "bun:test" +import Ajv2020 from "ajv/dist/2020" +import { rejects } from "node:assert/strict" +import { Effect } from "effect" +import { AnswerCommit } from "../../../src/altimate/tools/answer-commit" +import * as answerCommitModule from "../../../src/altimate/tools/answer-commit" +import { MessageID, SessionID } from "../../../src/session/schema" +import { ToolJsonSchema } from "../../../src/tool/json-schema" +import { initTool, toolInfo } from "../tool-fixture" + +test("answer_commit exposes the namespace projection", () => { + expect(answerCommitModule).toHaveProperty("AnswerCommit.AnswerCommitTool", AnswerCommit.AnswerCommitTool) + expect(answerCommitModule).toHaveProperty("AnswerCommit.renderAnswer", AnswerCommit.renderAnswer) +}) + +describe("answer_commit boolean tolerance", () => { + test.each([true, "true", "TRUE", "TrUe", 1])("answer_only %s suppresses basis and labels", async (answer_only) => { + const payload = { + answer_only, + basis: "Counted records at record grain using records.id.", + fields: [{ name: "Count", value: 2 }], + } + expect(AnswerCommit.renderAnswer(payload)).toBe("2") + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe("2") + }) + + test.each([false, "false", "FALSE", "FaLsE", 0])("answer_only %s renders the basis", async (answer_only) => { + const basis = "Counted records at record grain using records.id." + const payload = { answer_only, basis, fields: [{ name: "Count", value: 2 }] } + expect(AnswerCommit.renderAnswer(payload)).toBe(`${basis}\n\n**Answer:** Count: 2`) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(`${basis}\n\n**Answer:** Count: 2`) + }) + + test.each(["yes", "no", "1", "0", 2, -1])("rejects invalid answer_only %s", async (answer_only) => { + const payload = { + answer_only, + basis: "Counted records at record grain using records.id.", + fields: [{ name: "", value: 2 }], + } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/answer_only.*boolean/i) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), /answer_only.*boolean/i) + }) + + test("keeps the advertised answer_only value boolean", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.jsonSchema?.properties?.answer_only).toMatchObject({ anyOf: [{ type: "boolean" }, {}, {}, {}, {}] }) + }) +}) + +describe("answer_commit required basis", () => { + test.each([undefined, false, "false", 0, null, "", [], {}, true, "true", "TRUE", "TrUe", 1].map((value) => [value]))( + "answer_only %j requires basis for every answer shape", + async (answer_only) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const shape of [ + { fields: [{ name: "", value: 2 }] }, + { rows: { columns: ["Count"], values: [[2]] } }, + { unresolved: { reason: "No matching records." } }, + ]) { + const payload = { ...shape, answer_only } + const error = /basis.*required.*population.*grain.*source object\/column.*caveats/i + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + } + }, + ) + + test.each([undefined, null, "", " \t\r\n ", [], {}].map((value) => [value]))( + "basis filler %j cannot replace a required basis", + async (basis) => { + const payload = { fields: [{ name: "", value: 2 }], basis } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/basis.*required/i) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), /basis.*required/i) + }, + ) + + test.each([undefined, null, "", " \t\r\n ", [], {}].map((value) => [value]))( + "answer_only rejects absent basis %j", + async (basis) => { + const payload = { answer_only: "true", fields: [{ name: "Count", value: 2 }], basis } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/basis.*required/i) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), /basis.*required/i) + }, + ) + + test("description and schema explain the basis requirement and attribution source", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain( + "Always supply `basis`; it is never shown when the request asks for only the answer", + ) + expect(tool.description).toContain( + "one or two sentences, at most 400 characters, naming population, grain, the source object/column that supplies the requested entity or value, and caveats", + ) + expect(tool.description).toContain( + "Resolve policy eligibility separately from metric and entity attribution: a rule about a related object does not change which object supplies the requested entity. Say in `basis` which source object and column supply it.", + ) + expect(structuredClone(tool.jsonSchema?.properties?.basis)).toMatchObject({ + type: "string", + description: expect.stringMatching( + /always required.*one or two sentences, at most 400 characters.*population.*grain.*source object\/column.*caveats.*never rendered with answer_only/i, + ), + }) + expect(tool.jsonSchema?.required).toContain("basis") + }) +}) + +describe("answer_commit validation repair", () => { + test.each([ + ["invalid boolean", { answer_only: "yes", fields: [{ name: "", value: 2 }] }, /answer_only/], + ["missing basis", { fields: [{ name: "", value: 2 }] }, /basis/], + [ + "answer_only fields missing basis", + { answer_only: true, fields: [{ name: "Id", value: "requested-id" }] }, + /basis/, + ], + [ + "answer_only rows missing basis", + { answer_only: true, rows: { columns: ["Id"], values: [["requested-id"]] } }, + /basis/, + ], + [ + "answer_only unresolved missing basis", + { answer_only: true, unresolved: { reason: "No matching records." } }, + /basis/, + ], + ["missing value", { fields: [{ name: "Count" }] }, /fields.*value/], + ["missing shape", { basis: "Counted records at record grain using records.id." }, /fields, rows, or unresolved/], + ] as [string, unknown, RegExp][])( + "%s returns a one-line error and a valid repair example", + async (_name, payload, expected) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const execute of [() => AnswerCommit.renderAnswer(payload), () => tool.execute(payload, context)]) { + let message = "" + try { + await execute() + } catch (error) { + message = error instanceof Error ? error.message : String(error) + } + const lines = message.split("\n") + expect(lines[0]).toMatch(expected) + expect(lines[1]).toStartWith("Minimal valid example: ") + const exampleText = lines[1]!.match(/^Minimal valid example: `(.*)`\.?$/)?.[1] + expect(exampleText).toBeDefined() + const example = JSON.parse(exampleText!) + expect(AnswerCommit.renderAnswer(example)).toBeString() + expect((await tool.execute(example, context)).output).toBe(AnswerCommit.renderAnswer(example)) + } + }, + ) +}) + +test("answer_commit executes synchronously with native Effect permissions", async () => { + const info = await toolInfo(AnswerCommit.AnswerCommitTool) + const tool = await Effect.runPromise(info.init()) + const asks: unknown[] = [] + const result = Effect.runSync( + tool.execute( + { fields: [{ name: "Count", value: 2 }], basis: "Counted records at record grain using records.id." }, + { + ...context, + sessionID: SessionID.make("ses_test"), + messageID: MessageID.make("msg_test"), + metadata: () => Effect.void, + ask: (input) => Effect.sync(() => void asks.push(input)), + }, + ), + ) + expect(result.output).toBe("Counted records at record grain using records.id.\n\n**Answer:** Count: 2") + expect(asks).toEqual([{ permission: "answer_commit", patterns: ["*"], always: ["*"], metadata: {} }]) +}) + +const recordBasis = "Used all records at record grain from records.value." + +// altimate_change start - preserve the requested tabular output format +describe("answer_commit row formats", () => { + test.each([ + { + name: "csv quotes commas, quotes and newlines and includes headers", + rows: { + format: "csv", + columns: ['Name, "label"', "Value"], + values: [ + ['West, "Co"', null], + ["line\r\nbreak", " 001.20|\\ "], + ], + }, + expected: '"Name, ""label""",Value\n"West, ""Co""",\n"line\r\nbreak", 001.20|\\ ', + }, + { + name: "tsv quotes tabs, quotes and newlines and includes headers", + rows: { + format: "tsv", + columns: ["Name\tlabel", "Value"], + values: [ + ["West\tCo", null], + ['a"b', "line\nbreak"], + ["line\rbreak", "comma, unchanged"], + ], + }, + expected: '"Name\tlabel"\tValue\n"West\tCo"\t\n"a""b"\t"line\nbreak"\n"line\rbreak"\tcomma, unchanged', + }, + { + name: "lines renders a single-column list without headers", + rows: { format: "lines", columns: ["Name"], values: [["West"], ["East"]] }, + expected: "West\nEast", + }, + { + name: "lines separates two-column cells with one space", + rows: { + format: "lines", + columns: ["Name", "Count"], + values: [ + ["West|\\", 5], + ["East", "001.20"], + ["Missing", null], + ], + precision: { Count: 2 }, + }, + expected: "West|\\ 5.00\nEast 001.20\nMissing null", + }, + { + name: "csv applies precision to numeric cells and preserves strings", + rows: { + format: "csv", + columns: ["Count", "Rate", "Unspecified"], + values: [ + [5, 1.234, 2.5], + ["005.00", "1.2300", null], + ], + precision: { Count: 2, Rate: 1 }, + }, + expected: "Count,Rate,Unspecified\n5.00,1.2,2.5\n005.00,1.2300,", + }, + { + name: "default remains markdown", + rows: { + columns: ["Name", "Count"], + values: [ + ["West|\\", 5], + ["East", null], + ], + }, + expected: "| Name | Count |\n|---|---|\n| West\\|\\\\ | 5 |\n| East | null |", + }, + { + name: "explicit markdown retains table rendering", + rows: { format: "markdown", columns: ["Count"], values: [[5]], precision: { Count: 2 } }, + expected: "| Count |\n|---|\n| 5.00 |", + }, + ])("$name", async ({ rows, expected }) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const answer_only of [true, false]) { + const payload = { basis: recordBasis, answer_only, rows: { ...rows, note: "Result note." } } + const output = answer_only ? expected : `${recordBasis}\n\n**Answer:**\n${expected}\nResult note.` + expect(AnswerCommit.renderAnswer(payload)).toBe(output) + expect((await tool.execute(payload, context)).output).toBe(output) + } + }) + + test("description and schema advertise the tabular formats", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toMatch(/when the request names a tabular format, set rows.format accordingly/i) + expect(structuredClone(tool.jsonSchema?.properties?.rows)).toMatchObject({ + anyOf: expect.arrayContaining([ + expect.objectContaining({ + properties: expect.objectContaining({ + format: expect.objectContaining({ + anyOf: expect.arrayContaining([{ type: "string", enum: ["markdown", "csv", "tsv", "lines"] }]), + description: expect.stringMatching(/markdown.*default.*csv.*tsv.*lines/i), + }), + }), + }), + ]), + }) + }) + + test.each(["csv", "tsv", "lines"])("%s retains the rendered-size cap", async (format) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const payload = { + basis: recordBasis, + answer_only: true, + rows: { format, columns: ["Value"], values: [['"'.repeat(format === "lines" ? 60_001 : 30_000)]] }, + } + const error = /60,000 characters.*aggregate.*narrow/i + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + }) +}) +// altimate_change end + +describe("answer_commit numeric safety", () => { + test("description explains numeric precision and exact decimal strings", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain( + "Numbers use JavaScript precision; integers must be safe. Pass exact decimal values, trailing zeros, or currency strings as strings.", + ) + }) + + test.each(["9007199254740993", "-9007199254740993", "1e30"])("rejects unsafe field number %s", async (value) => { + const payload = JSON.parse(`{"fields":[{"name":"Count","value":${value}}]}`) + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/fields.*value.*safe.*string/i) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), /fields.*value.*safe.*string/i) + }) + + test.each(["9007199254740993", "-9007199254740993", "1e30"])("rejects unsafe table number %s", async (value) => { + const payload = JSON.parse(`{"rows":{"columns":["Count"],"values":[[${value}]]}}`) + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/rows.*values.*safe.*string/i) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), /rows.*values.*safe.*string/i) + }) + + test.each([NaN, Infinity, -Infinity])("rejects nonfinite number %s in fields and rows", async (value) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const shape of [{ fields: [{ name: "", value }] }, { rows: { columns: ["Value"], values: [[value]] } }]) { + const payload = { basis: recordBasis, ...shape } + const error = /fields.*value|rows.*values/i + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + } + }) + + test.each([ + 999999999999999, + -999999999999999, + Number.MAX_SAFE_INTEGER, + Number.MIN_SAFE_INTEGER, + 1234567890123456.7, + -1234567890123456.7, + 0.1234567890123456, + 18.440000534057617, + 46919.15, + 12, + 0.1, + -3.5e-7, + 1.25, + "9007199254740993", + "-9007199254740993", + "1234567890123456.7", + "9007199254740991.1", + ])("preserves safe numbers and numeric strings: %s", async (value) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const fields = { basis: recordBasis, fields: [{ name: "", value }] } + const rows = { basis: recordBasis, rows: { columns: ["Count"], values: [[value]] } } + const renderedRow = value === -3.5e-7 ? "-0.00000035" : String(value) + expect(AnswerCommit.renderAnswer(fields)).toBe(`${recordBasis}\n\n**Answer:** ${value}`) + expect((await tool.execute(fields, context)).output).toBe(`${recordBasis}\n\n**Answer:** ${value}`) + expect(AnswerCommit.renderAnswer(rows)).toBe(`${recordBasis}\n\n**Answer:**\n| Count |\n|---|\n| ${renderedRow} |`) + expect((await tool.execute(rows, context)).output).toBe( + `${recordBasis}\n\n**Answer:**\n| Count |\n|---|\n| ${renderedRow} |`, + ) + }) +}) + +describe("answer_commit display precision", () => { + test.each([ + ["markdown", "| Average |\n|---|\n| 5.00 |\n| 4.18 |"], + ["csv", "Average\n5.00\n4.18"], + ["tsv", "Average\n5.00\n4.18"], + ["lines", "5.00\n4.18"], + ])("%s infers a shared numeric column scale", async (format, expected) => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { format, columns: ["Average"], values: [[5], [4.18]] }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test("infers column scales independently while preserving strings and nulls", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { + columns: ["Average", "Rate", "Count"], + values: [ + [5, 2, 3], + [4.18, 1.234, 4], + ["001.2000", null, "5.00"], + ], + }, + } + const expected = + "| Average | Rate | Count |\n|---|---|---|\n| 5.00 | 2.000 | 3 |\n| 4.18 | 1.234 | 4 |\n| 001.2000 | null | 5.00 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test("explicit column precision overrides inference without changing other columns", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { + columns: ["Average", "Rate"], + values: [ + [5, 2], + [4.18, 1.234], + ], + precision: { Average: 1 }, + }, + } + const expected = "| Average | Rate |\n|---|---|\n| 5.0 | 2.000 |\n| 4.2 | 1.234 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test("float-noise cells do not widen the inferred column scale", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[0.30000000000000004], [5], [4.18], [18.440000534057617]] }, + } + const expected = "| Value |\n|---|\n| 0.30 |\n| 5.00 |\n| 4.18 |\n| 18.44 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test("a genuine long decimal is not treated as float noise next to a short one", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[1234567.8901234], [1.2]] }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe( + "| Value |\n|---|\n| 1234567.8901234 | \n| 1.2000000 |".replace(" | \n", " |\n"), + ) + }) + + test("a decimal a few ulps from a six-place rounding is kept", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[1.000000000000001], [2.1]] }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe("| Value |\n|---|\n| 1.000000000000001 |\n| 2.100000000000000 |") + }) + + test("a column of only float-noise cells uses the scale of their rounded values", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[0.30000000000000004], [7]], format: "lines" as const }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe("0.3\n7.0") + }) + + test("recognized noise keeps its rounded scale beside coarser cells", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[18.440000534057617], [1.2]], format: "lines" as const }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe("18.44\n1.20") + }) + + test("genuine long decimals are preserved beside clean cells", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[4.18], [0.123456789012], [0.1234567890123]], format: "lines" as const }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe("4.1800000000000\n0.1234567890120\n0.1234567890123") + }) + + test("genuine short high-scale values still set the column scale", () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[1.5], [0.1234567]], format: "lines" as const }, + } + expect(AnswerCommit.renderAnswer(payload)).toBe("1.5000000\n0.1234567") + }) + + test("inferred decimal scale supports small scientific values", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [[1e-101], [0]] }, + } + const expected = `| Value |\n|---|\n| 0.${"0".repeat(100)}1 |\n| 0.${"0".repeat(101)} |` + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test.each([ + [18.440000534057617, "18.44"], + [1.005, "1.00"], + ])("explicit precision rounds %s consistently in fields and rows", async (value, expected) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const shape of [ + { fields: [{ name: "", value, precision: 2 }] }, + { rows: { columns: ["Value"], values: [[value]], precision: { Value: 2 }, format: "lines" } }, + ]) { + const payload = { basis: recordBasis, answer_only: true, ...shape } + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + expect((await tool.execute(payload, context)).output).toBe(expected) + } + }) + + test("description and field and row schemas state the allowed precision range", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const range = /integer from 0 to 10 \(inclusive\)/i + expect(tool.description).toMatch(range) + expect(structuredClone(tool.jsonSchema?.properties?.fields)).toMatchObject({ + anyOf: expect.arrayContaining([ + expect.objectContaining({ + items: expect.objectContaining({ + properties: expect.objectContaining({ + precision: expect.objectContaining({ description: expect.stringMatching(range) }), + }), + }), + }), + ]), + }) + expect(structuredClone(tool.jsonSchema?.properties?.rows)).toMatchObject({ + anyOf: expect.arrayContaining([ + expect.objectContaining({ + properties: expect.objectContaining({ + precision: expect.objectContaining({ description: expect.stringMatching(range) }), + }), + }), + ]), + }) + }) + + test.each([-1, 11, 14, 1.5, "2", true])("invalid precision %j names the allowed range", async (precision) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const shape of [ + { fields: [{ name: "", value: 1.5, precision }] }, + { rows: { columns: ["Value"], values: [[5]], precision: { Value: precision } } }, + ]) { + const payload = { basis: recordBasis, ...shape } + const error = /precision.*integer from 0 to 10 \(inclusive\)/i + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + } + }) + + test.each([ + ["numeric integers use fixed decimals", 5, 2, "5.00"], + ["without precision uses the shortest numeric form", 5, undefined, "5"], + ["numeric strings retain trailing zeros", "5.00", 0, "5.00"], + ["numeric strings retain leading zeros", "001.20", 10, "001.20"], + ["text is unchanged", "unchanged", 2, "unchanged"], + ["null is unchanged", null, 2, "null"], + ["zero precision rounds numeric cells", 1.6, 0, "2"], + ["maximum precision includes ten decimals", 5, 10, "5.0000000000"], + ] as [string, string | number | null, number | undefined, string][])( + "rows %s", + async (_name, value, precision, rendered) => { + const payload = { + basis: recordBasis, + rows: { + columns: ["Value"], + values: [[value]], + ...(precision === undefined ? {} : { precision: { Value: precision } }), + }, + } + const expected = `${recordBasis}\n\n**Answer:**\n| Value |\n|---|\n| ${rendered} |` + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }, + ) + + test("row precision applies independently by column name", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { + columns: ["Quantity", "Rate", "Unspecified"], + values: [ + [5, 1.234, 5], + ["5.00", null, "001.20"], + ], + precision: { Rate: 1, Quantity: 2 }, + }, + } + const expected = "| Quantity | Rate | Unspecified |\n|---|---|---|\n| 5.00 | 1.2 | 5 |\n| 5.00 | null | 001.20 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test.each([{ revenue: 2 }, { revenue: 2, Missing: 1 }])( + "row precision rejects unknown column names %j and lists available columns", + async (precision) => { + const payload = { + basis: recordBasis, + rows: { columns: ["Revenue"], values: [[5]], precision }, + } + const error = `Unknown rows.precision keys: ${JSON.stringify(Object.keys(precision))}; available columns: ["Revenue"]` + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), (cause) => cause instanceof Error && cause.message.includes(error)) + }, + ) + + test("row precision requires unique column labels", async () => { + const payload = { + basis: recordBasis, + rows: { columns: ["Amount", "Amount"], values: [[5, 1.234]], precision: { Amount: 2 } }, + } + const error = /precision requires unique column labels/i + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await rejects(tool.execute(payload, context), error) + }) + + test("duplicate row column labels infer scale independently by position", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { + columns: ["Amount", "Amount"], + values: [ + [5, 1.234], + [4.18, 2], + ], + }, + } + const expected = "| Amount | Amount |\n|---|---|\n| 5.00 | 1.234 |\n| 4.18 | 2.000 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test("row precision accepts exact column names", async () => { + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Revenue"], values: [[5]], precision: { Revenue: 2 } }, + } + const expected = "| Revenue |\n|---|\n| 5.00 |" + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) +}) + +describe("answer_commit rendered length limit", () => { + const cap = 60_000 + const error = /60,000 characters.*aggregate.*narrow.*write the full table to a file.*commit the summary/i + + test("rejects rows whose rendered text exceeds the cap", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [["x".repeat(cap)]] }, + } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + }) + + test.each([cap - 1, cap])("accepts rows with %i rendered characters", async (length) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const overhead = "| Value |\n|---|\n| |".length + const payload = { + basis: recordBasis, + answer_only: true, + rows: { columns: ["Value"], values: [["x".repeat(length - overhead)]] }, + } + const rendered = AnswerCommit.renderAnswer(payload) + expect(rendered.length).toBe(length) + expect((await tool.execute(payload, context)).output).toBe(rendered) + }) + + test("counts escaped table cells and rendered basis toward the cap", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const payload = { + basis: recordBasis, + rows: { columns: ["Value"], values: [["|".repeat(cap / 2)]] }, + } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + }) + + test("applies the rendered cap to fields and unresolved answers", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const shape of [ + { fields: [{ name: "", value: "x".repeat(cap) }] }, + { unresolved: { reason: "x".repeat(cap) } }, + ]) { + const payload = { basis: recordBasis, ...shape } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + await rejects(tool.execute(payload, context), error) + } + }) + + test("documents the rendered character cap and recovery in the tool description", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toMatch(error) + }) +}) + +describe("renderAnswer golden text", () => { + const cases: [string, unknown, string][] = [ + [ + "single unnamed field", + { basis: recordBasis, fields: [{ name: "", value: "West" }] }, + `${recordBasis}\n\n**Answer:** West`, + ], + [ + "single named field", + { basis: recordBasis, fields: [{ name: "Region", value: "West" }] }, + `${recordBasis}\n\n**Answer:** Region: West`, + ], + [ + "single empty name with units", + { basis: recordBasis, fields: [{ name: "", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single whitespace-only name with units", + { basis: recordBasis, fields: [{ name: " \t\r\n ", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single Answer name with units", + { basis: recordBasis, fields: [{ name: "Answer", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single padded mixed-case answer name with units", + { basis: recordBasis, fields: [{ name: " aNsWeR ", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single uppercase result name with units", + { basis: recordBasis, fields: [{ name: "RESULT", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single padded mixed-case value name with units", + { basis: recordBasis, fields: [{ name: " vAlUe ", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** 42 widgets`, + ], + [ + "single real name with units keeps its label", + { basis: recordBasis, fields: [{ name: "Widget count", value: "42", units: "widgets" }] }, + `${recordBasis}\n\n**Answer:** Widget count: 42 widgets`, + ], + [ + "multiple fields keep generic labels", + { + basis: recordBasis, + fields: [ + { name: "Answer", value: "42", units: "widgets" }, + { name: "RESULT", value: 2 }, + { name: " vAlUe ", value: 3 }, + { name: "", value: 4 }, + ], + }, + `${recordBasis}\n\n**Answer:** Answer: 42 widgets; RESULT: 2; vAlUe : 3; 4`, + ], + [ + "basis and units", + { basis: "Summed completed orders.", fields: [{ name: "Revenue", value: 42, units: "USD" }] }, + "Summed completed orders.\n\n**Answer:** Revenue: 42 USD", + ], + [ + "multiple fields", + { + basis: recordBasis, + fields: [ + { name: "Orders", value: 3 }, + { name: "Revenue", value: 12.5, units: "USD" }, + ], + }, + `${recordBasis}\n\n**Answer:** Orders: 3; Revenue: 12.5 USD`, + ], + [ + "fixed numeric precision", + { basis: recordBasis, fields: [{ name: "Rate", value: 1.2, precision: 3 }] }, + `${recordBasis}\n\n**Answer:** Rate: 1.200`, + ], + [ + "zero precision", + { basis: recordBasis, fields: [{ name: "Rate", value: 1.6, precision: 0 }] }, + `${recordBasis}\n\n**Answer:** Rate: 2`, + ], + [ + "maximum precision", + { basis: recordBasis, fields: [{ name: "", value: 0.5, precision: 10 }] }, + `${recordBasis}\n\n**Answer:** 0.5000000000`, + ], + [ + "integers stay integers", + { basis: recordBasis, fields: [{ name: "", value: 7, precision: 2 }] }, + `${recordBasis}\n\n**Answer:** 7`, + ], + [ + "zero is a value", + { basis: recordBasis, fields: [{ name: "", value: 0, precision: 2 }] }, + `${recordBasis}\n\n**Answer:** 0`, + ], + [ + "precision leaves text intact", + { basis: recordBasis, fields: [{ name: "", value: "001.20", precision: 1 }] }, + `${recordBasis}\n\n**Answer:** 001.20`, + ], + [ + "answer_only single field", + { + basis: "Summed all orders at order grain using orders.amount.", + answer_only: true, + fields: [{ name: "Revenue", value: 1.2, units: "USD", precision: 2 }], + }, + "1.20 USD", + ], + [ + "answer_only multiple fields", + { + answer_only: true, + basis: "Counted all orders at order grain using orders.id and summed orders.amount for revenue.", + fields: [ + { name: "Orders", value: 3 }, + { name: "Revenue", value: 12, units: "USD" }, + ], + }, + "3; 12 USD", + ], + [ + "rows with basis", + { + basis: recordBasis, + rows: { + columns: ["Region", "Orders"], + values: [ + ["West", 3], + ["East", 2], + ], + }, + }, + `${recordBasis}\n\n**Answer:**\n| Region | Orders |\n|---|---|\n| West | 3 |\n| East | 2 |`, + ], + [ + "rows with basis and note", + { + basis: "Grouped completed orders.", + rows: { columns: ["Region", "Orders"], values: [["West", 3]], note: "Includes all regions." }, + }, + "Grouped completed orders.\n\n**Answer:**\n| Region | Orders |\n|---|---|\n| West | 3 |\nIncludes all regions.", + ], + [ + "answer_only rows omit basis and note", + { + answer_only: true, + basis: "Grouped completed orders.", + rows: { columns: ["Orders"], values: [[3]], note: "This note is omitted." }, + }, + "| Orders |\n|---|\n| 3 |", + ], + [ + "null and empty table cells", + { basis: recordBasis, rows: { columns: ["Value"], values: [[null], [""]] } }, + `${recordBasis}\n\n**Answer:**\n| Value |\n|---|\n| null |\n| |`, + ], + [ + "table cells preserve their boundaries", + { basis: recordBasis, rows: { columns: ["A|B"], values: [["first\nsecond|third"]] } }, + `${recordBasis}\n\n**Answer:**\n| A\\|B |\n|---|\n| first second\\|third |`, + ], + [ + "table headers and cells escape backslashes before pipes", + { + basis: recordBasis, + rows: { columns: [String.raw`A\|B`, String.raw`C\\|D`], values: [[String.raw`a\|b`, String.raw`c\\|d`]] }, + }, + [ + recordBasis, + "", + "**Answer:**", + String.raw`| A\\\|B | C\\\\\|D |`, + "|---|---|", + String.raw`| a\\\|b | c\\\\\|d |`, + ].join("\n"), + ], + [ + "table headers and cells flatten all line endings to spaces", + { basis: recordBasis, rows: { columns: ["A\r\nB\rC\nD"], values: [["a\r\nb\rc\nd"]] } }, + `${recordBasis}\n\n**Answer:**\n| A B C D |\n|---|\n| a b c d |`, + ], + [ + "unresolved with basis", + { basis: "Checked the requested period.", unresolved: { reason: "No matching rows." } }, + "Checked the requested period.\n\n**Answer:** unable to determine — No matching rows.", + ], + [ + "answer_only unresolved retains its status and hides the supplied basis", + { answer_only: true, basis: recordBasis, unresolved: { reason: "No matching rows." } }, + "unable to determine — No matching rows.", + ], + [ + "two sentences and a decimal", + { basis: "The rate is 1.25. There are two orders!", fields: [{ name: "", value: 2 }] }, + "The rate is 1.25. There are two orders!\n\n**Answer:** 2", + ], + [ + "unpunctuated basis", + { basis: "From completed orders", fields: [{ name: "", value: 2 }] }, + "From completed orders\n\n**Answer:** 2", + ], + [ + "unused object and string fillers", + { + fields: [{ name: "", value: 2, units: "", precision: "" }], + rows: {}, + unresolved: "", + basis: recordBasis, + readings: [], + answer_only: "", + }, + `${recordBasis}\n\n**Answer:** 2`, + ], + [ + "unused array fillers", + { + answer_only: true, + fields: [], + rows: { columns: ["Count"], values: [[2]], note: "" }, + unresolved: {}, + basis: recordBasis, + readings: "", + }, + "| Count |\n|---|\n| 2 |", + ], + [ + "whitespace-only units are absent", + { basis: recordBasis, fields: [{ name: "", value: 2, units: " \t\r\n " }] }, + `${recordBasis}\n\n**Answer:** 2`, + ], + [ + "whitespace-only note is absent", + { basis: recordBasis, rows: { columns: ["Count"], values: [[2]], note: " \t\r\n " } }, + `${recordBasis}\n\n**Answer:**\n| Count |\n|---|\n| 2 |`, + ], + [ + "advisory readings do not render", + { + basis: recordBasis, + fields: [{ name: "", value: 2 }], + readings: [{ clause: "month", reading: "calendar month", result_summary: "2", decided_by: "request" }], + }, + `${recordBasis}\n\n**Answer:** 2`, + ], + ] + + test.each(cases)("%s", async (_name, payload, expected) => { + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) +}) + +describe("renderAnswer strict-schema null fillers", () => { + test.each(["precision", "units"])("null %s is absent", (key) => { + expect(AnswerCommit.renderAnswer({ basis: recordBasis, fields: [{ name: "", value: 1.25, [key]: null }] })).toBe( + `${recordBasis}\n\n**Answer:** 1.25`, + ) + }) + + test.each(["readings", "answer_only"])("null %s is absent", (key) => { + expect(AnswerCommit.renderAnswer({ basis: recordBasis, fields: [{ name: "Count", value: 2 }], [key]: null })).toBe( + `${recordBasis}\n\n**Answer:** Count: 2`, + ) + }) + + test("null note is absent", () => { + expect( + AnswerCommit.renderAnswer({ basis: recordBasis, rows: { columns: ["Count"], values: [[2]], note: null } }), + ).toBe(`${recordBasis}\n\n**Answer:**\n| Count |\n|---|\n| 2 |`) + }) +}) + +describe("renderAnswer basis length bound", () => { + test("accepts a two-sentence basis containing U.S. and e.g.", async () => { + const basis = "Counted U.S. orders at order grain from orders.id. Excluded cancelled orders, e.g. pending refunds." + const payload = { basis, fields: [{ name: "", value: 2 }] } + const expected = `${basis}\n\n**Answer:** 2` + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test.each(["First. Second? Third!", "one.\ntwo.\nthree.", "One.\n\nTwo.\n\nThree."])( + "accepts punctuation within the length bound: %s", + (basis) => { + expect(AnswerCommit.renderAnswer({ basis, fields: [{ name: "", value: 2 }] })).toBe(`${basis}\n\n**Answer:** 2`) + }, + ) + + test("accepts exactly 400 basis characters", async () => { + expect(answerCommitModule.MAX_BASIS_CHARACTERS).toBe(400) + const basis = "x".repeat(400) + const payload = { basis, fields: [{ name: "", value: 2 }] } + const expected = `${basis}\n\n**Answer:** 2` + expect(AnswerCommit.renderAnswer(payload)).toBe(expected) + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect((await tool.execute(payload, context)).output).toBe(expected) + }) + + test.each(["x".repeat(401), ` ${"x".repeat(399)} `])( + "rejects 401 raw basis characters with the named bound", + async (basis) => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + for (const answer_only of [false, true]) { + const payload = { basis, answer_only, fields: [{ name: "", value: 2 }] } + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(/basis.*400 characters/i) + await rejects(tool.execute(payload, context), /basis.*400 characters/i) + } + }, + ) +}) + +describe("renderAnswer structural validation", () => { + test("optional array fillers accept only empty arrays", async () => { + expect( + AnswerCommit.renderAnswer({ + answer_only: true, + fields: [{ name: "", value: 2, precision: [], units: [] }], + basis: recordBasis, + }), + ).toBe("2") + for (const filler of [[null], [0], [""], [{}], [[]]]) { + expect(() => AnswerCommit.renderAnswer({ fields: [{ name: "", value: 2, precision: filler }] })).toThrow( + /precision/i, + ) + expect(() => AnswerCommit.renderAnswer({ fields: [{ name: "", value: 2, units: filler }] })).toThrow(/units/i) + expect(() => AnswerCommit.renderAnswer({ fields: [{ name: "", value: 2 }], basis: filler })).toThrow(/basis/i) + } + + // Empty tuples parse the same fillers but emit invalid draft 2020-12 prefixItems. + const info = await toolInfo(AnswerCommit.AnswerCommitTool) + const tool = await Effect.runPromise(info.init()) + const ajv = new Ajv2020({ strict: false, validateFormats: false }) + expect(ajv.validateSchema(ToolJsonSchema.fromTool({ id: info.id, ...tool }))).toBe(true) + }) + + test.each([ + ["empty value", { fields: [{ name: "Count", value: "" }] }, /fields.*value.*non-empty/i], + ["blank value", { fields: [{ name: "Count", value: " " }] }, /fields.*value.*non-empty/i], + ["whitespace-only value", { fields: [{ name: "Count", value: " \t\r\n " }] }, /fields.*value.*non-empty/i], + [ + "whitespace-only name in multiple fields", + { + fields: [ + { name: " \t\r\n ", value: 2 }, + { name: "Count", value: 3 }, + ], + }, + /fields.*name.*non-empty/i, + ], + ["multiple values in one field", { fields: [{ name: "Count", value: [1, 2] }] }, /fields.*value.*one/i], + ["missing value", { fields: [{ name: "Count" }] }, /fields.*value/i], + ["null field value", { fields: [{ name: "Count", value: null }] }, /fields.*value/i], + ["ragged rows", { rows: { columns: ["A", "B"], values: [[1, 2], [3]] } }, /rows.*1.*2.*cells/i], + ["no columns", { rows: { columns: [], values: [[1]] } }, /rows.*columns/i], + ["no rows", { rows: { columns: ["A"], values: [] } }, /rows.*values/i], + ["negative precision", { fields: [{ name: "", value: 1.5, precision: -1 }] }, /precision/i], + ["excessive precision", { fields: [{ name: "", value: 1.5, precision: 11 }] }, /precision/i], + ["fractional precision", { fields: [{ name: "", value: 1.5, precision: 1.5 }] }, /precision/i], + ["empty reason", { unresolved: { reason: "" } }, /unresolved.*reason/i], + ["no answer shape", { basis: recordBasis }, /exactly one of fields, rows, or unresolved/i], + [ + "only fillers", + { basis: recordBasis, fields: [], rows: {}, unresolved: "" }, + /exactly one of fields, rows, or unresolved/i, + ], + [ + "fields and rows", + { basis: recordBasis, fields: [{ name: "", value: 1 }], rows: { columns: ["A"], values: [[1]] } }, + /exactly one of fields, rows, or unresolved/i, + ], + [ + "fields and unresolved", + { basis: recordBasis, fields: [{ name: "", value: 1 }], unresolved: { reason: "Missing" } }, + /exactly one of fields, rows, or unresolved/i, + ], + [ + "rows and unresolved", + { basis: recordBasis, rows: { columns: ["A"], values: [[1]] }, unresolved: { reason: "Missing" } }, + /exactly one of fields, rows, or unresolved/i, + ], + ] as [string, unknown, RegExp][])("rejects %s", (_name, payload, error) => { + expect(() => AnswerCommit.renderAnswer(payload)).toThrow(error) + }) +}) + +const context = { + sessionID: "test-session", + messageID: "test-message", + agent: "analyst", + abort: new AbortController().signal, + messages: [], +} + +test("answer_commit returns only the rendered answer and advisory metadata", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const readings = [{ clause: "month", reading: "calendar month", result_summary: "2", decided_by: "request" }] + const asks: unknown[] = [] + const result = await tool.execute( + { fields: [{ name: "", value: 2 }], rows: {}, unresolved: "", basis: recordBasis, readings }, + { + ...context, + ask: (input: unknown) => { + asks.push(input) + }, + }, + ) + expect(result.output).toBe(`${recordBasis}\n\n**Answer:** 2`) + expect(result.metadata.readings).toEqual(readings) + expect(asks).toEqual([{ permission: "answer_commit", patterns: ["*"], always: ["*"], metadata: {} }]) +}) + +test("answer_commit exposes a serializable object input schema", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.jsonSchema?.type).toBe("object") + expect(Object.keys(tool.jsonSchema?.properties ?? {})).toEqual([ + "fields", + "rows", + "unresolved", + "basis", + "answer_only", + "readings", + ]) +}) + +test("answer_commit description defines final-call timing and exact reply", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("LAST tool call") + expect(tool.description).toContain("once the answer is decided") + expect(tool.description).toContain("reply with exactly the returned text and nothing else") +}) + +// altimate_change start - preserve every requested item in compound answers +test("answer_commit description and fields schema require one field per requested item", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("one field per item the request asks for") + expect(tool.description).toContain("never collapse a compound request") + expect(structuredClone(tool.jsonSchema?.properties?.fields)).toMatchObject({ + description: "One entry per item the request asks for, in the order asked.", + }) +}) +// altimate_change end + +test("answer_commit description defines answer_only and unused properties", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("only the answer or a specific format") + expect(tool.description).toContain("exactly the value(s) or table, with no basis, field names, note, or answer label") + expect(tool.description).toContain("Omit unused optional properties") +}) + +test("answer_commit description preserves the top-N boundary-tie contract", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("When the request names N, rows.values must contain exactly N concrete rows") + expect(tool.description).toContain("even with a tie at the top-N boundary; note the tie briefly in rows.note") +}) + +test("answer_commit rows schema documents the requested count and boundary-tie note", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + // Bun's asymmetric matchers mutate nested values; preserve the shared tool schema. + expect(structuredClone(tool.jsonSchema?.properties?.rows)).toMatchObject({ + anyOf: expect.arrayContaining([ + expect.objectContaining({ + properties: expect.objectContaining({ + values: expect.objectContaining({ + description: + "Concrete result rows; when the request names N, the row count must equal N, even with a tie at the top-N boundary", + }), + note: expect.objectContaining({ + description: "Brief result note, including any tie at the top-N boundary; omitted when answer_only is true", + }), + }), + }), + ]), + }) +}) + +test("answer_commit description excludes JSON-schema requests", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("not available for JSON-schema requests; use StructuredOutput instead") +}) + +test("answer_commit accepts null optional fields through the tool wrapper", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + const result = await tool.execute( + { + fields: [{ name: "", value: 1.25, precision: null, units: null }], + basis: recordBasis, + readings: null, + answer_only: null, + }, + context, + ) + expect(result.output).toBe(`${recordBasis}\n\n**Answer:** 1.25`) + expect(result.metadata.readings).toEqual([]) +}) + +test("answer_commit names invalid field values through the tool wrapper", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await expect(tool.execute({ fields: [{ name: "Count", value: "" }] }, context)).rejects.toThrow( + /fields.*value.*non-empty/i, + ) +}) + +test("answer_commit refuses direct execution by another agent", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + await expect( + tool.execute({ basis: recordBasis, fields: [{ name: "", value: 2 }] }, { ...context, agent: "builder" }), + ).rejects.toThrow(/only.*analyst/i) +}) + +test("answer_commit guidance requires every named item as its own field because basis is hidden", async () => { + const tool = await initTool(AnswerCommit.AnswerCommitTool) + expect(tool.description).toContain("must be its own field") + expect(tool.description).toContain("not shown when the request asks for only the answer") + const payload = { + answer_only: true, + basis: "Entity repo-a; the related file src/a.swift was copied 23 times.", + fields: [{ name: "repository", value: "repo-a" }], + } + expect(AnswerCommit.renderAnswer(payload)).toBe("repo-a") + expect( + AnswerCommit.renderAnswer({ + ...payload, + fields: [...payload.fields, { name: "file", value: "src/a.swift" }, { name: "copies", value: 23 }], + }), + ).toBe("repo-a; src/a.swift; 23") +}) diff --git a/packages/opencode/test/altimate/tools/review-routing.test.ts b/packages/opencode/test/altimate/tools/review-routing.test.ts new file mode 100644 index 0000000000..71140f7dbd --- /dev/null +++ b/packages/opencode/test/altimate/tools/review-routing.test.ts @@ -0,0 +1,356 @@ +// altimate_change start — PR 1441 routing and inspection regressions +import { afterEach, beforeEach, expect, mock, spyOn, test } from "bun:test" +import type { ConnectionConfig, Connector } from "@altimateai/drivers" +import * as Registry from "../../../src/altimate/native/connections/registry" +import * as Dispatcher from "../../../src/altimate/native/dispatcher" +import { registerAll } from "../../../src/altimate/native/connections/register" +import * as Precedence from "../../../src/altimate/workspace/precedence" +import { SchemaInspectTool } from "../../../src/altimate/tools/schema-inspect" +import { SqlExecuteTool } from "../../../src/altimate/tools/sql-execute" +import { SqlCheckTool } from "../../../src/altimate/tools/sql-check" +import { bindTo, SNOWFLAKE_TOOLS } from "../workspace/precedence-fixture" +import { initTool } from "../tool-fixture" + +const ctx = { + sessionID: "ses_review_routing", + messageID: "msg_review_routing", + agent: "analyst", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, + ask: async () => {}, +} +const columns = [{ name: "id", data_type: "INTEGER", nullable: false }] +const originalDisabled = process.env.ALTIMATE_DISABLE_WORKSPACE +const originalIntegrations = process.env.ALTIMATE_INTEGRATIONS +const restores: Array<{ mockRestore(): void }> = [] +function track(spy: T): T { + restores.push(spy) + return spy +} +beforeEach(() => { + registerAll() + Precedence.resetForTests() + delete process.env.ALTIMATE_DISABLE_WORKSPACE + delete process.env.ALTIMATE_INTEGRATIONS +}) +afterEach(() => { + restores + .splice(0) + .reverse() + .forEach((spy) => spy.mockRestore()) + Registry.reset() + Precedence.resetForTests() + registerAll() + if (originalDisabled === undefined) delete process.env.ALTIMATE_DISABLE_WORKSPACE + else process.env.ALTIMATE_DISABLE_WORKSPACE = originalDisabled + if (originalIntegrations === undefined) delete process.env.ALTIMATE_INTEGRATIONS + else process.env.ALTIMATE_INTEGRATIONS = originalIntegrations +}) + +test.each([ + [{ type: "postgres", schema: "sales" }, "sales"], + [{ type: "bigquery", dataset: "analytics" }, "analytics"], + [{ type: "mysql", database: "inventory" }, "inventory"], + [{ type: "mariadb", database: "inventory" }, "inventory"], + [{ type: "snowflake", schema: "PUBLIC" }, "PUBLIC"], +] as [ConnectionConfig, string][])("unqualified inspection uses configured default: %j", async (config, schema) => { + Registry.setConfigs({ remote: config }) + const describeTable = mock(async (_schema: string, _table: string) => columns) + track(spyOn(Registry, "get").mockResolvedValue({ describeTable } as unknown as Connector)) + const response = await Dispatcher.call("schema.inspect", { table: "orders", warehouse: "remote" }) + expect(response.schema_name).toBe(schema) + expect(describeTable.mock.calls).toEqual([[schema, "orders"]]) +}) + +test("BigQuery not-found probes continue to the next dataset", async () => { + Registry.setConfigs({ remote: { type: "bigquery", dataset: "analytics" } }) + const describeTable = mock(async (schema: string, _table: string) => { + if (schema !== "sales") throw Object.assign(new Error(`Not found: Table project:${schema}.orders`), { code: 404 }) + return columns + }) + track( + spyOn(Registry, "get").mockResolvedValue({ + describeTable, + listSchemas: async () => ["analytics", "empty", "sales"], + } as unknown as Connector), + ) + const response = await Dispatcher.call("schema.inspect", { table: "orders", warehouse: "remote" }) + expect(response.columns).toEqual(columns.map((c) => ({ ...c, primary_key: false }))) + expect(response.schema_name).toBe("sales") + expect(describeTable.mock.calls).toEqual([ + ["analytics", "orders"], + ["empty", "orders"], + ["sales", "orders"], + ]) +}) + +test("inspection does not hide authorization errors while probing", async () => { + Registry.setConfigs({ remote: { type: "bigquery", dataset: "analytics" } }) + const listSchemas = mock(async () => ["sales"]) + track( + spyOn(Registry, "get").mockResolvedValue({ + describeTable: async () => { + throw new Error("Access denied") + }, + listSchemas, + } as unknown as Connector), + ) + const response = await Dispatcher.call("schema.inspect", { table: "orders", warehouse: "remote" }) + expect((response as any).error).toContain("Access denied") + expect(listSchemas).not.toHaveBeenCalled() +}) + +test.each([ + { find: "orders", filter: { status: "open" } }, + { count: "orders", query: { status: "open" } }, + { distinct: "orders", key: "status" }, +])("omitted Mongo warehouse uses read classification: %j", async (query) => { + Registry.setConfigs({ mongo: { type: "mongodb" } }) + track(spyOn(Precedence, "check").mockResolvedValue({})) + const dispatch = track( + spyOn(Dispatcher, "call").mockResolvedValue({ + columns: ["count"], + rows: [[1]], + row_count: 1, + truncated: false, + } as never), + ) + const ask = mock(async () => { + throw new Error("write denied") + }) + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query: JSON.stringify(query) }, { ...ctx, ask }) + expect(ask).not.toHaveBeenCalled() + expect(JSON.parse((dispatch.mock.calls[0][1] as any).sql).collection).toBe("orders") +}) + +test.each([{ table: "remote.orders" }, { table: "orders", schema_name: "remote" }])( + "warehouse alias is routed before target inspection: %j", + async (address) => { + Registry.setConfigs({ local: { type: "duckdb" }, remote: { type: "snowflake", schema: "PUBLIC" } }) + const describeTable = mock(async () => columns) + const get = track( + spyOn(Registry, "get").mockResolvedValue({ + describeTable, + listSchemas: async () => ["main"], + } as unknown as Connector), + ) + const redirect = { title: "workspace", output: "use workspace", metadata: { redirected: true } } + track( + spyOn(Precedence, "check").mockImplementation(async (_session, _capability, warehouse) => + warehouse === "remote" ? { redirect } : {}, + ), + ) + const tool = await initTool(SchemaInspectTool) + const response = await tool.execute({ ...address, values: false }, ctx) + expect(response.metadata.redirected).toBe(true) + expect(describeTable).not.toHaveBeenCalled() + expect(get.mock.calls).not.toContainEqual(["remote"]) + }, +) + +function profiling() { + track(spyOn(Precedence, "check").mockResolvedValue({})) + const execute = mock(async () => ({ columns: [], rows: [["id", 1, 1, 1, ["1"]]], row_count: 1, truncated: false })) + Dispatcher.register("schema.inspect", async () => ({ + table: "orders", + schema_name: "public", + warehouse: "remote", + columns, + })) + Dispatcher.register("warehouse.list", async () => ({ warehouses: [{ name: "remote", type: "postgres" }] }) as any) + Dispatcher.register("sql.execute", execute as any) + return execute +} + +test("value profiling honors sql_execute permission denial", async () => { + const execute = profiling() + const ask = mock(async ({ permission }: { permission: string }) => { + if (permission === "sql_execute") throw new Error("execute denied") + }) + const tool = await initTool(SchemaInspectTool) + const response = await tool.execute({ table: "orders", warehouse: "remote" }, { ...ctx, ask }) + expect(execute).not.toHaveBeenCalled() + expect(ask.mock.calls.some(([request]) => request.permission === "sql_execute")).toBe(true) + expect(response.output).toContain("execute denied") +}) + +test("value profiling honors execute-only workspace routing", async () => { + const execute = profiling() + track( + spyOn(Precedence, "check").mockImplementation(async (_session, capability) => + capability === "sql_execute" + ? { redirect: { title: "workspace", output: "use workspace execute", metadata: { redirected: true } } } + : {}, + ), + ) + const tool = await initTool(SchemaInspectTool) + const response = await tool.execute({ table: "orders", warehouse: "remote" }, ctx) + expect(execute).not.toHaveBeenCalled() + expect(response.output).toContain("use workspace execute") +}) + +test("sql_check redirects before opening a shadowed source", async () => { + const get = track(spyOn(Registry, "get").mockRejectedValue(new Error("must not connect"))) + track( + spyOn(Precedence, "check").mockResolvedValue({ + redirect: { title: "workspace", output: "use workspace", metadata: { redirected: true } }, + }), + ) + const tool = await initTool(SqlCheckTool) + const response = await tool.execute( + { warehouse: "remote", check: "nulls", sql: "SELECT 1 AS id", columns: ["id"] }, + ctx, + ) + expect(response.metadata.redirected).toBe(true) + expect(get).not.toHaveBeenCalled() +}) + +test.each(["sql", "left_sql", "right_sql"] as const)( + "sql_check rejects writes in %s before workspace routing", + async (field) => { + const get = track(spyOn(Registry, "get").mockRejectedValue(new Error("must not connect"))) + const route = track( + spyOn(Precedence, "check").mockResolvedValue({ + redirect: { title: "workspace", output: "use workspace", metadata: { redirected: true } }, + }), + ) + const ask = mock(async () => {}) + const tool = await initTool(SqlCheckTool) + const response = await tool.execute( + { warehouse: "remote", check: "nulls", sql: "SELECT 1 AS id", columns: ["id"], [field]: "DELETE FROM orders" }, + { ...ctx, ask }, + ) + expect(response.metadata.redirected).toBeUndefined() + expect(response.output).toContain("single read-only SELECT") + expect(route).not.toHaveBeenCalled() + expect(ask).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + }, +) + +test.each(["fanout", "keys", "grain", "nulls", "coverage"] as const)( + "sql_check %s honors sql_execute permission denial before routing or connecting", + async (check) => { + const route = track(spyOn(Precedence, "check").mockResolvedValue({})) + const get = track(spyOn(Registry, "get").mockRejectedValue(new Error("must not connect"))) + const ask = mock(async ({ permission }: { permission: string }) => { + if (permission === "sql_execute") throw new Error("execute denied") + }) + const tool = await initTool(SqlCheckTool) + const response = await tool.execute( + { + warehouse: "remote", + check, + sql: "SELECT id FROM orders", + left_sql: "SELECT id FROM orders", + right_sql: "SELECT id FROM customers", + columns: ["id"], + column: "id", + pattern: "%", + on: [["id", "id"]], + left_col: "id", + right_col: "id", + }, + { ...ctx, ask }, + ) + expect(ask).toHaveBeenCalledTimes(1) + expect(response.output).toContain("execute denied") + expect(route).not.toHaveBeenCalled() + expect(get).not.toHaveBeenCalled() + }, +) + +test("sql_check authorizes all supplied SQL before routing and executing", async () => { + Registry.setConfigs({ remote: { type: "postgres" } }) + const events: string[] = [] + track( + spyOn(Precedence, "check").mockImplementation(async () => { + events.push("route") + return {} + }), + ) + track( + spyOn(Registry, "get").mockImplementation(async () => { + events.push("connect") + return { + connect: async () => {}, + close: async () => {}, + listSchemas: async () => [], + listTables: async () => [], + describeTable: async () => columns, + execute: async () => { + events.push("execute") + return { columns: ["n", "null_0", "distinct_0"], rows: [[1, 0, 1]], row_count: 1, truncated: false } + }, + } + }), + ) + const ask = mock(async (_request: unknown) => { + events.push("authorize") + }) + const tool = await initTool(SqlCheckTool) + const response = await tool.execute( + { + warehouse: "remote", + check: "nulls", + sql: "SELECT id FROM orders", + left_sql: "SELECT id FROM customers", + right_sql: "", + columns: ["id"], + }, + { ...ctx, ask }, + ) + expect(response.metadata.error).toBeUndefined() + expect(events).toEqual(["authorize", "route", "connect", "execute"]) + expect(ask.mock.calls).toEqual([ + [ + { + permission: "sql_execute", + patterns: ["SELECT id FROM orders", "SELECT id FROM customers"], + always: ["*"], + metadata: { warehouse: "remote" }, + }, + ], + ]) +}) + +test("built-in scratch stays local in a bound workspace", async () => { + Registry.setConfigs({ local: { type: "duckdb" } }) + bindTo() + Precedence.precedenceInternals.announce = async () => {} + const state = await Precedence.refresh(ctx.sessionID, { + ...SNOWFLAKE_TOOLS, + datamate_duckdb_execute_database_query: {}, + }) + expect(state.enabled).toBe(true) + expect(state.shadowed.has("duckdb")).toBe(false) + expect(await Precedence.check(ctx.sessionID, "sql_execute", "scratch")).toEqual({}) +}) +// altimate_change end + +// altimate_change start — route the resolved alias even when the default is shadowed +test("scratch alias remains local when the default warehouse is shadowed", async () => { + Registry.setConfigs({ remote: { type: "snowflake", schema: "PUBLIC" } }) + const describeTable = mock(async () => columns) + track( + spyOn(Registry, "get").mockResolvedValue({ + describeTable, + listSchemas: async () => ["PUBLIC"], + } as unknown as Connector), + ) + track( + spyOn(Precedence, "check").mockImplementation(async (_session, _capability, warehouse) => + warehouse === "scratch" + ? {} + : { redirect: { title: "workspace", output: "use workspace", metadata: { redirected: true } } }, + ), + ) + const tool = await initTool(SchemaInspectTool) + const response = await tool.execute({ table: "scratch.orders", values: false }, ctx) + expect(response.metadata.redirected).toBeUndefined() + expect(response.metadata.success).toBe(true) + expect(response.output).toContain('Resolved "scratch"') +}) +// altimate_change end diff --git a/packages/opencode/test/altimate/tools/schema-inspect-mongodb.test.ts b/packages/opencode/test/altimate/tools/schema-inspect-mongodb.test.ts new file mode 100644 index 0000000000..a791176f10 --- /dev/null +++ b/packages/opencode/test/altimate/tools/schema-inspect-mongodb.test.ts @@ -0,0 +1,78 @@ +import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from "bun:test" +import type { Connector } from "@altimateai/drivers" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { registerAll } from "../../../src/altimate/native/connections/register" +import { SchemaInspectTool } from "../../../src/altimate/tools/schema-inspect" +import { initTool } from "../tool-fixture" + +const ctx = { + sessionID: "schema-mongodb-test", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, +} +let connectorSpy: { mockRestore(): void } | undefined + +beforeEach(() => registerAll()) +afterEach(() => { + connectorSpy?.mockRestore() + Registry.reset() +}) + +function configure(database?: string) { + Registry.setConfigs({ documents: { type: "mongodb", database } }) + const connector = { + listSchemas: mock(async () => ["records"]), + listTables: mock(async (_schema: string) => [ + { name: "events", type: "collection" }, + { name: "empty", type: "collection" }, + ]), + describeTable: mock(async (schema: string, table: string) => + schema === "records" && table === "events" ? [{ name: "id", data_type: "STRING", nullable: false }] : [], + ), + } + connectorSpy = spyOn(Registry, "get").mockResolvedValue(connector as unknown as Connector) + return connector +} + +async function inspect(table: string) { + const tool = await initTool(SchemaInspectTool) + return tool.execute({ warehouse: "documents", table, values: false }, ctx) +} + +describe("schema_inspect MongoDB collections", () => { + test("splits a database-qualified collection", async () => { + const connector = configure("records") + const result = await inspect("records.events") + expect(result.metadata.success).toBe(true) + expect(connector.describeTable.mock.calls).toEqual([["records", "events"]]) + }) + + test.each(["records", undefined])("uses the MongoDB database instead of public with config %s", async (database) => { + const connector = configure(database) + const result = await inspect("events") + expect(result.metadata.success).toBe(true) + expect(connector.describeTable.mock.calls).toEqual([["records", "events"]]) + }) + + test("a missing collection lists available collections", async () => { + const connector = configure("records") + const result = await inspect("missing") + expect(result.metadata.success).toBe(false) + expect(result.output).toContain('Collection "missing" was not found in database "records"') + expect(result.output).toContain("Available collections: events, empty") + expect(result.output).not.toContain("information_schema") + expect(result.output).not.toContain("dispatcher is running") + expect(connector.listTables.mock.calls).toEqual([["records"]]) + }) + + test("an empty collection is not reported as missing", async () => { + configure("records") + const result = await inspect("empty") + expect(result.output).toContain('Collection "empty" has no documents to infer a schema') + expect(result.output).not.toContain("was not found") + }) +}) diff --git a/packages/opencode/test/altimate/tools/schema-inspect-not-found.test.ts b/packages/opencode/test/altimate/tools/schema-inspect-not-found.test.ts new file mode 100644 index 0000000000..cc317a3d8f --- /dev/null +++ b/packages/opencode/test/altimate/tools/schema-inspect-not-found.test.ts @@ -0,0 +1,56 @@ +import { afterAll, beforeEach, describe, expect, test } from "bun:test" +import { initTool } from "../tool-fixture" +import * as Dispatcher from "../../../src/altimate/native/dispatcher" +import { registerAll } from "../../../src/altimate/native/connections/register" +import { SchemaInspectTool } from "../../../src/altimate/tools/schema-inspect" + +// The handler answers an unknown table with an empty column list and success; in one evaluation +// run 21 of 44 inspections read as valid empty schemas. Strict-schema callers also send +// schema_name: "" for "not specified". +const ctx = { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, +} + +async function inspect(args: Record) { + const tool = await initTool(SchemaInspectTool) + return tool.execute({ warehouse: "w", values: false, ...args } as any, ctx as any) +} + +beforeEach(() => { + Dispatcher.reset() + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + Dispatcher.register("warehouse.list" as any, async () => ({ warehouses: [{ name: "w", type: "postgres" }] })) +}) + +afterAll(() => { + registerAll() +}) + +describe("schema_inspect unknown tables", () => { + test("an empty column list is reported as not found, not as an empty schema", async () => { + Dispatcher.register("schema.inspect" as any, async () => ({ table: "nope", schema_name: "public", columns: [] })) + const result: any = await inspect({ table: "nope", schema_name: "public" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain('Table "nope" was not found in schema "public"') + expect(result.output).toContain("information_schema.tables") + expect(result.output).not.toContain("dispatcher is running") + }) + + test("a blank schema_name is sent as unset", async () => { + const seen: any[] = [] + Dispatcher.register("schema.inspect" as any, async (p: any) => { + seen.push(p) + return { table: "t", schema_name: "public", columns: [{ name: "id", data_type: "INTEGER", nullable: false }] } + }) + const result: any = await inspect({ table: "t", schema_name: "" }) + expect(seen[0].schema_name).toBeUndefined() + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("id") + }) +}) diff --git a/packages/opencode/test/altimate/tools/schema-inspect-values.test.ts b/packages/opencode/test/altimate/tools/schema-inspect-values.test.ts new file mode 100644 index 0000000000..00bdbb2358 --- /dev/null +++ b/packages/opencode/test/altimate/tools/schema-inspect-values.test.ts @@ -0,0 +1,240 @@ +import { afterAll, beforeAll, beforeEach, describe, expect, mock, spyOn, test } from "bun:test" +import { Database } from "bun:sqlite" +import { initTool } from "../tool-fixture" +import * as Dispatcher from "../../../src/altimate/native/dispatcher" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { registerAll } from "../../../src/altimate/native/connections/register" +import { SchemaInspectTool } from "../../../src/altimate/tools/schema-inspect" +import { buildProfileSql } from "../../../src/altimate/tools/schema-values" + +const ctx = { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, +} + +const COLUMNS = [ + { name: "id", data_type: "INTEGER", nullable: false, primary_key: true }, + { name: "region", data_type: "TEXT", nullable: true, primary_key: false }, + { name: "customer_code", data_type: "TEXT", nullable: true, primary_key: false }, + { name: "note", data_type: "TEXT", nullable: true, primary_key: false }, +] + +const SEED = (): string[] => { + const regions = ["north", "south", "east", "west"] + const codes = ["C-%d", "c%d", " C-%d"] + const inserts: string[] = [] + for (let i = 1; i <= 60; i++) { + inserts.push( + `INSERT INTO t VALUES (${i}, '${regions[i % 4]}', '${codes[i % 3]!.replace("%d", String(i).padStart(5, "0"))}', ${i % 2 ? "NULL" : "'x'"})`, + ) + } + return ["CREATE TABLE t (id INTEGER, region TEXT, customer_code TEXT, note TEXT)", ...inserts] +} + +function install(engine: "sqlite" | "duckdb" | "postgres", run: (sql: string) => Promise, calls: string[]) { + Registry.setConfigs({ w: { type: engine } }) + Dispatcher.register("warehouse.list" as any, async () => ({ warehouses: [{ name: "w", type: engine }] })) + Dispatcher.register("schema.inspect" as any, async () => ({ + table: "t", schema_name: engine === "postgres" ? "public" : "main", columns: COLUMNS, + })) + Dispatcher.register("sql.execute" as any, async (p: any) => { + calls.push(p.sql) + const rows = await run(p.sql) + return { columns: [], rows, row_count: rows.length, truncated: false } + }) +} + +async function inspect(args: Record) { + const tool = await initTool(SchemaInspectTool) + return tool.execute({ table: "t", ...args } as any, ctx as any) +} + +beforeEach(() => { + Registry.reset() + Dispatcher.reset() + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" +}) + +afterAll(() => { + Registry.reset() + registerAll() +}) + +function expectAppendix(output: string) { + expect(output).toContain("Value samples:") + expect(output).toContain("id: 60 distinct") + expect(output).toMatch(/region: 4 distinct — (north|south|east|west)(, (north|south|east|west)){3}/) + expect(output).toMatch(/customer_code: 60 distinct, e\.g\. "[^"]+", "[^"]+", "[^"]+"/) + expect(output).toContain("note: 1 distinct — x, 50% null") +} + +describe("schema_inspect value grounding", () => { + describe("sqlite", () => { + const db = new Database(":memory:") + beforeAll(() => SEED().forEach((s) => db.run(s))) + afterAll(() => db.close()) + const run = async (sql: string) => db.query(sql).values() as unknown[][] + + test("single-table inspect appends distinct values, examples and null share in one query", async () => { + const calls: string[] = [] + install("sqlite", run, calls) + const result = await inspect({}) + expectAppendix(result.output) + expect(calls).toHaveLength(1) + expect(calls[0]).toContain("LIMIT 10000") + expect(calls[0]).toContain('FROM "main"."t"') + expect(result.metadata.success).toBe(true) + }) + + test("whitespace and case variants stay visible in the listed values", async () => { + const small = new Database(":memory:") + small.run("CREATE TABLE t (id INTEGER, region TEXT, customer_code TEXT, note TEXT)") + small.run("INSERT INTO t VALUES (1, 'a', 'C-00017', NULL), (2, 'a', 'c00018', NULL), (3, 'a', ' C-00019', NULL)") + install("sqlite", async (sql) => small.query(sql).values() as unknown[][], []) + const result = await inspect({}) + small.close() + expect(result.output).toMatch(/customer_code: 3 distinct — .*" C-00019"/) + expect(result.output).toContain("c00018") + expect(result.output).toContain("note: all NULL") + }) + + test("delimiter characters stay inside values and empty-string-only columns retain their sample", async () => { + const small = new Database(":memory:") + try { + small.run("CREATE TABLE t (id INTEGER, region TEXT, customer_code TEXT, note TEXT)") + small.run("INSERT INTO t VALUES (1, 'left␟right', '', NULL)") + install("sqlite", async (sql) => small.query(sql).values() as unknown[][], []) + const result = await inspect({}) + expect(result.output).toContain("region: 1 distinct — left␟right\n") + expect(result.output).toContain('customer_code: 1 distinct — ""\n') + } finally { + small.close() + } + }) + + test("values:false skips profiling", async () => { + const calls: string[] = [] + install("sqlite", run, calls) + const result = await inspect({ values: false }) + expect(calls).toHaveLength(0) + expect(result.output).not.toContain("Value samples") + }) + + test("a profiling failure degrades to a note and keeps the column list", async () => { + install("sqlite", async () => { + throw new Error("boom\nsecond line") + }, []) + const result = await inspect({}) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("Column | Type") + expect(result.output).toContain("Value samples unavailable: boom") + expect(result.output).not.toContain("second line") + }) + + test.each([false, true])("a dispatcher error response is visible (wrapped: %s)", async (wrapped) => { + install("sqlite", run, []) + Dispatcher.register("sql.execute" as any, async () => { + const response = { rows: [], error: "query timed out\nconnection restarted" } + return wrapped ? { data: response } : response + }) + const result = await inspect({}) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("Column | Type") + expect(result.output).toContain("Value samples unavailable: query timed out") + expect(result.output).not.toContain("connection restarted") + }) + + test("unsupported engines are skipped with a note", async () => { + const calls: string[] = [] + install("sqlite", run, calls) + Dispatcher.register("warehouse.list" as any, async () => ({ warehouses: [{ name: "w", type: "mongodb" }] })) + const result = await inspect({}) + expect(calls).toHaveLength(0) + expect(result.output).toContain("Value samples skipped") + }) + }) + + describe("duckdb", () => { + test("single-table inspect against a real duckdb", async () => { + const { connect } = await import("../../../../drivers/src/duckdb") + const dir = (await import("fs")).mkdtempSync((await import("os")).tmpdir() + "/schemavals-") + const conn = await connect({ type: "duckdb", path: dir + "/t.duckdb", create: true } as any) + try { + await conn.connect() + for (const s of SEED()) await conn.execute(s, 1000) + const run = async (sql: string) => (await conn.execute(sql, 1000)).rows as unknown[][] + const calls: string[] = [] + install("duckdb", run, calls) + const result = await inspect({}) + expectAppendix(result.output) + expect(calls).toHaveLength(1) + expect(calls[0]).toContain("array_agg(v)") + expect(calls[0]).toContain('FROM "main"."t"') + await conn.execute("DELETE FROM t", 1000) + await conn.execute("INSERT INTO t VALUES (1, 'left␟right', '', NULL)", 1000) + const edgeValues = await inspect({}) + expect(edgeValues.output).toContain("region: 1 distinct — left␟right\n") + expect(edgeValues.output).toContain('customer_code: 1 distinct — ""\n') + } finally { + await conn.close() + } + }) + }) + + test("postgres uses array_agg and preserves quoted identifiers containing an aggregate name", async () => { + const calls: string[] = [] + const column = "group_concat(value" + install("postgres", async () => [[column, 1, 1, 1, ["left␟right"]]], calls) + Dispatcher.register("schema.inspect" as any, async () => ({ + table: "t", schema_name: "sales", columns: [{ name: column, data_type: "TEXT", nullable: false }], + })) + const result = await inspect({ table: "sales.t" }) + expect(calls[0]).toContain("array_agg(v)") + expect(calls[0]).toContain('CAST("group_concat(value" AS TEXT)') + expect(calls[0]).toContain("'group_concat(value' AS col") + expect(calls[0]).toContain('FROM "sales"."t"') + expect(result.output).toContain("group_concat(value: 1 distinct — left␟right") + }) + + test.each(["postgres", "postgresql", "sqlite", "duckdb"])( + "profiling protects PostgreSQL reads and preserves other connector options (%s)", + async (type) => { + Registry.setConfigs({ w: { type } }) + registerAll() + Dispatcher.register("schema.inspect" as any, async () => ({ + table: "t", schema_name: "public", warehouse: "w", columns: COLUMNS, + })) + const execute = mock(async () => ({ + columns: ["col", "total", "nonnull", "ndistinct", "vals"], + rows: [["region", 1, 1, 1, ["north"]]], + row_count: 1, + truncated: false, + })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as any) + try { + const result = await inspect({ warehouse: "w" }) + expect(result.output).toContain("region: 1 distinct — north") + expect(execute).toHaveBeenCalledTimes(1) + const [sql, limit, binds, options] = execute.mock.calls[0] as unknown as [string, number, unknown, Record] + expect(sql).toContain('FROM "public"."t"') + expect(limit).toBe(41) + expect(binds).toBeUndefined() + expect(options.queryTimeoutMs).toBe(15_000) + if (type === "postgres" || type === "postgresql") expect(options.readOnly).toBe(true) + else expect(options).not.toHaveProperty("readOnly") + } finally { + get.mockRestore() + } + }, + ) + + test("profiling is capped at 40 columns", () => { + const cols = Array.from({ length: 60 }, (_, i) => ({ name: `c${i}`, data_type: "TEXT" })) + expect(buildProfileSql('"t"', cols.slice(0, 40)).split("UNION ALL")).toHaveLength(40) + }) +}) diff --git a/packages/opencode/test/altimate/tools/schema-inspect-warehouse-defaults.test.ts b/packages/opencode/test/altimate/tools/schema-inspect-warehouse-defaults.test.ts new file mode 100644 index 0000000000..6a6f150da1 --- /dev/null +++ b/packages/opencode/test/altimate/tools/schema-inspect-warehouse-defaults.test.ts @@ -0,0 +1,158 @@ +// altimate_change start — schema inspection warehouse alias boundaries +import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from "bun:test" +import type { ConnectionConfig, Connector } from "@altimateai/drivers" +import * as Dispatcher from "../../../src/altimate/native/dispatcher" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { registerAll } from "../../../src/altimate/native/connections/register" + +let connectorSpy: { mockRestore(): void } | undefined + +beforeEach(() => registerAll()) +afterEach(() => { + connectorSpy?.mockRestore() + Registry.reset() +}) + +function configure(config: ConnectionConfig, schema?: string) { + Registry.setConfigs({ primary: { type: "duckdb", path: ":memory:" }, remote: config }) + const source = { listSchemas: mock(async () => ["main"]) } + const target = { + describeTable: mock(async (name: string, _table: string) => + name === schema ? [{ name: "id", data_type: "INTEGER", nullable: false }] : [], + ), + } + connectorSpy = spyOn(Registry, "get").mockImplementation( + async (name) => (name === "primary" ? source : target) as unknown as Connector, + ) + return target +} + +describe("schema.inspect warehouse default schemas", () => { + test.each([ + [{ type: "bigquery", dataset: "analytics" }, "analytics"], + [{ type: "mysql", database: "inventory" }, "inventory"], + [{ type: "mariadb", database: "inventory" }, "inventory"], + [{ type: "snowflake", schema: "PUBLIC" }, "PUBLIC"], + [{ type: "sqlserver", schema: "dbo" }, "dbo"], + [{ type: "databricks", schema: "bronze" }, "bronze"], + ] as [ConnectionConfig, string][])("uses the configured default for %j", async (config, schema) => { + const target = configure(config, schema) + const result = await Dispatcher.call("schema.inspect", { table: "t", schema_name: "remote" }) + expect(result.columns).toHaveLength(1) + expect(result.schema_name).toBe(schema) + expect(result.resolution).toBe(`Resolved "remote" as the remote warehouse (schema ${schema})`) + expect(target.describeTable.mock.calls).toEqual([[schema, "t"]]) + }) + + test.each(["bigquery", "mysql", "snowflake", "sqlserver", "trino"])( + "requires an explicit schema when the %s default is unknown", + async (type) => { + const target = configure({ type }) + const result = await Dispatcher.call("schema.inspect", { table: "t", schema_name: "remote" }) + expect(result.columns).toEqual([]) + expect((result as any).error).toContain('Default schema for warehouse "remote" is not configured') + expect((result as any).error).not.toContain("Available warehouses:") + expect(target.describeTable).not.toHaveBeenCalled() + }, + ) + + test("missing-table hints use each warehouse's configured addressing", async () => { + configure({ type: "bigquery", dataset: "analytics" }, "absent") + const result = await Dispatcher.call("schema.inspect", { table: "missing", schema_name: "remote" }) + expect(result.columns).toEqual([]) + expect(result.addressing_hint).toContain("Available warehouses: primary, remote, scratch") + expect(result.addressing_hint).toContain("warehouse=remote, schema_name=analytics") + }) + + test.each([ + ["analytics.t", undefined], + ["analytics.t", "different"], + ["remote.t", "different"], + ])("preserves non-alias table %s with schema %s", async (table, schema) => { + configure({ type: "duckdb" }, "main") + const source = { + listSchemas: mock(async () => ["main"]), + describeTable: mock(async (_schema: string, _table: string) => [ + { name: "id", data_type: "INTEGER", nullable: false }, + ]), + } + connectorSpy?.mockRestore() + connectorSpy = spyOn(Registry, "get").mockResolvedValue(source as unknown as Connector) + const result = await Dispatcher.call("schema.inspect", { table: table!, schema_name: schema }) + expect((result as any).error).toBeUndefined() + expect(result.resolution).toBeUndefined() + expect(result.table).toBe(table) + expect(source.describeTable.mock.calls).toEqual([[schema ?? "main", table]]) + expect(source.listSchemas).toHaveBeenCalledTimes(schema ? 0 : 1) + }) + + test("a real schema qualifier takes precedence over a warehouse alias", async () => { + configure({ type: "duckdb" }, "main") + const source = { + listSchemas: mock(async () => ["main", "remote"]), + describeTable: mock(async (_schema: string, _table: string) => [ + { name: "id", data_type: "INTEGER", nullable: false }, + ]), + } + connectorSpy?.mockRestore() + connectorSpy = spyOn(Registry, "get").mockResolvedValue(source as unknown as Connector) + const result = await Dispatcher.call("schema.inspect", { table: "remote.t" }) + expect(result.resolution).toBeUndefined() + expect(result.warehouse).toBe("primary") + expect(result.table).toBe("t") + expect(source.describeTable.mock.calls).toEqual([["remote", "t"]]) + }) + + test("preserves a dotted table name when schemas cannot be listed", async () => { + const target = configure({ type: "duckdb" }, "main") + const connector = { + ...target, + listSchemas: mock(async () => { throw new Error("Schema listing is unavailable") }), + } + connectorSpy?.mockRestore() + connectorSpy = spyOn(Registry, "get").mockResolvedValue(connector as unknown as Connector) + const result = await Dispatcher.call("schema.inspect", { warehouse: "remote", table: "literal.name" }) + expect(result.columns).toHaveLength(1) + expect(target.describeTable.mock.calls).toEqual([["main", "literal.name"]]) + }) + + test.each([ + 'Table "missing" was not found', + 'schema "missing" does not exist', + 'relation "missing" does not exist', + "no such table: missing", + ])("adds addressing only for a missing database object: %s", async (message) => { + const target = configure({ type: "duckdb" }, "main") + target.describeTable.mockImplementation(async () => { + throw new Error(message) + }) + const result = await Dispatcher.call("schema.inspect", { table: "missing", warehouse: "remote" }) + expect((result as any).error).toContain(message) + expect((result as any).error).toContain("Available warehouses:") + }) + + test.each([ + 'Connection "remote" not found', + "warehouse remote not found", + "Host warehouse.example not found", + "Schema inspection driver not found", + "Driver connection timed out", + ])("preserves connection and driver failures without an addressing hint: %s", async (message) => { + const target = configure({ type: "duckdb" }, "main") + target.describeTable.mockImplementation(async () => { + throw new Error(message) + }) + const result = await Dispatcher.call("schema.inspect", { table: "t", warehouse: "remote" }) + expect((result as any).error).toBe(`Error: ${message}`) + expect(result.addressing_hint).toBeUndefined() + }) + + test("preserves a connection lookup failure without an addressing hint", async () => { + configure({ type: "duckdb" }, "main") + connectorSpy?.mockRestore() + connectorSpy = spyOn(Registry, "get").mockRejectedValue(new Error('Connection "remote" not found')) + const result = await Dispatcher.call("schema.inspect", { table: "t", warehouse: "remote" }) + expect((result as any).error).toBe('Error: Connection "remote" not found') + }) +}) +// altimate_change end diff --git a/packages/opencode/test/altimate/tools/schema-inspect-warehouse.test.ts b/packages/opencode/test/altimate/tools/schema-inspect-warehouse.test.ts new file mode 100644 index 0000000000..d471ed191b --- /dev/null +++ b/packages/opencode/test/altimate/tools/schema-inspect-warehouse.test.ts @@ -0,0 +1,178 @@ +// altimate_change start — schema inspection warehouse aliases +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test } from "bun:test" +import { initTool } from "../tool-fixture" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { registerAll } from "../../../src/altimate/native/connections/register" +import { closeScratch, withScratchSession } from "../../../src/altimate/native/connections/scratch" +import { SchemaInspectTool } from "../../../src/altimate/tools/schema-inspect" +import { materialize } from "../../../src/altimate/tools/sql-materialize" + +const ctx = { + sessionID: "schema-warehouse-test", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, +} +let previousTelemetry: string | undefined + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" +}) + +beforeEach(async () => { + registerAll() + Registry.setConfigs({ + primary: { type: "duckdb", path: ":memory:" }, + reporting: { type: "duckdb", path: ":memory:" }, + }) + const primary = await Registry.get("primary") + await primary.execute("CREATE TABLE t (local_id INTEGER)") + await primary.execute("INSERT INTO t VALUES (99)") + await withScratchSession(ctx.sessionID, () => materialize({ + source_warehouse: "primary", + sql: "SELECT 7 AS id, 'scratch value' AS label", + target_table: "t", + })) +}) + +afterEach(async () => { + await Registry.closeAll() + await closeScratch() + Registry.reset() +}) + +afterAll(() => { + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +async function inspect(args: Record) { + const tool = await initTool(SchemaInspectTool) + return tool.execute({ values: false, ...args }, ctx) +} + +describe("schema_inspect warehouse qualifiers", () => { + test("resolves a warehouse supplied as schema_name after materialization", async () => { + const result = await inspect({ schema_name: "scratch", table: "t" }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain('Resolved "scratch" as the scratch warehouse (schema main)') + expect(result.output).toContain("Table: main.t") + expect(result.output).toContain("id | BIGINT") + expect(result.output).not.toContain("local_id") + }) + + test("resolves a leading warehouse qualifier and profiles the resolved table", async () => { + const result = await inspect({ table: "scratch.t", values: true }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain('Resolved "scratch" as the scratch warehouse (schema main)') + expect(result.output).toContain("label: 1 distinct — scratch value") + }) + + test("preserves the table parameter and explicit scratch warehouse", async () => { + const result = await inspect({ warehouse: "scratch", schema_name: "main", table: "t" }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("id | BIGINT") + expect(result.output).not.toContain("Resolved") + }) + + test.each([ + { warehouse: "scratch", table: "scratch.t" }, + { warehouse: "scratch", schema_name: "scratch", table: "t" }, + { warehouse: "scratch", schema_name: "main", table: "scratch.t" }, + { warehouse: "scratch", schema_name: "", table: "main.t" }, + ])("accepts qualified scratch addresses %j", async (args) => { + const result = await inspect(args) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("Table: main.t") + expect(result.output).toContain("id | BIGINT") + }) + + test.each(["main", "public"])("accepts an existing %s schema qualifier with an explicit warehouse", async (schema) => { + const primary = await Registry.get("primary") + if (schema !== "main") { + await primary.execute(`CREATE SCHEMA ${schema}`) + await primary.execute(`CREATE TABLE ${schema}.t (local_id INTEGER)`) + } + const result = await inspect({ warehouse: "primary", table: `${schema}.t` }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain(`Table: ${schema}.t`) + expect(result.output).toContain("local_id") + }) + + test("an explicit warehouse wins over a warehouse-shaped schema name", async () => { + const result = await inspect({ warehouse: "primary", schema_name: "scratch", table: "t" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain('in schema "scratch" on warehouse "primary"') + expect(result.output).not.toContain("Resolved") + }) + + test("an explicit warehouse wins over a leading warehouse qualifier", async () => { + const result = await inspect({ warehouse: "primary", table: "scratch.t" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain('Table "scratch.t" was not found') + expect(result.output).toContain('warehouse "primary"') + expect(result.output).not.toContain("Resolved") + }) + + test("uses the same exact rule for another configured warehouse", async () => { + const reporting = await Registry.get("reporting") + await reporting.execute("CREATE TABLE t (report_id VARCHAR)") + const result = await inspect({ table: "reporting.t" }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain('Resolved "reporting" as the reporting warehouse (schema main)') + expect(result.output).toContain("report_id") + }) + + test("keeps an existing schema ahead of an equally named warehouse", async () => { + const primary = await Registry.get("primary") + await primary.execute("CREATE SCHEMA scratch") + await primary.execute("CREATE TABLE scratch.t (schema_id VARCHAR)") + const result = await inspect({ schema_name: "scratch", table: "t" }) + expect(result.metadata.success).toBe(true) + expect(result.output).toContain("schema_id") + expect(result.output).not.toContain("Resolved") + }) + + test("does not fall back when an existing schema lacks the requested table", async () => { + const primary = await Registry.get("primary") + await primary.execute("CREATE SCHEMA scratch") + const result = await inspect({ schema_name: "scratch", table: "t" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain("warehouse=scratch, schema_name=main") + }) + + test("a genuinely missing table lists warehouses and explicit addressing", async () => { + const result = await inspect({ schema_name: "scratch", table: "missing" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain('Table "missing" was not found') + expect(result.output).toContain("Available warehouses: primary, reporting, scratch") + expect(result.output).toContain("warehouse=scratch, schema_name=main") + }) + + test("does not guess an unknown qualifier from a table in the default schema", async () => { + const result = await inspect({ schema_name: "not_a_warehouse", table: "t" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain("warehouse=primary, schema_name=main") + }) + + test("does not probe other schemas after resolving a warehouse qualifier", async () => { + const reporting = await Registry.get("reporting") + await reporting.execute("CREATE SCHEMA analytics") + await reporting.execute("CREATE TABLE analytics.t (id INTEGER)") + const result = await inspect({ schema_name: "reporting", table: "t" }) + expect(result.metadata.success).toBe(false) + expect(result.output).toContain("warehouse=reporting, schema_name=main") + }) + + test("requires table and does not expose a table_name alias", async () => { + const tool = await initTool(SchemaInspectTool) + expect(tool.jsonSchema?.required).toContain("table") + expect(tool.jsonSchema?.properties).not.toHaveProperty("table_name") + await expect(inspect({ table_name: "t" })).rejects.toThrow("table") + }) +}) +// altimate_change end diff --git a/packages/opencode/test/altimate/tools/sql-check.test.ts b/packages/opencode/test/altimate/tools/sql-check.test.ts new file mode 100644 index 0000000000..d1e3bf092e --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-check.test.ts @@ -0,0 +1,994 @@ +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { Database } from "bun:sqlite" +import { Effect, Schema } from "effect" +import path from "path" +import { tmpdir } from "../../fixture/fixture" +import { testEffect } from "../../lib/effect" +import { initTool } from "../tool-fixture" +import { Agent } from "../../../src/agent/agent" +import { Permission } from "../../../src/permission" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { closeScratch, getScratch } from "../../../src/altimate/native/connections/scratch" +import { checkSql, SqlCheckTool } from "../../../src/altimate/tools/sql-check" + +const statements = [ + "CREATE TABLE orders (id INTEGER, customer_id INTEGER, kind TEXT, amount REAL, note TEXT)", + "INSERT INTO orders VALUES (1, 10, 'a', 5.5, 'first'), (2, 11, 'b', 7, NULL), (3, 10, 'a', 1.25, NULL), (4, 99, 'z', 3, 'tail'), (5, NULL, 'a', NULL, NULL)", + "CREATE TABLE customers (customer_id INTEGER, kind TEXT, name TEXT)", + "INSERT INTO customers VALUES (10, 'a', 'Ada'), (10, 'a', 'Another Ada'), (11, 'b', 'Bob'), (12, 'q', 'Cy'), (NULL, 'a', 'Unknown')", + "CREATE TABLE left_keys (key_value TEXT)", + "INSERT INTO left_keys VALUES ('same'), ('same'), ('ABC'), (' space '), ('00123'), ('pre-42'), ('missing-left'), (NULL)", + "CREATE TABLE right_keys (key_value TEXT)", + "INSERT INTO right_keys VALUES ('same'), ('same'), ('abc'), ('space'), ('123'), ('42'), ('missing-right'), (NULL)", + "CREATE TABLE codes (value TEXT)", + "INSERT INTO codes VALUES ('ID-001'), ('ID-002'), ('ID-003'), ('ID-004'), ('bad')", + ...["source", "lhs", "rhs", "groups", "summary", "samples", "l", "r"].flatMap((name) => [ + `CREATE TABLE "${name}" (id INTEGER)`, + `INSERT INTO "${name}" VALUES (7), (7), (8)`, + ]), +] + +let fixture: Awaited> +let sqlitePath: string +let previousTelemetry: string | undefined + +beforeAll(async () => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + fixture = await tmpdir() + sqlitePath = path.join(fixture.path, "checks.sqlite") + const sqlite = new Database(sqlitePath) + try { + for (const sql of statements) sqlite.run(sql) + sqlite.run("CREATE TABLE numeric_keys (id INTEGER)") + sqlite.run("INSERT INTO numeric_keys VALUES (1)") + sqlite.run("CREATE TABLE text_keys (id TEXT)") + sqlite.run("INSERT INTO text_keys VALUES ('1'), ('01')") + sqlite.run("CREATE TABLE left_case (id TEXT COLLATE NOCASE)") + sqlite.run("INSERT INTO left_case VALUES ('a')") + sqlite.run("CREATE TABLE right_case (id TEXT)") + sqlite.run("INSERT INTO right_case VALUES ('a'), ('A')") + } finally { + sqlite.close() + } +}) + +beforeEach(async () => { + Registry.setConfigs({ sqlite_fixture: { type: "sqlite", path: sqlitePath } }) + await closeScratch() + for (const sessionID of ["", "test-session"]) { + const duckdb = await getScratch(sessionID) + for (const sql of statements) await duckdb.execute(sql, undefined, undefined, { noLimit: true }) + } +}) + +afterEach(async () => { + await Registry.closeAll() +}) + +afterAll(async () => { + await closeScratch() + await fixture?.[Symbol.asyncDispose]() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +function compact(result: Awaited>) { + expect(result.output.split("\n").length).toBeLessThanOrEqual(25) + expect(result.output.toLowerCase()).toMatch(/fan-out:|keys:|grain:|nulls:|coverage:/) +} + +const leftSql = "SELECT * FROM orders" +const rightSql = "SELECT * FROM customers" +const sevenKeys = Array.from({ length: 7 }, (_, i) => `SELECT ${i + 1} AS id`).join(" UNION ALL ") + +test("publishes an object schema while requiring a coverage pattern at validation", async () => { + const tool = await initTool(SqlCheckTool) + expect(tool.jsonSchema).toMatchObject({ type: "object", properties: { pattern: { type: "string" } } }) + expect(tool.jsonSchema).not.toHaveProperty("anyOf") + const decode = Schema.decodeUnknownSync(tool.parameters) + expect(() => decode({ warehouse: "sqlite_fixture", check: "coverage", sql: "SELECT '' AS note", column: "note" })).toThrow() + expect(decode({ warehouse: "sqlite_fixture", check: "grain" })).toEqual({ warehouse: "sqlite_fixture", check: "grain" }) +}) + +testEffect(Agent.defaultLayer).instance( + "analyst and data-explorer can invoke sql_check while SQL writes remain denied", + () => + Effect.gen(function* () { + for (const name of ["analyst", "data-explorer"]) { + const agent = (yield* Agent.use.get(name))! + expect(Permission.evaluate("sql_check", "*", agent.permission).action).toBe("allow") + expect(Permission.evaluate("sql_execute_write", "*", agent.permission).action).toBe("deny") + } + }), +) + +for (const warehouse of ["sqlite_fixture", "scratch"] as const) { + describe(`sql_check with ${warehouse === "scratch" ? "DuckDB" : "SQLite"}`, () => { + test("fanout counts complete left joins and distinct multiplying keys", async () => { + const result = await checkSql({ + warehouse, + check: "fanout", + left_sql: leftSql, + right_sql: rightSql, + on: [["customer_id", "customer_id"]], + join: "left", + }) + expect(result.metadata).toMatchObject({ + check: "fanout", + left_rows: 5, + right_rows: 5, + joined_rows: 7, + fanout_ratio: 1.4, + left_keys: 4, + multiplying_keys: 1, + samples: [{ key: [10], matches: 2 }], + }) + expect(result.output).toContain("1.40") + expect(result.output).toMatch(/multipli|multiple/) + compact(result) + }) + + test("inner join detects multiplication even when missing matches keep the ratio at one", async () => { + const result = await checkSql({ + warehouse, + check: "fanout", + left_sql: leftSql, + right_sql: rightSql, + on: [["customer_id", "customer_id"]], + join: "inner", + }) + expect(result.metadata).toMatchObject({ + left_rows: 5, + right_rows: 5, + joined_rows: 5, + fanout_ratio: 1, + multiplying_keys: 1, + }) + expect(result.output).not.toContain("no multiplication") + compact(result) + }) + + test("fanout reports no multiplication for a unique right key and handles composite keys", async () => { + const result = await checkSql({ + warehouse, + check: "fanout", + left_sql: leftSql, + right_sql: "SELECT DISTINCT customer_id, kind FROM customers", + on: [ + ["customer_id", "customer_id"], + ["kind", "kind"], + ], + join: "left", + }) + expect(result.metadata).toMatchObject({ + left_rows: 5, + right_rows: 4, + joined_rows: 5, + fanout_ratio: 1, + multiplying_keys: 0, + samples: [], + }) + expect(result.output).toContain("no multiplication") + compact(result) + }) + + test("keys identifies exact, case, whitespace, and leading-zero matches without fixing values", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT * FROM left_keys", + left_col: "key_value", + right_sql: "SELECT * FROM right_keys", + right_col: "key_value", + }) + expect(result.metadata).toMatchObject({ + check: "keys", + distinct_left: 6, + distinct_right: 6, + matched_exact: 1, + matched_trim_lower: 3, + matched_normalized: warehouse === "scratch" ? 3 : "n/a", + matched_without_leading_zeros: 4, + }) + expect(result.metadata.format_differences).toEqual( + expect.arrayContaining(["case-only", "whitespace", "leading zeros", "prefix/suffix"]), + ) + expect(result.metadata.unmatched_left).toEqual( + expect.arrayContaining(["ABC", " space ", "00123", "pre-42", "missing-left"]), + ) + expect(result.metadata.unmatched_right).toEqual( + expect.arrayContaining(["abc", "space", "123", "42", "missing-right"]), + ) + expect(result.output).toContain("leading zeros") + compact(result) + }) + + test("keys handles punctuation normalization or explicitly reports it unavailable", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 'AB-12' AS k", + left_col: "k", + right_sql: "SELECT 'ab12' AS k", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 0, + matched_trim_lower: 0, + matched_normalized: warehouse === "scratch" ? 1 : "n/a", + }) + if (warehouse === "sqlite_fixture") expect(result.output).toContain("n/a") + compact(result) + }) + + test("keys reports a type difference even when textual values match", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 123 AS k", + left_col: "k", + right_sql: "SELECT '123' AS k", + right_col: "k", + }) + expect(result.metadata.format_differences).toContain("type") + compact(result) + }) + + test("keys reports complete left coverage for a proper subset", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 'item-a' AS k UNION ALL SELECT 'item-a' UNION ALL SELECT NULL", + left_col: "k", + right_sql: "SELECT 'item-a' AS k UNION ALL SELECT 'item-ab'", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + distinct_left: 1, + distinct_right: 2, + matched_exact: 1, + left_coverage: 1, + right_coverage: 0.5, + unmatched_left: [], + unmatched_right: ["item-ab"], + }) + expect(result.output).toContain("left coverage complete") + expect(result.output).toContain("left 1/1; right 1/2") + expect(result.output).not.toContain("unmatched keys found") + expect(result.metadata.format_differences).not.toContain("prefix/suffix") + }) + + test("integer keys skip text format probes even when values share prefixes", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 12 AS k UNION ALL SELECT -12 UNION ALL SELECT NULL", + left_col: "k", + right_sql: "SELECT 12 AS k UNION ALL SELECT 123", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 1, + left_coverage: 0.5, + right_coverage: 0.5, + matched_trim_lower: "n/a", + matched_normalized: "n/a", + matched_without_leading_zeros: "n/a", + format_differences: [], + }) + expect(result.output).toContain("skipped (integer keys)") + expect(result.output).toContain("unmatched left keys found") + }) + + test("normalization counts distinct left values despite colliding right forms", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 'ABC' AS k UNION ALL SELECT ' AbC ' UNION ALL SELECT '0012'", + left_col: "k", + right_sql: + "SELECT 'abc' AS k UNION ALL SELECT 'ABC' UNION ALL SELECT ' abc ' UNION ALL SELECT '12' UNION ALL SELECT '012'", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 1, + matched_trim_lower: 2, + matched_normalized: warehouse === "scratch" ? 2 : "n/a", + matched_without_leading_zeros: 3, + }) + expect(result.metadata.format_differences).toEqual( + expect.arrayContaining(["case-only", "whitespace", "leading zeros"]), + ) + }) + + test("prefix diagnostics compare unmatched left keys with covered right keys", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT 'item' AS k UNION ALL SELECT 'prefix-item'", + left_col: "k", + right_sql: "SELECT 'item' AS k", + right_col: "k", + }) + expect(result.metadata.format_differences).toContain("prefix/suffix") + expect(result.output).toContain("up to 100 unmatched left keys and 100 right keys") + }) + + test("keys reports empty-side coverage as unavailable", async () => { + for (const empty of ["left", "right", "both"]) { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: `SELECT 'item' AS k${empty !== "right" ? " WHERE 1 = 0" : ""}`, + left_col: "k", + right_sql: `SELECT 'item' AS k${empty !== "left" ? " WHERE 1 = 0" : ""}`, + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 0, + left_coverage: empty !== "right" ? null : 0, + right_coverage: empty !== "left" ? null : 0, + }) + expect(result.output).toContain("n/a (empty input)") + } + }) + + test("keys detects whitespace combined with a case difference", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT ' AbC ' AS k", + left_col: "k", + right_sql: "SELECT 'abc' AS k", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ matched_exact: 0, matched_trim_lower: 1 }) + expect(result.metadata.format_differences).toContain("whitespace") + }) + + test("leading-zero normalization does not turn an empty key into zero", async () => { + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: "SELECT '' AS k", + left_col: "k", + right_sql: "SELECT '0' AS k", + right_col: "k", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 0, + matched_trim_lower: 0, + matched_without_leading_zeros: 0, + }) + expect(result.metadata.format_differences).not.toContain("leading zeros") + }) + + test("internal CTEs do not shadow source tables with common names", async () => { + for (const name of ["source", "lhs", "rhs", "groups", "summary", "samples", "l", "r"]) { + const result = await checkSql({ warehouse, check: "grain", sql: `SELECT * FROM "${name}"`, columns: ["id"] }) + expect(result.metadata).toMatchObject({ total_rows: 3, distinct_combinations: 2, duplicate_count: 1 }) + } + const keys = await checkSql({ + warehouse, + check: "keys", + left_sql: 'SELECT * FROM "l"', + left_col: "id", + right_sql: 'SELECT * FROM "r"', + right_col: "id", + }) + expect(keys.metadata).toMatchObject({ distinct_left: 2, distinct_right: 2, matched_exact: 2 }) + const fanout = await checkSql({ + warehouse, + check: "fanout", + left_sql: 'SELECT * FROM "lhs"', + right_sql: 'SELECT * FROM "rhs"', + on: [["id", "id"]], + }) + expect(fanout.metadata).toMatchObject({ + left_rows: 3, + right_rows: 3, + joined_rows: 5, + left_keys: 2, + multiplying_keys: 1, + }) + const nulls = await checkSql({ warehouse, check: "nulls", sql: 'SELECT * FROM "summary"', columns: ["id"] }) + expect(nulls.metadata).toMatchObject({ total_rows: 3, columns: [{ column: "id", null_count: 0 }] }) + const coverage = await checkSql({ + warehouse, + check: "coverage", + sql: 'SELECT * FROM "samples"', + column: "id", + pattern: "7", + }) + expect(coverage.metadata).toMatchObject({ rows: 3, matching_rows: 2 }) + }) + + test("grain counts duplicate rows and includes NULL in distinct combinations", async () => { + const result = await checkSql({ warehouse, check: "grain", sql: leftSql, columns: ["customer_id", "kind"] }) + expect(result.metadata).toMatchObject({ + check: "grain", + total_rows: 5, + distinct_combinations: 4, + duplicate_count: 1, + samples: [{ key: [10, "a"], count: 2 }], + }) + expect(result.output).toMatch(/duplicat/) + compact(result) + }) + + test("grain recognizes a unique row key", async () => { + const result = await checkSql({ warehouse, check: "grain", sql: leftSql, columns: ["id"] }) + expect(result.metadata).toMatchObject({ + total_rows: 5, + distinct_combinations: 5, + duplicate_count: 0, + samples: [], + }) + compact(result) + }) + + // Strict-schema callers (OpenAI Responses API) send every property and fill unused ones + // with "" or []; the call must run as if those were omitted. + test("accepts empty strings and arrays for unused fields", async () => { + const result = await checkSql({ + warehouse, + check: "grain", + sql: leftSql, + columns: ["id"], + column: "", + pattern: "", + left_sql: "", + right_sql: "", + on: [], + join: "", + left_col: "", + right_col: "", + left_warehouse: "", + right_warehouse: "", + query_timeout_ms: 10_000, + }) + expect(result.metadata).toMatchObject({ check: "grain", total_rows: 5, duplicate_count: 0 }) + }) + + test("an empty coverage pattern is a value, not an omission", async () => { + const result = await checkSql({ + warehouse, + check: "coverage", + sql: "SELECT '' AS note", + column: "note", + pattern: "", + }) + expect(result.metadata).toMatchObject({ check: "coverage" }) + expect(result.title).not.toContain("ERROR") + }) + + test("registered coverage checks preserve empty patterns and default filler deadlines", async () => { + const source = warehouse === "scratch" ? await getScratch("test-session") : await Registry.get(warehouse) + const execute = spyOn(source, "execute") + const tool = await initTool(SqlCheckTool) + try { + for (const query_timeout_ms of [undefined, [], "", 0, null, 4321]) { + const result = await tool.execute( + { warehouse, check: "coverage", sql: "SELECT '' AS note", column: "note", pattern: "", query_timeout_ms }, + { + sessionID: "test-session", + messageID: "test-message", + agent: "test", + abort: new AbortController().signal, + messages: [], + }, + ) + expect(result.title).not.toContain("ERROR") + expect(result.metadata).toMatchObject({ check: "coverage", matching_rows: 1 }) + expect(execute.mock.calls.at(-1)?.[3]?.queryTimeoutMs).toBe(query_timeout_ms === 4321 ? 4321 : 120_000) + } + expect(execute).toHaveBeenCalledTimes(6) + } finally { + execute.mockRestore() + } + }) + + test("still reports missing required fields after empty values are dropped", async () => { + await expect(checkSql({ warehouse, check: "grain", sql: leftSql, columns: [], column: "" })).rejects.toThrow( + /columns/, + ) + }) + + test("the registered tool accepts the strict-schema shape instead of rejecting the arguments", async () => { + const tool = await initTool(SqlCheckTool) + const result = await tool.execute( + { + warehouse, + check: "coverage", + sql: leftSql, + columns: [], + column: "note", + pattern: "^f", + left_sql: "", + right_sql: "", + on: [], + join: "", + left_col: "", + right_col: "", + left_warehouse: "", + right_warehouse: "", + query_timeout_ms: 0, + }, + { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, + }, + ) + expect(result.title).not.toContain("ERROR") + expect(result.metadata).toMatchObject({ check: "coverage" }) + }) + + test("nulls reports per-column NULL counts, shares, and non-NULL distinct values", async () => { + const result = await checkSql({ warehouse, check: "nulls", sql: leftSql, columns: ["customer_id", "note"] }) + expect(result.metadata).toMatchObject({ + check: "nulls", + total_rows: 5, + columns: [ + { column: "customer_id", null_count: 1, null_share: 0.2, distinct_count: 3 }, + { column: "note", null_count: 3, null_share: 0.6, distinct_count: 2 }, + ], + }) + compact(result) + }) + + test("coverage detects the missing fifth of values using regex or the SQLite LIKE fallback", async () => { + const result = await checkSql({ + warehouse, + check: "coverage", + sql: "SELECT * FROM codes", + column: "value", + pattern: warehouse === "scratch" ? "^ID-[0-9]{3}$" : "ID-%", + }) + expect(result.metadata).toMatchObject({ + check: "coverage", + rows: 5, + matching_rows: 4, + share: 0.8, + pattern_mode: warehouse === "scratch" ? "regex" : "like", + samples: ["bad"], + }) + if (warehouse === "sqlite_fixture") expect(result.output).toMatch(/LIKE/) + compact(result) + }) + + test("coverage includes NULL among uncovered rows", async () => { + const result = await checkSql({ + warehouse, + check: "coverage", + sql: "SELECT 'ok' AS value UNION ALL SELECT NULL", + column: "value", + pattern: "ok", + }) + expect(result.metadata).toMatchObject({ rows: 2, matching_rows: 1, share: 0.5, samples: [null] }) + compact(result) + }) + + test("handles empty inputs without inventing a perfect ratio or coverage share", async () => { + const sql = "SELECT * FROM orders WHERE 1 = 0" + const grain = await checkSql({ warehouse, check: "grain", sql, columns: ["id"] }) + expect(grain.metadata).toMatchObject({ total_rows: 0, distinct_combinations: 0, duplicate_count: 0, samples: [] }) + const fanout = await checkSql({ + warehouse, + check: "fanout", + left_sql: sql, + right_sql: rightSql, + on: [["customer_id", "customer_id"]], + }) + expect(fanout.metadata).toMatchObject({ left_rows: 0, joined_rows: 0, fanout_ratio: null, multiplying_keys: 0 }) + const coverage = await checkSql({ warehouse, check: "coverage", sql, column: "kind", pattern: "a" }) + expect(coverage.metadata).toMatchObject({ rows: 0, matching_rows: 0, share: null, samples: [] }) + const nulls = await checkSql({ warehouse, check: "nulls", sql, columns: ["note"] }) + expect(nulls.metadata).toMatchObject({ + total_rows: 0, + columns: [{ column: "note", null_count: 0, null_share: null, distinct_count: 0 }], + }) + for (const result of [grain, fanout, coverage, nulls]) compact(result) + }) + + test("checks every source row beyond 1000 while preserving an explicit source LIMIT", async () => { + const sql = + "WITH RECURSIVE seq(n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM seq WHERE n < 1205) SELECT n % 3 AS bucket FROM seq" + const all = await checkSql({ warehouse, check: "grain", sql, columns: ["bucket"] }) + expect(all.metadata).toMatchObject({ total_rows: 1205, distinct_combinations: 3, duplicate_count: 1202 }) + const limited = await checkSql({ warehouse, check: "grain", sql: `${sql} LIMIT 7`, columns: ["bucket"] }) + expect(limited.metadata).toMatchObject({ total_rows: 7, distinct_combinations: 3, duplicate_count: 4 }) + }) + + test("caps all diagnostic sample lists at five while retaining complete counts", async () => { + const duplicateKeys = `${sevenKeys} UNION ALL ${sevenKeys}` + const fanout = await checkSql({ + warehouse, + check: "fanout", + left_sql: sevenKeys, + right_sql: duplicateKeys, + on: [["id", "id"]], + }) + expect(fanout.metadata).toMatchObject({ left_rows: 7, right_rows: 14, joined_rows: 14, multiplying_keys: 7 }) + expect(fanout.metadata.samples).toHaveLength(5) + const grain = await checkSql({ warehouse, check: "grain", sql: duplicateKeys, columns: ["id"] }) + expect(grain.metadata).toMatchObject({ total_rows: 14, distinct_combinations: 7, duplicate_count: 7 }) + expect(grain.metadata.samples).toHaveLength(5) + const keys = await checkSql({ + warehouse, + check: "keys", + left_sql: sevenKeys, + left_col: "id", + right_sql: `SELECT id + 10 AS id FROM (${sevenKeys}) source_keys`, + right_col: "id", + }) + expect(keys.metadata).toMatchObject({ distinct_left: 7, distinct_right: 7, matched_exact: 0 }) + expect(keys.metadata.unmatched_left).toHaveLength(5) + expect(keys.metadata.unmatched_right).toHaveLength(5) + const coverage = await checkSql({ + warehouse, + check: "coverage", + sql: sevenKeys, + column: "id", + pattern: "missing", + }) + expect(coverage.metadata).toMatchObject({ rows: 7, matching_rows: 0 }) + expect(coverage.metadata.samples).toHaveLength(5) + for (const result of [fanout, grain, keys, coverage]) compact(result) + }) + + test("escapes column identifiers and pattern literals", async () => { + const sql = `SELECT 'O''Reilly' AS "key""name" UNION ALL SELECT 'other' AS "key""name"` + const grain = await checkSql({ warehouse, check: "grain", sql, columns: ['key"name'] }) + expect(grain.metadata).toMatchObject({ total_rows: 2, distinct_combinations: 2 }) + const coverage = await checkSql({ warehouse, check: "coverage", sql, column: 'key"name', pattern: "O'Reilly" }) + expect(coverage.metadata).toMatchObject({ rows: 2, matching_rows: 1, samples: ["other"] }) + }) + + test("missing columns fail in every mode instead of becoming SQLite string literals", async () => { + await expect(checkSql({ warehouse, check: "grain", sql: leftSql, columns: ["missing_column"] })).rejects.toThrow( + /column/i, + ) + await expect(checkSql({ warehouse, check: "nulls", sql: leftSql, columns: ["missing_column"] })).rejects.toThrow( + /column/i, + ) + await expect( + checkSql({ warehouse, check: "coverage", sql: leftSql, column: "missing_column", pattern: "anything" }), + ).rejects.toThrow(/column/i) + await expect( + checkSql({ + warehouse, + check: "fanout", + left_sql: leftSql, + right_sql: rightSql, + on: [["customer_id", "missing_column"]], + }), + ).rejects.toThrow(/column/i) + await expect( + checkSql({ + warehouse, + check: "keys", + left_sql: leftSql, + left_col: "missing_column", + right_sql: rightSql, + right_col: "customer_id", + }), + ).rejects.toThrow(/column/i) + }) + + test("accepts a read-only REPLACE function and semicolons inside quoted text", async () => { + const result = await checkSql({ + warehouse, + check: "grain", + sql: "SELECT REPLACE('a;b', ';', '') AS value; -- trailing comment", + columns: ["value"], + }) + expect(result.metadata).toMatchObject({ total_rows: 1, distinct_combinations: 1, duplicate_count: 0 }) + }) + + test("rejects non-SELECT input before any connector execution", async () => { + const connector = await Registry.get(warehouse) + const execute = spyOn(connector, "execute") + try { + for (const sql of [ + "DELETE FROM orders", + "INSERT INTO orders (id) VALUES (100)", + "DROP TABLE orders", + "SELECT 1; DELETE FROM orders", + "WITH removed AS (DELETE FROM orders RETURNING *) SELECT * FROM removed", + "SELECT * INTO copied_orders FROM orders", + "SELECT nextval('seq') AS id", + "SELECT \"nextval\"('seq') AS id", + "SELECT setval('seq', 4) AS id", + "SELECT load_extension('file') AS id", + "SELECT writefile('file', 'contents') AS id", + ]) { + await expect(checkSql({ warehouse, check: "grain", sql, columns: ["id"] })).rejects.toThrow(/read|SELECT/i) + await expect( + checkSql({ + warehouse, + check: "fanout", + left_sql: leftSql, + right_sql: sql, + on: [["customer_id", "customer_id"]], + }), + ).rejects.toThrow(/read|SELECT/i) + } + expect(execute).not.toHaveBeenCalled() + } finally { + execute.mockRestore() + } + expect((await checkSql({ warehouse, check: "grain", sql: leftSql, columns: ["id"] })).metadata.total_rows).toBe(5) + }) + + test("forwards the query timeout and suppresses connector LIMIT injection", async () => { + const connector = await Registry.get(warehouse) + const execute = spyOn(connector, "execute") + try { + await checkSql({ warehouse, check: "grain", sql: leftSql, columns: ["id"], query_timeout_ms: 4321 }) + expect(execute.mock.calls.length).toBeGreaterThan(0) + for (const call of execute.mock.calls) expect(call[3]).toMatchObject({ noLimit: true, queryTimeoutMs: 4321 }) + } finally { + execute.mockRestore() + } + }) + }) +} + +test("SQLite fanout preserves numeric affinity when a right key has multiple textual forms", async () => { + const result = await checkSql({ + warehouse: "sqlite_fixture", + check: "fanout", + left_sql: "SELECT * FROM numeric_keys", + right_sql: "SELECT * FROM text_keys", + on: [["id", "id"]], + }) + expect(result.metadata).toMatchObject({ + left_rows: 1, + right_rows: 2, + joined_rows: 2, + fanout_ratio: 2, + left_keys: 1, + multiplying_keys: 1, + samples: [{ key: [1], matches: 2 }], + }) +}) + +test("SQLite fanout respects a NOCASE left key when the right key uses binary collation", async () => { + const result = await checkSql({ + warehouse: "sqlite_fixture", + check: "fanout", + left_sql: "SELECT * FROM left_case", + right_sql: "SELECT * FROM right_case", + on: [["id", "id"]], + }) + expect(result.metadata).toMatchObject({ + left_rows: 1, + right_rows: 2, + joined_rows: 2, + fanout_ratio: 2, + left_keys: 1, + multiplying_keys: 1, + samples: [{ key: ["a"], matches: 2 }], + }) +}) + +test("SQLite fanout does not merge right keys under a broader collation than the join", async () => { + const result = await checkSql({ + warehouse: "sqlite_fixture", + check: "fanout", + left_sql: "SELECT id FROM right_case", + right_sql: "SELECT id COLLATE NOCASE AS id FROM right_case", + on: [["id", "id"]], + }) + expect(result.metadata).toMatchObject({ + left_rows: 2, + right_rows: 2, + joined_rows: 2, + left_keys: 2, + multiplying_keys: 0, + }) +}) + +test("refuses cross-warehouse checks and explains the materialization prerequisite", async () => { + await expect( + checkSql({ + warehouse: "sqlite_fixture", + check: "fanout", + left_warehouse: "sqlite_fixture", + right_warehouse: "scratch", + left_sql: leftSql, + right_sql: rightSql, + on: [["customer_id", "customer_id"]], + }), + ).rejects.toThrow(/sql_materialize/) + await expect( + checkSql({ + warehouse: "sqlite_fixture", + check: "keys", + left_warehouse: "scratch", + left_sql: "SELECT * FROM left_keys", + left_col: "key_value", + right_sql: "SELECT * FROM right_keys", + right_col: "key_value", + }), + ).rejects.toThrow(/sql_materialize/) +}) + +test("PostgreSQL checks execute with readOnly for postgres and postgresql connectors", async () => { + const connector = await Registry.get("sqlite_fixture") + const execute = spyOn(connector, "execute").mockResolvedValue({ + columns: ["n", "null_0", "distinct_0"], + rows: [[1, 0, 1]], + row_count: 1, + truncated: false, + }) + const get = spyOn(Registry, "get").mockResolvedValue(connector) + try { + for (const type of ["postgres", "postgresql"]) { + Registry.setConfigs({ pg_fixture: { type } }) + const result = await checkSql({ + warehouse: "pg_fixture", + check: "nulls", + sql: "SELECT 1 AS id", + columns: ["id"], + query_timeout_ms: 4321, + }) + expect(result.metadata.total_rows).toBe(1) + } + expect(get).toHaveBeenCalledTimes(2) + expect(get).toHaveBeenCalledWith("pg_fixture") + expect(execute).toHaveBeenCalledTimes(2) + for (const call of execute.mock.calls) { + expect(call[3]).toMatchObject({ readOnly: true, noLimit: true, queryTimeoutMs: 4321 }) + } + } finally { + get.mockRestore() + execute.mockRestore() + } +}) + +test("PostgreSQL checks report a write-performing SELECT as an error under readOnly", async () => { + const connector = await Registry.get("sqlite_fixture") + let writes = 0 + const execute = spyOn(connector, "execute").mockImplementation(async (sql, _limit, _binds, options) => { + expect(sql).toContain("mutate_data()") + if (options?.readOnly) throw new Error("cannot execute INSERT in a read-only transaction") + writes++ + return { columns: ["n", "null_0", "distinct_0"], rows: [[1, 0, 1]], row_count: 1, truncated: false } + }) + const get = spyOn(Registry, "get").mockResolvedValue(connector) + Registry.setConfigs({ pg_fixture: { type: "postgres" } }) + try { + const tool = await initTool(SqlCheckTool) + const result = await tool.execute( + { warehouse: "pg_fixture", check: "nulls", sql: "SELECT mutate_data() AS id", columns: ["id"] }, + { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, + }, + ) + expect(result.title).toContain("ERROR") + expect(result.metadata.error).toBe("cannot execute INSERT in a read-only transaction") + expect(result.output).toContain("no verdict") + expect(writes).toBe(0) + expect(execute).toHaveBeenCalledTimes(1) + } finally { + get.mockRestore() + execute.mockRestore() + } +}) + +test("the registered tool reports SQL refusal as an error result", async () => { + const tool = await initTool(SqlCheckTool) + const result = await tool.execute( + { warehouse: "sqlite_fixture", check: "grain", sql: "DELETE FROM orders", columns: ["id"] }, + { + sessionID: "test-session", + messageID: "test-message", + callID: "test-call", + agent: "test", + abort: new AbortController().signal, + messages: [], + metadata: () => {}, + }, + ) + expect(result.title).toContain("ERROR") + expect(result.metadata.error).toBeDefined() + expect(result.output).toMatch(/read|SELECT/i) +}) + +for (const warehouse of ["sqlite_fixture", "scratch"] as const) { + for (const contained of [true, false]) { + test( + `keys finishes large ${contained ? "contained" : "disjoint"} text sets within its deadline on ${warehouse === "scratch" ? "DuckDB" : "SQLite"}`, + async () => { + const connector = await Registry.get(warehouse) + const leftTable = contained ? "contained_left_keys" : "disjoint_left_keys" + const rightTable = contained ? "contained_right_keys" : "disjoint_right_keys" + const values = (size: number) => + warehouse === "scratch" + ? `SELECT i AS n FROM range(${size}) keys(i)` + : `WITH RECURSIVE keys(n) AS (SELECT 0 UNION ALL SELECT n + 1 FROM keys WHERE n + 1 < ${size}) SELECT n FROM keys` + await connector.execute( + `CREATE TABLE ${leftTable} AS SELECT '${contained ? "key-" : "missing-"}' || n AS id FROM (${values(7_000)}) source_keys`, + undefined, + undefined, + { noLimit: true }, + ) + await connector.execute( + `CREATE TABLE ${rightTable} AS SELECT 'key-' || n AS id FROM (${values(130_000)}) source_keys`, + undefined, + undefined, + { noLimit: true }, + ) + + const started = performance.now() + const result = await checkSql({ + warehouse, + check: "keys", + left_sql: `SELECT id FROM ${leftTable}`, + left_col: "id", + right_sql: `SELECT id FROM ${rightTable}`, + right_col: "id", + query_timeout_ms: 5_000, + }) + const elapsed = performance.now() - started + expect(elapsed).toBeLessThan(5_000) + expect(result.metadata).toMatchObject({ + distinct_left: 7_000, + distinct_right: 130_000, + matched_exact: contained ? 7_000 : 0, + matched_trim_lower: contained ? 7_000 : 0, + matched_normalized: warehouse === "sqlite_fixture" ? "n/a" : contained ? 7_000 : 0, + matched_without_leading_zeros: contained ? 7_000 : 0, + }) + expect(result.metadata.unmatched_left).toHaveLength(contained ? 0 : 5) + expect(result.metadata.unmatched_right).toHaveLength(5) + compact(result) + }, + 30_000, + ) + } +} + +test("SQLite keys keeps text probes for mixed integer and text storage", async () => { + const result = await checkSql({ + warehouse: "sqlite_fixture", + check: "keys", + left_sql: "SELECT 12 AS id UNION ALL SELECT ' ABC '", + left_col: "id", + right_sql: "SELECT 12 AS id UNION ALL SELECT 'abc'", + right_col: "id", + }) + expect(result.metadata).toMatchObject({ + matched_exact: 1, + matched_trim_lower: 2, + }) + expect(result.metadata.format_differences).toContain("whitespace") +}) + +test("DuckDB keys skips text probes for unsigned and huge integer types", async () => { + for (const type of ["UTINYINT", "USMALLINT", "UINTEGER", "UBIGINT", "HUGEINT", "UHUGEINT"]) { + const result = await checkSql({ + warehouse: "scratch", + check: "keys", + left_sql: `SELECT CAST(12 AS ${type}) AS id`, + left_col: "id", + right_sql: `SELECT CAST(12 AS ${type}) AS id UNION ALL SELECT CAST(123 AS ${type})`, + right_col: "id", + }) + expect(result.metadata).toMatchObject({ distinct_left: 1, distinct_right: 2, matched_exact: 1 }) + expect(result.metadata.format_differences).toEqual([]) + } +}) diff --git a/packages/opencode/test/altimate/tools/sql-classify.test.ts b/packages/opencode/test/altimate/tools/sql-classify.test.ts index 8c9136d248..2032a7b35d 100644 --- a/packages/opencode/test/altimate/tools/sql-classify.test.ts +++ b/packages/opencode/test/altimate/tools/sql-classify.test.ts @@ -1,5 +1,6 @@ import { describe, expect, test } from "bun:test" -import { classify, classifyMulti, classifyAndCheck, computeSqlFingerprint } from "../../../src/altimate/tools/sql-classify" +import { classify, classifyMulti, classifyAndCheck, computeSqlFingerprint, isSingleQuery } from "../../../src/altimate/tools/sql-classify" +import { statementsOf } from "../../../src/altimate/tools/sql-tokenize" describe("classify", () => { // --- Read queries --- @@ -12,12 +13,15 @@ describe("classify", () => { expect(classify("select id from orders")).toBe("read") }) - test("SHOW → write (ambiguous, prompts for permission)", () => { - expect(classify("SHOW TABLES")).toBe("write") + // Metadata statements cannot modify data; a read-only agent must be able to list + // tables and inspect plans. Only an EXPLAIN that would execute a write stays a write. + test("SHOW → read (metadata)", () => { + expect(classify("SHOW TABLES")).toBe("read") }) - test("EXPLAIN → write (ambiguous, prompts for permission)", () => { - expect(classify("EXPLAIN SELECT * FROM users")).toBe("write") + test("EXPLAIN of a read → read; EXPLAIN ANALYZE of a write → write", () => { + expect(classify("EXPLAIN SELECT * FROM users")).toBe("read") + expect(classify("EXPLAIN ANALYZE DELETE FROM users")).toBe("write") }) test("WITH...SELECT (CTE) → read", () => { @@ -102,8 +106,8 @@ describe("classify", () => { // --- "other" category (ambiguous ops) → write (prompts for permission) --- - test("SHOW TABLES → write (prompts)", () => { - expect(classify("SHOW TABLES")).toBe("write") + test("SHOW TABLES → read (metadata)", () => { + expect(classify("SHOW TABLES")).toBe("read") }) test("SET variable → write (prompts)", () => { @@ -116,6 +120,32 @@ describe("classify", () => { }) describe("classifyMulti", () => { + for (const dialect of ["mysql", "sqlite", "bigquery", "clickhouse", "unknown", undefined]) { + test(`dollar-delimited writes fail closed for ${dialect ?? "omitted"} dialect`, () => { + const sql = "SELECT $x$; DELETE FROM t; $x$" + expect(classifyMulti(sql, dialect)).toBe("write") + expect(classifyAndCheck(sql, dialect)).toMatchObject({ queryType: "write", blocked: false }) + const statements = statementsOf(sql, dialect) + expect(statements).toHaveLength(3) + expect(statements.map((statement) => classify(statement, dialect))).toContain("write") + expect(isSingleQuery(sql, dialect)).toBe(false) + }) + } + + for (const [dialect, sql] of [ + ["postgres", "SELECT $x$ a; b $x$"], + ["postgres", "SELECT $$ ; DROP TABLE t $$"], + ["redshift", "SELECT $x$ a; b $x$"], + ["duckdb", "SELECT $x$ a; b $x$"], + ["duckdb", "SELECT $$ ; DROP TABLE t $$"], + ["snowflake", "SELECT $$ ; DROP TABLE t $$"], + ]) { + test(`dollar-quoted content remains one read for ${dialect}: ${sql}`, () => { + expect(classifyAndCheck(sql, dialect)).toEqual({ queryType: "read", blocked: false }) + expect(isSingleQuery(sql, dialect)).toBe(true) + }) + } + test("all reads → read", () => { expect(classifyMulti("SELECT 1; SELECT 2")).toBe("read") }) @@ -169,9 +199,9 @@ describe("classifyAndCheck", () => { expect(r.blocked).toBe(false) }) - test("SHOW → write (ambiguous), not blocked", () => { + test("SHOW → read (metadata), not blocked", () => { const r = classifyAndCheck("SHOW TABLES") - expect(r.queryType).toBe("write") + expect(r.queryType).toBe("read") expect(r.blocked).toBe(false) }) @@ -233,9 +263,10 @@ describe("sql-execute permission flow", () => { } }) - test("ambiguous queries (SHOW, SET, USE) prompt for permission", () => { - // "other" category → treated as write → triggers ctx.ask() - const ambiguousQueries = ["SHOW TABLES", "SET search_path = public", "USE mydb"] + test("ambiguous session statements (SET, USE) prompt for permission", () => { + // "other" category → treated as write → triggers ctx.ask(). SHOW is a metadata + // read and is covered separately. + const ambiguousQueries = ["SET search_path = public", "USE mydb"] for (const q of ambiguousQueries) { const { queryType, blocked } = classifyAndCheck(q) expect(queryType).toBe("write") // prompts for permission @@ -293,3 +324,35 @@ describe("computeSqlFingerprint", () => { expect(result === null || typeof result === "object").toBe(true) }) }) + +describe("SQL-building aggregates are reads", () => { + const cases: [string, string][] = [ + ["duckdb", "SELECT string_agg('SELECT * FROM ' || table_name, ' UNION ALL ') FROM information_schema.tables WHERE table_schema = 'main'"], + ["duckdb", "SELECT string_agg('''' || Symbol || '''', ',' ORDER BY Symbol) FROM t"], + ["duckdb", "SELECT string_agg('INSERT INTO x SELECT * FROM ' || table_name, '; ') FROM information_schema.tables"], + ["duckdb", "SELECT string_agg('DROP TABLE ' || table_name, '; ') FROM information_schema.tables"], + ["sqlite", "SELECT group_concat('SELECT * FROM ' || name, ' UNION ALL ') FROM sqlite_master WHERE type = 'table'"], + ["postgres", "SELECT string_agg('SELECT * FROM ' || quote_ident(table_name), ' UNION ALL ') FROM information_schema.tables"], + ["postgres", "SELECT string_agg(format('CREATE INDEX ON %I', table_name), '; ') FROM information_schema.tables"], + ] + for (const [dialect, sql] of cases) { + test(`${dialect}: ${sql.slice(0, 60)} → read, with no keyword-in-literal false positive`, () => { + expect(classifyAndCheck(sql, dialect)).toEqual({ queryType: "read", blocked: false }) + }) + } + + // Known core-parser gap (altimate-core-internal): DuckDB `//` integer division fails to parse, + // so a read-only string_agg query using it is conservatively classified as a write. + // Flip to `test` once the parser supports it. + test.skip("duckdb: `//` integer division in a string_agg query → read (core parser gap)", () => { + const sql = "SELECT 'c' || (rn // 240) c, count(*), string_agg('''' || Symbol || '''', ',' ORDER BY Symbol) FROM t GROUP BY 1" + expect(classifyAndCheck(sql, "duckdb").queryType).toBe("read") + }) + + test("duckdb: `//` currently fails closed with an explanatory diagnostic", () => { + const r = classifyAndCheck("SELECT 'c' || (rn // 240) c, string_agg(Symbol, ',') FROM t GROUP BY 1", "duckdb") + expect(r.queryType).toBe("write") + expect(r.blocked).toBe(false) + expect(r.parseError).toBeTruthy() + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-comment-safety.test.ts b/packages/opencode/test/altimate/tools/sql-comment-safety.test.ts new file mode 100644 index 0000000000..38d380a3fb --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-comment-safety.test.ts @@ -0,0 +1,231 @@ +import { afterEach, describe, expect, spyOn, test } from "bun:test" +import { classifyAndCheck, isSingleQuery, isScratchSafeWrite } from "../../../src/altimate/tools/sql-classify" +import { readSql } from "../../../src/altimate/tools/sql-check" +import { SqlExecuteTool } from "../../../src/altimate/tools/sql-execute" +import * as Registry from "../../../src/altimate/native/connections/registry" +import * as Dispatcher from "../../../src/altimate/native/dispatcher" +import { MessageID, SessionID } from "../../../src/session/schema" +import { initTool } from "../tool-fixture" + +afterEach(() => Registry.reset()) + +describe("SQL dialect comment safety", () => { + for (const sql of [ + "SELECT 1 /*! INTO OUTFILE '/tmp/x' */", + "SELECT 1 /*!50000 INTO OUTFILE '/tmp/x' */", + "SELECT 1 /*M! INTO OUTFILE '/tmp/x' */", + "SELECT 1 /*! + side_effecting_function() */", + ]) { + test(`executable comments are hard denied: ${sql}`, () => { + expect(classifyAndCheck(sql)).toMatchObject({ queryType: "write", blocked: true }) + expect(isSingleQuery(sql)).toBe(false) + expect(() => readSql(sql, "mysql")).toThrow(/single read-only SELECT/) + }) + } + for (const dialect of ["mysql", "mariadb", undefined]) { + test(`executable comments cannot bypass hard denies for ${dialect ?? "omitted"} dialect`, () => { + for (const sql of [ + "/*! DROP DATABASE x */", + "/*!50000 DROP SCHEMA x */", + "/*M! TRUNCATE TABLE x */", + "/*m!100100 DROP DATABASE x */", + "DROP /*! DATABASE */ x", + "SELECT 1; /*! TRUNCATE TABLE x */", + // Parser errors must preserve the same hard-deny boundary. + "SELECT (; /*! DROP DATABASE x */", + "/*! DROP DATABASE x", + // Reject executable comments outright: generic parsers cannot prove their safety. + "SELECT 1 /*! + 1 */", + ]) { + expect(classifyAndCheck(sql, dialect)).toMatchObject({ queryType: "write", blocked: true }) + } + }) + } + test("executable comments cannot hide a non-scratch operation", () => { + expect(isScratchSafeWrite("DELETE FROM t /*!; ATTACH 'external.db' AS external */")).toBe(false) + }) + for (const sql of ["SELECT 1--2 INTO OUTFILE '/tmp/x'", "SELECT 1--2 INTO DUMPFILE '/tmp/x'"]) { + test(`MySQL arithmetic is not a line comment: ${sql}`, () => { + expect(classifyAndCheck(sql).queryType).toBe("write") + expect(() => readSql(sql, "mysql")).toThrow(/single read-only SELECT/) + }) + } + test("MySQL arithmetic cannot hide hard-denied trailing statements from the generic parser", () => { + for (const statement of ["DROP DATABASE x", "DROP SCHEMA x", "TRUNCATE TABLE x"]) { + const sql = `SELECT 1--2; ${statement}` + expect(classifyAndCheck(sql, "mysql")).toMatchObject({ queryType: "write", blocked: true }) + expect(classifyAndCheck(sql, "mariadb")).toMatchObject({ queryType: "write", blocked: true }) + expect(classifyAndCheck(sql, "postgres")).toEqual({ queryType: "read", blocked: false }) + } + }) + test("PostgreSQL line comments without whitespace remain valid reads", () => { + const sql = "SELECT 1--2 INTO OUTFILE '/tmp/x'" + expect(classifyAndCheck(sql, "postgres").queryType).toBe("read") + expect(readSql(sql, "postgres")).toBe(sql) + expect(classifyAndCheck(sql, "mysql").queryType).toBe("write") + expect(classifyAndCheck(sql, "mariadb").queryType).toBe("write") + }) + test("ordinary comments and comment-like literals remain reads", () => { + for (const sql of [ + "SELECT 1 -- comment", + "SELECT 1--\tcomment", + "SELECT 1 /* comment */", + "SELECT 1 /* DROP DATABASE x */", + "SELECT '/*! INTO OUTFILE */ --2' AS value", + "SELECT '/*! DROP DATABASE x */' AS value", + 'SELECT 1 AS "/*M! TRUNCATE x */"', + ]) { + expect(classifyAndCheck(sql)).toEqual({ queryType: "read", blocked: false }) + expect(readSql(sql)).toBe(sql) + } + }) +}) + +describe("scratch write target catalog", () => { + for (const sql of [ + "DELETE FROM external.orders", + "DELETE FROM external.main.orders", + "UPDATE external.orders SET x = 1", + "INSERT INTO external.orders VALUES (1)", + "CREATE TABLE external.orders (id INT)", + "CREATE VIEW external.orders AS SELECT 1", + "DROP TABLE external.orders", + "ALTER TABLE external.orders ADD COLUMN x INT", + 'DELETE FROM "external"."orders"', + 'DELETE FROM "external.main"."orders"', + "DELETE FROM main.orders; DELETE FROM external.orders", + ]) { + test(`attached-catalog targets need write approval: ${sql}`, () => { + expect(isScratchSafeWrite(sql)).toBe(false) + }) + } + test("unqualified and main targets retain the scratch write exemption", () => { + for (const sql of [ + "DELETE FROM orders", + "DELETE FROM main.orders", + 'DELETE FROM "main"."orders"', + "UPDATE orders SET x = 1", + "INSERT INTO main.orders VALUES (1)", + "CREATE VIEW v AS SELECT * FROM main.orders", + ]) { + expect(isScratchSafeWrite(sql)).toBe(true) + } + }) +}) + +for (const dialect of ["mysql", "mariadb"]) { + test(`sql_execute denies ${dialect} comment-hidden writes before obtaining a connector`, async () => { + Registry.setConfigs({ source: { type: dialect } }) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("connector must not be reached")) + try { + const tool = await initTool(SqlExecuteTool) + for (const query of ["SELECT 1--2 INTO OUTFILE '/tmp/x'"]) { + const asked: string[] = [] + await expect( + tool.execute( + { warehouse: "source", query, limit: 10 }, + { + sessionID: SessionID.make("ses_mysql_comment"), + messageID: MessageID.make("msg_mysql_comment"), + callID: "", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask: async (request: { permission: string }) => { + asked.push(request.permission) + throw new Error("write permission denied") + }, + }, + ), + ).rejects.toThrow("write permission denied") + expect(asked).toEqual(["sql_execute_write"]) + } + expect(get).not.toHaveBeenCalled() + } finally { + get.mockRestore() + } + }) +} + +for (const dialect of ["mysql", "mariadb", undefined]) { + test(`sql_execute hard denies executable comments before permission or dispatch for ${dialect ?? "omitted"} dialect`, async () => { + if (dialect) Registry.setConfigs({ source: { type: dialect } }) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("connector must not be reached")) + const dispatch = spyOn(Dispatcher, "call").mockRejectedValue(new Error("dispatcher must not be reached")) + const asked: string[] = [] + try { + const tool = await initTool(SqlExecuteTool) + for (const query of [ + "/*! DROP DATABASE x */", + "SELECT 1; /*!50000 DROP SCHEMA x */", + "/*M! TRUNCATE TABLE x */", + "SELECT 1 /*! + 1 */", + ]) { + const error = await tool + .execute( + { warehouse: dialect ? "source" : undefined, query, limit: 10 }, + { + sessionID: SessionID.make("ses_mysql_hard_deny"), + messageID: MessageID.make("msg_mysql_hard_deny"), + callID: "", + agent: "build", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask: async (request: { permission: string }) => { + asked.push(request.permission) + }, + }, + ) + .catch((error: unknown) => error) + expect(error).toBeInstanceOf(Error) + expect(error).toMatchObject({ message: expect.stringMatching(/blocked for safety.*cannot be overridden/i) }) + } + expect(asked).toEqual([]) + expect(get).not.toHaveBeenCalled() + expect(dispatch).not.toHaveBeenCalled() + } finally { + get.mockRestore() + dispatch.mockRestore() + } + }) +} + +test("omitted SQL warehouse cannot assume the registry dialect before dbt execution", async () => { + Registry.setConfigs({ fallback: { type: "postgres" } }) + // The dispatcher tries dbt first when warehouse is omitted, so this query may + // reach MySQL even though the fallback connection uses PostgreSQL comments. + const dispatch = spyOn(Dispatcher, "call").mockResolvedValue({ + columns: ["value"], + rows: [[1]], + row_count: 1, + truncated: false, + } as never) + const asked: string[] = [] + try { + const tool = await initTool(SqlExecuteTool) + await expect( + tool.execute( + { query: "SELECT 1--2 INTO OUTFILE '/tmp/x'", limit: 10 }, + { + sessionID: SessionID.make("ses_dbt_comment"), + messageID: MessageID.make("msg_dbt_comment"), + callID: "", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [], + metadata: () => {}, + ask: async (request: { permission: string }) => { + asked.push(request.permission) + throw new Error("write permission denied") + }, + }, + ), + ).rejects.toThrow("write permission denied") + expect(asked).toEqual(["sql_execute_write"]) + expect(dispatch).not.toHaveBeenCalled() + } finally { + dispatch.mockRestore() + } +}) diff --git a/packages/opencode/test/altimate/tools/sql-execute-bigint-metadata.test.ts b/packages/opencode/test/altimate/tools/sql-execute-bigint-metadata.test.ts new file mode 100644 index 0000000000..446d72d1f9 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-execute-bigint-metadata.test.ts @@ -0,0 +1,80 @@ +import { afterAll, afterEach, beforeAll, describe, expect, test } from "bun:test" +import { SessionID, MessageID } from "../../../src/session/schema" +import { SqlExecuteTool } from "../../../src/altimate/tools/sql-execute" +import { SqlMaterializeTool } from "../../../src/altimate/tools/sql-materialize" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { closeScratch } from "../../../src/altimate/native/connections/scratch" +import { initTool } from "../tool-fixture" + +// An evaluation run died with `UnknownError: JSON.stringify cannot serialize BigInt` right after a +// DuckDB `COUNT(DISTINCT …)` on scratch: tool results are persisted and traced as JSON, so no +// BigInt may survive into a tool result's metadata or output. +const ctx = { + sessionID: SessionID.make("ses_bigint_meta"), + messageID: MessageID.make("msg_bigint_meta"), + callID: "", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [] as any[], + metadata: () => {}, + ask: async () => {}, +} + +let previousTelemetry: string | undefined + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + Registry.setConfigs({}) +}) + +afterEach(async () => { + await closeScratch() +}) + +afterAll(() => { + Registry.reset() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +describe("tool results stay JSON-serializable with BigInt values", () => { + test("sql_execute COUNT(DISTINCT) on scratch", async () => { + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query: "CREATE TABLE t AS SELECT * FROM (VALUES ('a'), ('b'), ('a')) v(name)", warehouse: "scratch", limit: 10 }, ctx) + const r: any = await tool.execute( + { query: "SELECT COUNT(DISTINCT name) AS n, COUNT(*) AS total, 9223372036854775807 AS big FROM t", warehouse: "scratch", limit: 10 }, + ctx, + ) + expect(r.metadata?.error).toBeUndefined() + expect(() => JSON.stringify(r)).not.toThrow() + expect(r.output).toContain("9223372036854775807") + }) + + test("sql_execute with a lint finding and BigInt values", async () => { + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query: "CREATE TABLE t2 AS SELECT * FROM (VALUES ('a', 1), ('b', 2), ('a', 3)) v(name, n)", warehouse: "scratch", limit: 10 }, ctx) + const r: any = await tool.execute( + { query: "SELECT name || NULL AS tagged, COUNT(*) AS c, SUM(n) AS s FROM t2 GROUP BY 1", warehouse: "scratch", limit: 10 }, + ctx, + ) + expect(r.metadata?.error).toBeUndefined() + expect(r.output).toContain("Checks:") + expect(() => JSON.stringify(r)).not.toThrow() + }) + + test("sql_materialize from a scratch query with BigInt columns", async () => { + const exec = await initTool(SqlExecuteTool) + await exec.execute({ query: "CREATE TABLE src AS SELECT range AS id, 9223372036854775807 - range AS big FROM range(5)", warehouse: "scratch", limit: 10 }, ctx) + const mat = await initTool(SqlMaterializeTool) + const r: any = await mat.execute( + { source_warehouse: "scratch", sql: "SELECT id, big, COUNT(*) OVER () AS n FROM src", target_table: "dst" }, + ctx, + ) + expect(r.title).not.toContain("ERROR") + expect(() => JSON.stringify(r)).not.toThrow() + const back: any = await exec.execute({ query: "SELECT max(big) AS m, count(*) AS c FROM dst", warehouse: "scratch", limit: 10 }, ctx) + expect(back.output).toContain("9223372036854775807") + expect(() => JSON.stringify(back)).not.toThrow() + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-execute-lint.test.ts b/packages/opencode/test/altimate/tools/sql-execute-lint.test.ts new file mode 100644 index 0000000000..f0474f560c --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-execute-lint.test.ts @@ -0,0 +1,221 @@ +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, spyOn, test } from "bun:test" +import * as core from "@altimateai/altimate-core" +import { SessionID, MessageID } from "../../../src/session/schema" +import { SqlExecuteTool } from "../../../src/altimate/tools/sql-execute" +import { SqlMaterializeTool } from "../../../src/altimate/tools/sql-materialize" +import { PostConnectSuggestions } from "../../../src/altimate/tools/post-connect-suggestions" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { closeScratch, getScratch } from "../../../src/altimate/native/connections/scratch" +import * as Cache from "../../../src/altimate/native/schema/cache" +import { initTool } from "../tool-fixture" + +const ctx = { + sessionID: SessionID.make("ses_sql_execute_lint"), + messageID: MessageID.make("msg_sql_execute_lint"), + callID: "", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [] as any[], + metadata: () => {}, + ask: async () => {}, +} + +const warehouse = "lint_fixture" +const riskySql = "SELECT CAST(a / b AS INT) AS ratio FROM lint_numbers ORDER BY a" +const cleanSql = "SELECT a, b FROM lint_numbers ORDER BY a" +const cache = Cache.SchemaCache.createInMemory() +let cacheSpy: ReturnType> +let lintSpy: ReturnType> | undefined +let previousTelemetry: string | undefined +let previousLint: string | undefined + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + previousLint = process.env.ALTIMATE_SQL_EXECUTE_LINT + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + cacheSpy = spyOn(Cache, "getCache").mockResolvedValue(cache) +}) + +beforeEach(async () => { + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + PostConnectSuggestions.resetShownSuggestions() + // Consume the one-time tip so output comparisons isolate the result and checks. + PostConnectSuggestions.getProgressiveSuggestion("sql_execute") + Registry.setConfigs({ [warehouse]: { type: "sqlite", path: ":memory:" } }) + const source = await Registry.get(warehouse) + await source.execute("CREATE TABLE lint_numbers (a INTEGER, b INTEGER)") + await source.execute("INSERT INTO lint_numbers VALUES (1, 2), (5, 2)") +}) + +afterEach(async () => { + // preValidateSql yields before accessing the cache; let that work finish before teardown. + await new Promise((resolve) => setImmediate(resolve)) + lintSpy?.mockRestore() + lintSpy = undefined + await Registry.closeAll() + await closeScratch() +}) + +afterAll(() => { + cacheSpy.mockRestore() + cache.close() + Registry.reset() + PostConnectSuggestions.resetShownSuggestions() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry + if (previousLint === undefined) delete process.env.ALTIMATE_SQL_EXECUTE_LINT + else process.env.ALTIMATE_SQL_EXECUTE_LINT = previousLint +}) + +describe("sql_execute inline lint", () => { + test("appends real core findings without changing the successful result preview", async () => { + const tool = await initTool(SqlExecuteTool) + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + const baseline = await tool.execute({ query: riskySql, warehouse, limit: 10 }, ctx) + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + + const result = await tool.execute({ query: riskySql, warehouse, limit: 10 }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(2) + expect(result.output).toStartWith(baseline.output + "\n\nChecks:\n") + expect(result.output).toMatch(/Check: cast_division_to_int: .+ — .+/) + expect(result.output).not.toContain("select-without-limit") + expect(result.metadata.lint_rules).toContain("cast_division_to_int") + }) + + test("clean queries have no checks block or lint metadata", async () => { + const tool = await initTool(SqlExecuteTool) + const result = await tool.execute({ query: cleanSql, warehouse, limit: 10 }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(2) + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + }) + + test("the environment opt-out skips the core linter", async () => { + const tool = await initTool(SqlExecuteTool) + lintSpy = spyOn(core, "lint") + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + const result = await tool.execute({ query: riskySql, warehouse, limit: 10 }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(result.metadata.rowCount).toBe(2) + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + expect(lintSpy).not.toHaveBeenCalled() + }) + + test("a core lint error leaves the successful query result untouched", async () => { + const tool = await initTool(SqlExecuteTool) + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + const baseline = await tool.execute({ query: riskySql, warehouse, limit: 10 }, ctx) + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + lintSpy = spyOn(core, "lint").mockImplementation(() => { + throw new Error("lint unavailable") + }) + + const result = await tool.execute({ query: riskySql, warehouse, limit: 10 }, ctx) + expect(lintSpy).toHaveBeenCalledTimes(1) + expect(result).toEqual(baseline) + }) + + test("successful writes never invoke the linter", async () => { + const tool = await initTool(SqlExecuteTool) + lintSpy = spyOn(core, "lint") + const result = await tool.execute( + { query: "INSERT INTO lint_numbers SELECT CAST(a / b AS INT), b FROM lint_numbers", warehouse, limit: 10 }, + ctx, + ) + expect(result.metadata.error).toBeUndefined() + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + expect(lintSpy).not.toHaveBeenCalled() + }) + + test("failed reads never invoke the linter", async () => { + const tool = await initTool(SqlExecuteTool) + lintSpy = spyOn(core, "lint") + const result = await tool.execute( + { query: "SELECT CAST(a / b AS INT) FROM missing_lint_table", warehouse, limit: 10 }, + ctx, + ) + expect(result.metadata.error).toBeDefined() + expect(result.output).toContain("Failed to execute SQL:") + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + expect(lintSpy).not.toHaveBeenCalled() + }) +}) + +describe("sql_materialize inline lint", () => { + test("checks the original source SQL and keeps the extracted rows", async () => { + const tool = await initTool(SqlMaterializeTool) + lintSpy = spyOn(core, "lint") + const result = await tool.execute({ source_warehouse: warehouse, sql: riskySql, target_table: "lint_ratios" }, ctx) + expect(result.metadata).toMatchObject({ materialized: true, rowCount: 2 }) + expect(result.metadata.error).toBeUndefined() + expect(result.output).toContain("Checks:\nCheck: cast_division_to_int:") + expect(result.metadata.lint_rules).toContain("cast_division_to_int") + expect(lintSpy).toHaveBeenCalledTimes(1) + expect(lintSpy.mock.calls[0][0]).toBe(riskySql) + const scratch = await getScratch(ctx.sessionID) + expect( + (await scratch.execute("SELECT ratio FROM lint_ratios ORDER BY ratio")).rows.map((r) => Number(r[0])), + ).toEqual([0, 2]) + }) + + test("clean source SQL has no checks block", async () => { + const tool = await initTool(SqlMaterializeTool) + const result = await tool.execute({ source_warehouse: warehouse, sql: cleanSql, target_table: "lint_clean" }, ctx) + expect(result.metadata).toMatchObject({ materialized: true, rowCount: 2 }) + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + }) + + test("the environment opt-out skips source lint", async () => { + const tool = await initTool(SqlMaterializeTool) + lintSpy = spyOn(core, "lint") + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + const result = await tool.execute( + { source_warehouse: warehouse, sql: riskySql, target_table: "lint_disabled" }, + ctx, + ) + expect(result.metadata).toMatchObject({ materialized: true, rowCount: 2 }) + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + expect(lintSpy).not.toHaveBeenCalled() + }) + + test("a lint error does not turn successful materialization into a failure", async () => { + const tool = await initTool(SqlMaterializeTool) + const args = { source_warehouse: warehouse, sql: riskySql, target_table: "lint_error", mode: "replace" } + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + const baseline = await tool.execute(args, ctx) + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + lintSpy = spyOn(core, "lint").mockImplementation(() => { + throw new Error("lint unavailable") + }) + + const result = await tool.execute(args, ctx) + expect(lintSpy).toHaveBeenCalledTimes(1) + expect(result.metadata).toMatchObject({ materialized: true, rowCount: 2 }) + expect(result).toEqual(baseline) + }) + + test("a failed source query never invokes the linter", async () => { + const tool = await initTool(SqlMaterializeTool) + lintSpy = spyOn(core, "lint") + const result = await tool.execute( + { + source_warehouse: warehouse, + sql: "SELECT CAST(a / b AS INT) FROM missing_lint_table", + target_table: "lint_failed", + }, + ctx, + ) + expect(result.metadata.materialized).toBe(false) + expect(result.metadata.error).toBeDefined() + expect(result.output).not.toContain("Checks:") + expect(result.metadata.lint_rules).toBeUndefined() + expect(lintSpy).not.toHaveBeenCalled() + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-execute-query-from.test.ts b/packages/opencode/test/altimate/tools/sql-execute-query-from.test.ts new file mode 100644 index 0000000000..3adc47d5c8 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-execute-query-from.test.ts @@ -0,0 +1,376 @@ +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { Effect } from "effect" +import type { Tool } from "@/tool/tool" +import { SessionID, MessageID } from "@/session/schema" +import * as Dispatcher from "@/altimate/native/dispatcher" +import * as Registry from "@/altimate/native/connections/registry" +import { registerAll } from "@/altimate/native/connections/register" +import { closeScratch, getScratch } from "@/altimate/native/connections/scratch" +import * as Precedence from "@/altimate/workspace/precedence" +import * as ResultFormat from "@/altimate/tools/sql-result-format" +import { SqlExecuteTool } from "@/altimate/tools/sql-execute" +import { PostConnectSuggestions } from "@/altimate/tools/post-connect-suggestions" +import { initTool } from "../tool-fixture" + +const ctx: Tool.Context = { + sessionID: SessionID.make("ses_generated_reads"), + messageID: MessageID.make("msg_generated_reads"), + agent: "analyst", + abort: new AbortController().signal, + messages: [], + metadata: () => Effect.void, + ask: () => Effect.void, +} +const source = { warehouse: "catalog", sql: "SELECT generated_sql FROM saved_reads WHERE name = 'total'" } +const generated = "SELECT sum(amount) AS total FROM orders" +const result = { columns: ["total"], rows: [[42]], row_count: 1, truncated: false } +const generatedResult = (sql: unknown = generated) => ({ + columns: ["generated_sql"], + rows: [[sql]], + row_count: 1, + truncated: false, +}) + +let dispatch: ReturnType> +let config: ReturnType> +let suggestion: ReturnType> +let precedence: ReturnType> +let ask: ReturnType> + +beforeEach(() => { + dispatch = spyOn(Dispatcher, "call").mockResolvedValueOnce(generatedResult() as never).mockResolvedValue(result as never) + config = spyOn(Registry, "getConfig").mockReturnValue({ type: "duckdb" }) + suggestion = spyOn(PostConnectSuggestions, "getProgressiveSuggestion").mockReturnValue(null) + precedence = spyOn(Precedence, "check").mockResolvedValue({}) + ask = spyOn(ctx, "ask") +}) + +afterEach(async () => { + await new Promise((resolve) => setImmediate(resolve)) + dispatch.mockRestore() + config.mockRestore() + suggestion.mockRestore() + precedence.mockRestore() + ask.mockRestore() +}) + +describe("sql_execute generated reads", () => { + test("executes the scalar generated read with independent source and target routing", async () => { + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query_from: source, warehouse: "analytics", limit: 7, query_timeout_ms: 2000 }, ctx) + + expect(output.metadata.error).toBeUndefined() + expect(output.output).toBe("total\n-----\n42\n\n(1 rows)") + expect(output.output).not.toContain(generated) + expect(dispatch.mock.calls).toEqual([ + ["sql.execute", { sql: source.sql, warehouse: "catalog", limit: 2, query_timeout_ms: 2000 }, { sessionID: ctx.sessionID, signal: ctx.abort }], + ["sql.execute", { sql: generated, warehouse: "analytics", limit: 7, query_timeout_ms: 2000 }, { sessionID: ctx.sessionID, signal: ctx.abort }], + ]) + expect(precedence.mock.calls).toEqual([ + [ctx.sessionID, "sql_execute", "catalog"], + [ctx.sessionID, "sql_execute", "analytics"], + ]) + expect(ask.mock.calls.map(([request]) => request.permission)).toEqual(["sql_execute", "sql_execute"]) + expect(ask.mock.calls[0][0].patterns).toContain(source.sql) + expect(ask.mock.calls[1][0].patterns).toContain(generated) + }) + + test("allows an empty query placeholder alongside query_from", async () => { + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: "", query_from: source, warehouse: "analytics" }, ctx) + expect(output.metadata.error).toBeUndefined() + expect(dispatch).toHaveBeenLastCalledWith("sql.execute", { + sql: generated, + warehouse: "analytics", + limit: 100, + query_timeout_ms: undefined, + }, { sessionID: ctx.sessionID, signal: ctx.abort }) + }) + + for (const placeholder of [null, { warehouse: "", sql: "" }]) { + test(`accepts a plain query with a ${JSON.stringify(placeholder)} query_from placeholder`, async () => { + dispatch.mockReset().mockResolvedValue(result as never) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: generated, query_from: placeholder, warehouse: "analytics" }, ctx) + expect(output.metadata.error).toBeUndefined() + expect(dispatch.mock.calls).toEqual([ + ["sql.execute", { sql: generated, warehouse: "analytics", limit: 100, query_timeout_ms: undefined }, { sessionID: ctx.sessionID, signal: ctx.abort }], + ]) + }) + } + + test("accepts a null query placeholder and titles the result without the generated SQL", async () => { + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: null, query_from: source, warehouse: "analytics" }, ctx) + expect(output.title).toBe("SQL: generated read") + expect(output.title).not.toContain("sum(amount)") + }) + + test("carries the generated SQL in a target redirect", async () => { + precedence.mockResolvedValueOnce({}).mockResolvedValueOnce({ + redirect: { title: "Routed", metadata: { redirected: true }, output: "Call `ws_sql` instead." }, + } as never) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + expect(output.output).toContain("Call `ws_sql` instead.") + expect(output.output).toContain(generated) + expect(dispatch).toHaveBeenCalledTimes(1) + }) + + for (const fn of ["pg_try_advisory_lock(1)", "pg_advisory_unlock_all()", "pg_terminate_backend(1)", "pg_reload_conf()", "dblink('h', 'DELETE FROM t')", "pg_notify('c', 'x')", "pg_log_backend_memory_contexts(1)", "pg_stat_reset()", "pg_wal_replay_pause()", "pg_logical_slot_get_changes('s', NULL, NULL)", "get_lock('x', 1)", "SYSTEM$CANCEL_ALL_QUERIES(1)", 'U&"pg_notif\\0079"(\'c\', \'x\')', "lo_from_bytea(0, 'x')"]) { + test(`rejects generated SQL calling ${fn}`, async () => { + dispatch.mockReset().mockResolvedValueOnce(generatedResult(`SELECT ${fn}`) as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow("read-only") + expect(dispatch).toHaveBeenCalledTimes(1) + }) + } + + test("refuses a target redirect whose generated SQL would be truncated", async () => { + const big = `SELECT '${"x".repeat(41 * 1024)}' AS value` + dispatch.mockReset().mockResolvedValueOnce(generatedResult(big) as never) + precedence.mockResolvedValueOnce({}).mockResolvedValueOnce({ + redirect: { title: "Routed", metadata: {}, output: "Call `ws_sql` instead." }, + } as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow("too large") + }) + + test("rejects a half-filled query_from", async () => { + const tool = await initTool(SqlExecuteTool) + await expect( + tool.execute({ query_from: { warehouse: "catalog", sql: "" }, warehouse: "analytics" }, ctx), + ).rejects.toThrow("non-empty warehouse and sql") + }) + + test("passes a complete large generated read directly without exposing its text", async () => { + const sql = `SELECT '${"entry".repeat(6000)}' AS value` + dispatch.mockReset().mockResolvedValueOnce(generatedResult(sql) as never).mockResolvedValue(result as never) + const format = spyOn(ResultFormat, "formatSqlResult") + try { + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + expect(dispatch.mock.calls[1][1]).toMatchObject({ sql }) + expect(format).toHaveBeenCalledTimes(1) + expect(format.mock.calls[0][0]).toBe(result) + expect(output.output).toBe("total\n-----\n42\n\n(1 rows)") + expect(output.metadata.result_path).toBeUndefined() + expect(output.metadata.truncated).toBe(false) + } finally { + format.mockRestore() + } + }) + + for (const type of ["postgres", "postgresql", "sqlite"]) { + test(`preserves read-only execution on both ${type} reads`, async () => { + config.mockReturnValue({ type }) + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query_from: source, warehouse: "analytics", query_timeout_ms: 0 }, ctx) + expect(dispatch).toHaveBeenCalledTimes(2) + for (const [, input] of dispatch.mock.calls) { + expect(input).toMatchObject({ query_timeout_ms: undefined }) + expect((input as { read_only?: boolean }).read_only).toBe(type === "sqlite" ? undefined : true) + } + }) + } + + for (const postgres of ["catalog", "analytics"]) { + test(`selects the read-only connection option independently for ${postgres}`, async () => { + config.mockImplementation((warehouse) => ({ type: warehouse === postgres ? "postgres" : "duckdb" })) + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + expect(dispatch).toHaveBeenCalledTimes(2) + for (const [, input] of dispatch.mock.calls) { + const params = input as { warehouse: string; read_only?: boolean } + expect(params.read_only).toBe(params.warehouse === postgres ? true : undefined) + } + }) + } + + const invalidArguments = [ + { warehouse: "analytics" }, + { query: "", warehouse: "analytics" }, + { query: "SELECT 1", query_from: source, warehouse: "analytics" }, + { query_from: source }, + { query_from: source, warehouse: "" }, + { query_from: { ...source, warehouse: "" }, warehouse: "analytics" }, + { query_from: { ...source, sql: "" }, warehouse: "analytics" }, + ] + for (const [index, args] of invalidArguments.entries()) { + test(`rejects incomplete or ambiguous generated read arguments ${index + 1}`, async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute(args, ctx)).rejects.toThrow() + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + }) + } + + for (const sql of [ + "DELETE FROM orders", + "CREATE TEMP TABLE generated AS SELECT 1", + "SELECT 1; SELECT 2", + "SHOW TABLES", + "EXPLAIN SELECT 1", + "WITH changed AS (DELETE FROM orders RETURNING *) SELECT * FROM changed", + ]) { + test(`rejects a non-query source before dispatch: ${sql}`, async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: { ...source, sql }, warehouse: "analytics" }, ctx)).rejects.toThrow() + expect(dispatch).not.toHaveBeenCalled() + expect(ask).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + }) + + test(`rejects a non-query generated statement even in scratch: ${sql}`, async () => { + dispatch.mockReset().mockResolvedValue(generatedResult(sql) as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "scratch" }, ctx)).rejects.toThrow() + expect(dispatch).toHaveBeenCalledTimes(1) + expect(ask.mock.calls.map(([request]) => request.permission)).toEqual(["sql_execute"]) + expect(precedence).toHaveBeenCalledTimes(1) + }) + } + + const invalidResults = [ + { ...generatedResult(), rows: [], row_count: 0 }, + { ...generatedResult(), rows: [[generated], ["SELECT 2"]], row_count: 2 }, + { ...generatedResult(), columns: ["first", "second"], rows: [[generated, generated]] }, + { ...generatedResult(), rows: [[generated, generated]] }, + { ...generatedResult(), truncated: true }, + generatedResult(null), + generatedResult(42), + generatedResult(""), + generatedResult(" "), + ] + for (const [index, value] of invalidResults.entries()) { + test(`rejects a source that is not one complete SQL string ${index + 1}`, async () => { + dispatch.mockReset().mockResolvedValue(value as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow() + expect(dispatch).toHaveBeenCalledTimes(1) + expect(ask).toHaveBeenCalledTimes(1) + }) + } + + test("rejects generated SQL over the UTF-8 byte limit before target execution", async () => { + const sql = `SELECT '${"😀".repeat(262_144)}' AS value` + expect(sql.length).toBeLessThan(1024 * 1024) + dispatch.mockReset().mockResolvedValue(generatedResult(sql) as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow(/limit|MiB|byte/i) + expect(dispatch).toHaveBeenCalledTimes(1) + }) + + test("surfaces a source connection error without executing a target", async () => { + dispatch.mockReset().mockResolvedValue({ ...generatedResult(), error: "source unavailable" } as never) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow("source unavailable") + expect(dispatch).toHaveBeenCalledTimes(1) + }) + + for (const [failure, value, message] of [ + ["source result error", { ...generatedResult(), error: "source unavailable" }, "source unavailable"], + ["source exception", new Error("connection closed"), "connection closed"], + ["malformed scalar", generatedResult(null), "exactly one row"], + ["generated write", generatedResult("DELETE FROM orders"), "read-only SELECT"], + ] as const) { + test(`retains the source routing notice after ${failure}`, async () => { + const notice = "Source routing was unavailable; the read ran locally." + precedence.mockResolvedValue({ notice, precedence: "undetermined" }) + dispatch.mockReset() + if (value instanceof Error) dispatch.mockRejectedValue(value) + else dispatch.mockResolvedValue(value as never) + const tool = await initTool(SqlExecuteTool) + const execution = tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + await expect(execution).rejects.toThrow(notice) + await expect(execution).rejects.toThrow(message) + expect(dispatch).toHaveBeenCalledTimes(1) + expect(ask).toHaveBeenCalledTimes(1) + }) + } + + test("source permission denial prevents source routing and execution", async () => { + ask.mockImplementation(() => Effect.die(new Error("source denied"))) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toThrow("source denied") + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + }) + + test("generated query permission denial prevents target routing and execution", async () => { + precedence.mockResolvedValue({ notice: "Source routing was unavailable.", precedence: "undetermined" }) + ask.mockImplementationOnce(() => Effect.void).mockImplementation(() => Effect.die(new Error("target denied"))) + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query_from: source, warehouse: "analytics" }, ctx)).rejects.toMatchObject({ message: "target denied" }) + expect(dispatch).toHaveBeenCalledTimes(1) + expect(precedence).toHaveBeenCalledTimes(1) + }) + + for (const stage of ["source", "target"]) { + test(`honors ${stage} workspace redirection before local execution`, async () => { + const redirect = { title: "Use workspace", metadata: {}, output: "Route this read through the workspace." } + precedence.mockReset() + if (stage === "target") precedence.mockResolvedValueOnce({}) + precedence.mockResolvedValue({ redirect }) + const tool = await initTool(SqlExecuteTool) + const out = await tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + if (stage === "source") expect(out).toMatchObject(redirect) + else expect(out.output).toBe(`${redirect.output}\n\nSQL to run:\n${generated}`) + expect(dispatch).toHaveBeenCalledTimes(stage === "source" ? 0 : 1) + }) + } + + test("retains both routing notices without mutating a shared target verdict", async () => { + const sourceVerdict = { notice: "Source routing was unavailable.", precedence: "undetermined" as const } + const targetVerdict = { notice: "Target routing was unavailable.", precedence: "undetermined" as const } + precedence.mockReset().mockResolvedValueOnce(sourceVerdict).mockResolvedValue(targetVerdict) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query_from: source, warehouse: "analytics" }, ctx) + expect(output.output).toContain(sourceVerdict.notice) + expect(output.output).toContain(targetVerdict.notice) + expect(output.metadata.precedence).toBe("undetermined") + expect(targetVerdict).toEqual({ notice: "Target routing was unavailable.", precedence: "undetermined" }) + }) + + test("aggregates over a thousand tables using one compact generated read request", async () => { + dispatch.mockRestore() + dispatch = spyOn(Dispatcher, "call") + registerAll() + try { + const connection = await getScratch(ctx.sessionID) + await connection.execute( + Array.from({ length: 1024 }, (_, index) => `CREATE TABLE sample_${index} AS SELECT ${index}::INTEGER AS n`).join(";"), + undefined, + undefined, + { noLimit: true }, + ) + const sql = `WITH numbered AS ( + SELECT '"' || replace(table_schema, '"', '""') || '"."' || replace(table_name, '"', '""') || '"' AS name, + floor((row_number() OVER (ORDER BY table_schema, table_name) - 1) / 128) AS batch + FROM information_schema.tables WHERE table_schema = 'main' AND table_name LIKE 'sample_%' +), batches AS ( + SELECT batch, 'SELECT * FROM query_table([' || string_agg(chr(39) || replace(name, chr(39), chr(39) || chr(39)) || chr(39), ',' ORDER BY name) || '], true)' AS part + FROM numbered GROUP BY batch +) +SELECT 'SELECT count(*) AS tables_read, sum(n) AS total FROM (' || string_agg(part, ' UNION ALL BY NAME ' ORDER BY batch) || ')' AS sql FROM batches` + const args = { query_from: { warehouse: "scratch", sql }, warehouse: "scratch" } + expect(Buffer.byteLength(JSON.stringify(args), "utf8")).toBeLessThan(1000) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute(args, ctx) + + expect(output.metadata.error).toBeUndefined() + expect(output.output).toContain("1024") + expect(output.output).toContain("523776") + expect(output.metadata.rowCount).toBe(1) + expect(output.metadata.truncated).toBe(false) + expect(output.metadata.result_path).toBeUndefined() + const reads = dispatch.mock.calls.filter(([method]) => method === "sql.execute") + expect(reads).toHaveLength(2) + expect((reads[1][1] as { sql: string }).sql.length).toBeGreaterThan(20_000) + expect(Buffer.byteLength(output.output, "utf8")).toBeLessThan(1000) + expect(ask.mock.calls.map(([request]) => request.permission)).toEqual(["sql_execute", "sql_execute"]) + } finally { + await closeScratch(ctx.sessionID) + } + }, 30_000) +}) diff --git a/packages/opencode/test/altimate/tools/sql-execute-scratch-write.test.ts b/packages/opencode/test/altimate/tools/sql-execute-scratch-write.test.ts new file mode 100644 index 0000000000..bef5e56577 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-execute-scratch-write.test.ts @@ -0,0 +1,124 @@ +import { afterAll, afterEach, beforeAll, describe, expect, test } from "bun:test" +import { SessionID, MessageID } from "../../../src/session/schema" +import { SqlExecuteTool } from "../../../src/altimate/tools/sql-execute" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { closeScratch } from "../../../src/altimate/native/connections/scratch" +import { initTool } from "../tool-fixture" + +// The ephemeral scratch database is the session's own workspace: writes there must not go +// through the `sql_execute_write` permission (which read-only agents deny), while writes to a +// real warehouse and the hard-deny list keep their behaviour. +const ctx = { + sessionID: SessionID.make("ses_scratch_write"), + messageID: MessageID.make("msg_scratch_write"), + callID: "", + agent: "analyst", + abort: AbortSignal.any([]), + messages: [] as any[], + metadata: () => {}, + ask: async () => {}, +} + +let previousTelemetry: string | undefined + +beforeAll(() => { + previousTelemetry = process.env.ALTIMATE_TELEMETRY_DISABLED + process.env.ALTIMATE_TELEMETRY_DISABLED = "true" + Registry.setConfigs({ other_db: { type: "sqlite", path: ":memory:" } as never }) +}) + +afterEach(async () => { + await closeScratch() +}) + +afterAll(() => { + Registry.reset() + if (previousTelemetry === undefined) delete process.env.ALTIMATE_TELEMETRY_DISABLED + else process.env.ALTIMATE_TELEMETRY_DISABLED = previousTelemetry +}) + +describe("sql_execute writes to scratch", () => { + test("a scratch batch that ends with a read still asks for write permission", async () => { + const tool = await initTool(SqlExecuteTool) + const asked: any[] = [] + await expect( + tool.execute( + { query: "CREATE TABLE items AS SELECT 1 AS value; SELECT * FROM items", warehouse: "scratch", limit: 10 }, + { ...ctx, ask: async (req: any) => { asked.push(req); throw new Error("write denied by test") } }, + ), + ).rejects.toThrow("write denied by test") + expect(asked).toHaveLength(1) + }) + + test("DDL and DML in scratch run without asking for write permission", async () => { + const tool = await initTool(SqlExecuteTool) + const asked: any[] = [] + const track = { ...ctx, ask: async (req: any) => void asked.push(req) } + const created: any = await tool.execute( + { query: "CREATE TABLE probe AS SELECT 1 AS x", warehouse: "scratch", limit: 10 }, + track, + ) + expect(created.metadata?.error).toBeUndefined() + const inserted: any = await tool.execute({ query: "INSERT INTO probe VALUES (2)", warehouse: "scratch", limit: 10 }, track) + expect(inserted.metadata?.error).toBeUndefined() + const read: any = await tool.execute( + { query: "SELECT count(*) AS n FROM probe", warehouse: "scratch", limit: 10 }, + track, + ) + expect(read.output).toMatch(/\b2\b/) + expect(asked).toHaveLength(0) + }) + + // Scratch is in-memory, but the DuckDB engine behind it can still reach the filesystem + // and other databases; those statements keep asking for write permission. + test("statements that can reach outside the engine still ask in scratch", async () => { + const tool = await initTool(SqlExecuteTool) + for (const query of [ + "COPY (SELECT 1) TO '/tmp/scratch-probe.csv'", + "ATTACH '/tmp/scratch-probe.duckdb' AS other", + "INSTALL httpfs", + "CREATE TABLE probe AS SELECT 1 AS x; COPY probe TO '/tmp/scratch-probe.csv'", + "SET threads = 1", + ]) { + const asked: any[] = [] + await tool + .execute( + { query, warehouse: "scratch", limit: 10 }, + { + ...ctx, + ask: async (req: any) => { + asked.push(req) + throw new Error("denied by test") + }, + }, + ) + .catch(() => {}) + expect(asked.map((r) => r.permission), query).toEqual(["sql_execute_write"]) + } + }) + + test("the hard-deny list still applies in scratch", async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query: "DROP SCHEMA main", warehouse: "scratch", limit: 10 }, ctx)).rejects.toThrow( + /blocked for safety/, + ) + }) + + test("a write to any other warehouse still asks", async () => { + const tool = await initTool(SqlExecuteTool) + const asked: any[] = [] + await tool + .execute( + { query: "CREATE TABLE probe AS SELECT 1 AS x", warehouse: "other_db", limit: 10 }, + { + ...ctx, + ask: async (req: any) => { + asked.push(req) + throw new Error("denied by test") + }, + }, + ) + .catch(() => {}) + expect(asked.map((r) => r.permission)).toEqual(["sql_execute_write"]) + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-execute.test.ts b/packages/opencode/test/altimate/tools/sql-execute.test.ts new file mode 100644 index 0000000000..6c5b90d253 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-execute.test.ts @@ -0,0 +1,526 @@ +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { Effect, Layer } from "effect" +import path from "node:path" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Agent } from "@/agent/agent" +import { Truncate } from "@/tool/truncate" +import type { Tool } from "@/tool/tool" +import { TRUNCATION_DIR } from "@/tool/truncation-dir" +import { SessionID, MessageID } from "@/session/schema" +import * as Dispatcher from "@/altimate/native/dispatcher" +import * as Registry from "@/altimate/native/connections/registry" +import { registerAll } from "@/altimate/native/connections/register" +import type { Connector, ExecuteOptions } from "@altimateai/drivers/types" +import { SqlExecuteTool } from "@/altimate/tools/sql-execute" +import { PostConnectSuggestions } from "@/altimate/tools/post-connect-suggestions" +import * as Precedence from "@/altimate/workspace/precedence" +import { initTool } from "../tool-fixture" +import { testEffect } from "../../lib/effect" +import { TestConfig } from "../../fixture/config" + +const ctx: Tool.Context = { + sessionID: SessionID.make("ses_sql_contract"), + messageID: MessageID.make("msg_sql_contract"), + agent: "build", + abort: new AbortController().signal, + messages: [], + metadata: () => Effect.void, + ask: () => Effect.void, +} + +let dispatch: ReturnType> +let suggestion: ReturnType> +let precedence: ReturnType> +beforeEach(() => { + dispatch = spyOn(Dispatcher, "call").mockResolvedValue({ + columns: ["answer"], + rows: [[42]], + row_count: 1, + truncated: false, + } as never) + suggestion = spyOn(PostConnectSuggestions, "getProgressiveSuggestion").mockReturnValue(null) + precedence = spyOn(Precedence, "check").mockResolvedValue({}) +}) +afterEach(() => { + dispatch.mockRestore() + suggestion.mockRestore() + precedence.mockRestore() +}) + +describe("sql_execute result guidance", () => { + test("omits progressive and small-result hints for the analyst", async () => { + dispatch.mockResolvedValue({ columns: ["region"], rows: [["North"]], row_count: 1, truncated: false } as never) + suggestion.mockReturnValue("Tip: Use sql_analyze to check this query.") + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: "SELECT region FROM sales WHERE region = 'North'" }, { ...ctx, agent: "analyst" }) + + expect(output.output).toBe("region\n------\nNorth\n\n(1 rows)") + expect(suggestion).not.toHaveBeenCalled() + }) + + test("retains progressive and small-result hints for other agents", async () => { + dispatch.mockResolvedValue({ columns: ["region"], rows: [["North"]], row_count: 1, truncated: false } as never) + suggestion.mockReturnValue("Tip: Use sql_analyze to check this query.") + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: "SELECT region FROM sales WHERE region = 'North'" }, ctx) + + expect(output.output).toContain("Tip: Use sql_analyze") + expect(output.output).toContain("Hint: only 1 row(s).") + }) + + test("preserves binder errors without dispatcher startup advice", async () => { + const error = 'Binder Error: Referenced column "missing" not found' + dispatch.mockResolvedValue({ columns: [], rows: [], row_count: 0, truncated: false, error } as never) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: "SELECT missing FROM items" }, ctx) + + expect(output.output).toBe(`Failed to execute SQL: ${error}`) + }) + + test("does not suggest starting a separate dispatcher for native handler errors", async () => { + dispatch.mockRejectedValue(new Error("No native handler for sql.execute")) + const tool = await initTool(SqlExecuteTool) + const output = await tool.execute({ query: "SELECT 1" }, ctx) + + expect(output.output).toBe("Failed to execute SQL: No native handler for sql.execute") + }) +}) + +describe("sql_execute parser read boundary", () => { + test("asks for write approval with the parse error for parser failures", async () => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + await expect(tool.execute({ query: "SELECT (" }, ctx)).rejects.toThrow("write denied by test") + expect(ask).toHaveBeenCalledTimes(1) + expect(ask.mock.calls[0][0]).toMatchObject({ + permission: "sql_execute_write", + metadata: { queryType: "write", parseError: "Parse error at line 1, column 9: Unexpected token: LParen" }, + }) + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + } finally { + ask.mockRestore() + } + }) + + test.each([ + ["duckdb", "SELECT 9 // 2"], + ["sqlite", "SELECT 'article' NOT GLOB 'a*'"], + ["duckdb", "SELECT TIMESTAMPTZ '2024-02-03 00:00:00+00'"], + ["duckdb", "SELECT * FROM items match"], + ])("explains unsupported %s read syntax: %s", async (type, query) => { + const config = spyOn(Registry, "getConfig").mockReturnValue({ type }) + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + await expect(tool.execute({ query, warehouse: "source" }, ctx)).rejects.toThrow("write denied by test") + expect(ask).toHaveBeenCalledTimes(1) + expect(dispatch).not.toHaveBeenCalled() + } finally { + ask.mockRestore() + config.mockRestore() + } + }) + + test("executes parser-rejected SQL only after write approval", async () => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.void) + try { + await tool.execute({ query: "SELECT (" }, ctx) + expect(ask).toHaveBeenCalledTimes(1) + expect(dispatch).toHaveBeenCalledTimes(1) + } finally { + ask.mockRestore() + } + }) + + test.each([ + "SELECT 'unclosed", + "/* unclosed", + "EXPLAIN ANALYZE DELETE FROM victim", + "SELECT $tag$'--$tag$ AS a; DELETE FROM victim", + String.raw`SELECT E'\'--' AS a) x) y; DELETE FROM victim; SELECT * FROM (SELECT * FROM (SELECT ''`, + ])("requires write approval for parser-rejected statements: %s", async (query) => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + await expect(tool.execute({ query }, ctx)).rejects.toThrow("write denied by test") + expect(ask).toHaveBeenCalledTimes(1) + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + } finally { + ask.mockRestore() + } + }) + + for (const type of ["postgres", "postgresql", "sqlite"]) { + test(`enforces read-only execution for ${type} reads without restricting approved writes`, async () => { + dispatch.mockRestore() + registerAll() + const calls: { sql: string; options?: ExecuteOptions }[] = [] + const connector: Connector = { + connect: async () => {}, + execute: async (sql, _limit, _binds, options) => { + calls.push({ sql, options }) + return { columns: ["answer"], rows: [[42]], row_count: 1, truncated: false } + }, + listSchemas: async () => [], + listTables: async () => [], + describeTable: async () => [], + close: async () => {}, + } + const config = spyOn(Registry, "getConfig").mockReturnValue({ type }) + const get = spyOn(Registry, "get").mockResolvedValue(connector) + const ask = spyOn(ctx, "ask") + try { + const tool = await initTool(SqlExecuteTool) + const result = await tool.execute({ query: "SELECT * FROM writing_view", warehouse: "source" }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(calls).toHaveLength(1) + expect(calls[0].options?.readOnly).toBe(type === "sqlite" ? undefined : true) + expect(ask).not.toHaveBeenCalled() + + await tool.execute({ query: "INSERT INTO target VALUES (42)", warehouse: "source" }, ctx) + expect(calls).toHaveLength(2) + expect(calls[1].options?.readOnly).toBeUndefined() + expect(ask).toHaveBeenCalledTimes(1) + } finally { + await new Promise((resolve) => setImmediate(resolve)) + ask.mockRestore() + get.mockRestore() + config.mockRestore() + } + }) + } + + for (const dialect of ["mysql", undefined]) { + test(`refuses dollar-delimited writes under read-only permission for ${dialect ?? "unknown"} dialect`, async () => { + const config = spyOn(Registry, "getConfig").mockReturnValue(dialect ? { type: dialect } : undefined) + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by read-only analyst"))) + try { + for (const query of ["SELECT 1; DELETE FROM t", "SELECT $x$; DELETE FROM t; $x$"]) { + ask.mockClear() + await expect(tool.execute({ query, warehouse: "source" }, { ...ctx, agent: "analyst" })).rejects.toThrow( + /write denied by read-only analyst/, + ) + expect(ask).toHaveBeenCalledTimes(1) + expect(ask).toHaveBeenCalledWith({ + permission: "sql_execute_write", + patterns: [query], + always: ["*"], + metadata: { queryType: "write" }, + }) + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + } + } finally { + ask.mockRestore() + config.mockRestore() + } + }) + } + + for (const [dialect, query] of [ + ["postgres", "SELECT $x$ a; b $x$"], + ["postgres", "SELECT $$ ; DROP TABLE t $$"], + ["postgresql", "SELECT $$ ; DROP TABLE t $$"], + ["duckdb", "SELECT $x$ a; b $x$"], + ["duckdb", "SELECT $$ ; DROP TABLE t $$"], + ["snowflake", "SELECT $$ ; DROP TABLE t $$"], + ]) { + test(`accepts ${dialect} dollar-quoted single reads: ${query}`, async () => { + const config = spyOn(Registry, "getConfig").mockReturnValue({ type: dialect }) + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask") + try { + const result = await tool.execute({ query, warehouse: "source" }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(ask).not.toHaveBeenCalled() + expect(dispatch).toHaveBeenCalledTimes(1) + } finally { + ask.mockRestore() + config.mockRestore() + } + }) + } + + test("VALUES and quoted write keywords remain ordinary reads", async () => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask") + try { + await tool.execute({ query: "VALUES (1)" }, ctx) + await tool.execute({ query: 'SELECT \'DELETE INTO\' AS "UPDATE"' }, ctx) + expect(ask).not.toHaveBeenCalled() + expect(dispatch).toHaveBeenCalledTimes(2) + } finally { + ask.mockRestore() + } + }) + + for (const query of [ + "WITH removed AS (DELETE FROM victim RETURNING *) SELECT * FROM removed", + "SELECT 1 INTO victim", + String.raw`SELECT E'\'--' AS a; DELETE FROM victim`, + "SELECT $$--$$ AS a; DELETE FROM victim", + "SELECT 1; CHECKPOINT", + ]) { + test(`requires write permission for query-shaped writes: ${query}`, async () => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + await expect(tool.execute({ query }, ctx)).rejects.toThrow(/write denied by test/) + expect(ask).toHaveBeenCalledTimes(1) + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + } finally { + ask.mockRestore() + } + }) + } + + for (const query of [ + "SHOW TABLES", + "DESCRIBE orders", + "EXPLAIN SELECT 1", + "EXPLAIN ANALYZE SELECT 1", + "PRAGMA table_info(orders)", + "PRAGMA storage_info('orders')", + "PRAGMA integrity_check(orders)", + "SELECT ';--/*' AS a", + ]) { + test(`accepts parser-verified reads without write permission: ${query}`, async () => { + const tool = await initTool(SqlExecuteTool) + const ask = spyOn(ctx, "ask") + try { + const result = await tool.execute({ query }, ctx) + expect(result.metadata.error).toBeUndefined() + expect(ask).not.toHaveBeenCalled() + expect(dispatch).toHaveBeenCalledTimes(1) + } finally { + ask.mockRestore() + } + }) + } + + test("refuses multiple reads with a clear driver support message", async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query: "SELECT 1; SELECT 2" }, ctx)).rejects.toThrow(/multi-statement reads.*not supported/i) + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + }) +}) + +describe("sql_execute MongoDB commands", () => { + test.each([ + "SELECT 1", + "{not json", + "[]", + "{}", + '{"collection":"articles","find":3}', + '{"command":"fin","collection":"articles"}', + ])( + "reports a MongoDB shape error before permissions: %s", + async (query) => { + const config = spyOn(Registry, "getConfig").mockReturnValue({ type: "mongodb" }) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query, warehouse: "source" }, ctx)).rejects.toThrow(/MongoDB.*JSON command/) + expect(ask).not.toHaveBeenCalled() + expect(dispatch).not.toHaveBeenCalled() + expect(precedence).not.toHaveBeenCalled() + } finally { + ask.mockRestore() + config.mockRestore() + } + }, + ) + + test.each([ + [ + { collection: "articles", find: { published: true } }, + { command: "find", collection: "articles", filter: { published: true } }, + ], + [ + { collection: "articles", aggregate: [{ $match: { published: true } }] }, + { command: "aggregate", collection: "articles", pipeline: [{ $match: { published: true } }] }, + ], + [{ listCollections: 1 }, { command: "listCollections" }], + [{ estimatedDocumentCount: "articles" }, { command: "estimatedDocumentCount", collection: "articles" }], + ])("dispatches MongoDB reads in normalized form: %j", async (query, normalized) => { + const config = spyOn(Registry, "getConfig").mockReturnValue({ type: "mongodb" }) + const ask = spyOn(ctx, "ask").mockImplementation(() => Effect.die(new Error("write denied by test"))) + try { + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query: JSON.stringify(query), warehouse: "source" }, ctx) + expect(ask).not.toHaveBeenCalled() + expect(dispatch).toHaveBeenCalledTimes(1) + expect(dispatch.mock.calls[0][0]).toBe("sql.execute") + expect(JSON.parse((dispatch.mock.calls[0][1] as { sql: string }).sql)).toEqual(normalized) + } finally { + ask.mockRestore() + config.mockRestore() + } + }) +}) + +describe("sql_execute limit validation", () => { + for (const limit of [-1, 1.5, NaN, Infinity, -Infinity]) { + test(`rejects ${limit} before querying`, async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query: "SELECT 42", limit }, ctx)).rejects.toThrow( + "limit must be a finite positive integer", + ) + expect(dispatch).not.toHaveBeenCalled() + }) + } + + test("keeps default 100 for omitted and filler limits and accepts both bounds without extra queries", async () => { + const tool = await initTool(SqlExecuteTool) + for (const limit of [undefined, 0, 1, 10_000]) { + const output = await tool.execute({ query: "SELECT 42", limit }, ctx) + expect(output.output).toBe("answer\n------\n42\n\n(1 rows)") + } + expect(dispatch.mock.calls).toEqual([ + ["sql.execute", { sql: "SELECT 42", warehouse: undefined, limit: 100 }, { signal: ctx.abort, sessionID: ctx.sessionID }], + ["sql.execute", { sql: "SELECT 42", warehouse: undefined, limit: 100 }, { signal: ctx.abort, sessionID: ctx.sessionID }], + ["sql.execute", { sql: "SELECT 42", warehouse: undefined, limit: 1 }, { signal: ctx.abort, sessionID: ctx.sessionID }], + ["sql.execute", { sql: "SELECT 42", warehouse: undefined, limit: 10_000 }, { signal: ctx.abort, sessionID: ctx.sessionID }], + ]) + }) + + test("clamps oversized row limits before querying", async () => { + const tool = await initTool(SqlExecuteTool) + await tool.execute({ query: "SELECT 42", limit: 1e9 }, ctx) + expect(dispatch).toHaveBeenCalledTimes(1) + expect(dispatch).toHaveBeenCalledWith("sql.execute", { + sql: "SELECT 42", + warehouse: undefined, + limit: 10_000, + query_timeout_ms: undefined, + }, { signal: ctx.abort, sessionID: ctx.sessionID }) + }) +}) + +describe("sql_execute query timeout", () => { + for (const query_timeout_ms of [-1, 0.5, 3_600_001, NaN, Infinity, -Infinity]) { + test(`rejects ${query_timeout_ms} before querying`, async () => { + const tool = await initTool(SqlExecuteTool) + await expect(tool.execute({ query: "SELECT 42", query_timeout_ms }, ctx)).rejects.toThrow() + expect(dispatch).not.toHaveBeenCalled() + }) + } + + test("passes positive deadlines to the native dispatcher", async () => { + const tool = await initTool(SqlExecuteTool) + for (const query_timeout_ms of [1, 600_000, 3_600_000]) { + await tool.execute({ query: "SELECT 42", warehouse: "analytics", query_timeout_ms }, ctx) + expect(dispatch).toHaveBeenLastCalledWith("sql.execute", { + sql: "SELECT 42", + warehouse: "analytics", + limit: 100, + query_timeout_ms, + }, { signal: ctx.abort, sessionID: ctx.sessionID }) + } + expect(dispatch).toHaveBeenCalledTimes(3) + }) + + test("leaves omitted and filler deadlines undefined so native defaults still apply", async () => { + const tool = await initTool(SqlExecuteTool) + for (const query_timeout_ms of [undefined, 0, [], "", null]) { + await tool.execute({ query: "SELECT 42", query_timeout_ms }, ctx) + expect(dispatch).toHaveBeenLastCalledWith("sql.execute", { + sql: "SELECT 42", + warehouse: undefined, + limit: 100, + query_timeout_ms: undefined, + }, { signal: ctx.abort, sessionID: ctx.sessionID }) + } + expect(dispatch).toHaveBeenCalledTimes(5) + }) +}) + +const agents = Layer.mock(Agent.Service, {}) +const it = testEffect( + Layer.mergeAll( + Truncate.defaultLayer, + FSUtil.defaultLayer, + agents, + TestConfig.layer({ get: () => Effect.succeed({ tool_output: { max_bytes: 1024, max_lines: 2000 } }) }), + ), +) + +it.live("sql_execute uses configured limits and the real retained tool-output spill service", () => + Effect.gen(function* () { + suggestion.mockReturnValue("Tip: Inspect the saved result as needed.") + precedence.mockResolvedValue({ notice: "Routing was unavailable; ran locally.", precedence: "undetermined" }) + const cell = "😀\n".repeat(20_000) + const rows = [[cell], ["last fetched row"]] + dispatch.mockResolvedValue({ columns: ["value"], rows, row_count: 2, truncated: false } as never) + const tool = yield* SqlExecuteTool + const initialized = yield* tool.init() + const output = yield* initialized.execute({ query: "SELECT value FROM entries", limit: 100 }, ctx) + + expect(output.output).toStartWith("Preview: 1 of 2 returned rows shown.") + expect(output.output).toContain("…[cell clipped,") + expect(output.output).toContain("Routing was unavailable; ran locally.") + expect(output.output).toContain("Tip: Inspect the saved result as needed.") + expect(Buffer.byteLength(output.output, "utf8")).toBeLessThanOrEqual(1024) + expect(output.metadata).toMatchObject({ + rowCount: 2, + rows_returned: 2, + preview_rows: 1, + row_limited: false, + output_truncated: true, + truncated: true, + }) + const resultPath = output.metadata.result_path as string + expect(path.isAbsolute(resultPath)).toBe(true) + expect(path.dirname(resultPath)).toBe(TRUNCATION_DIR) + expect(path.basename(resultPath)).toStartWith("tool_") + expect(output.output).toContain(`All 2 returned rows saved to ${resultPath}`) + const fs = yield* FSUtil.Service + const saved = yield* fs.readFileString(resultPath) + expect( + saved + .trimEnd() + .split("\n") + .map((line) => JSON.parse(line)), + ).toEqual(rows.map((values) => ({ columns: ["value"], values }))) + expect(dispatch).toHaveBeenCalledTimes(1) + yield* fs.remove(resultPath) + }), +) + +const failedSpill = testEffect( + Layer.mergeAll( + agents, + Layer.mock(Truncate.Service, { + limits: () => Effect.succeed({ maxBytes: 1024, maxLines: 2000 }), + write: () => Effect.die(new Error("disk full")), + }), + ), +) + +failedSpill.live("a spill service defect keeps SQL success, preview and clipping metadata", () => + Effect.gen(function* () { + dispatch.mockResolvedValue({ + columns: ["value"], + rows: [["x".repeat(20_000)]], + row_count: 1, + truncated: false, + } as never) + const tool = yield* SqlExecuteTool + const initialized = yield* tool.init() + const output = yield* initialized.execute({ query: "SELECT value FROM entries" }, ctx) + + expect(output.output).toStartWith("Preview: 1 of 1 returned rows shown.") + expect(output.output).toContain("Spill failed") + expect(output.output).toContain("…[cell clipped,") + expect(output.metadata.error).toBeUndefined() + expect(output.metadata.result_path).toBeUndefined() + expect(output.metadata.output_truncated).toBe(true) + }), +) diff --git a/packages/opencode/test/altimate/tools/sql-explain.test.ts b/packages/opencode/test/altimate/tools/sql-explain.test.ts index fe82baa71d..b3bdccbc8b 100644 --- a/packages/opencode/test/altimate/tools/sql-explain.test.ts +++ b/packages/opencode/test/altimate/tools/sql-explain.test.ts @@ -7,7 +7,7 @@ * 3. Dialect-aware EXPLAIN prefix selection (unit tests on the helper). * 4. Translating verbatim DB errors into actionable messages. */ -import { describe, test, expect, spyOn, afterEach, beforeEach } from "bun:test" +import { describe, test, expect, mock, spyOn, afterEach, beforeEach } from "bun:test" import { initTool } from "../tool-fixture" import * as Dispatcher from "../../../src/altimate/native/dispatcher" import { @@ -18,8 +18,11 @@ import { buildExplainPlan, buildExplainPrefix, translateExplainError, + registerAll, } from "../../../src/altimate/native/connections/register" +import * as Registry from "../../../src/altimate/native/connections/registry" import { SessionID, MessageID } from "../../../src/session/schema" +import type { Connector } from "@altimateai/drivers/types" beforeEach(() => { process.env.ALTIMATE_TELEMETRY_DISABLED = "true" @@ -40,6 +43,60 @@ const ctx = { ask: async () => {}, } +describe("sql.explain read-only execution", () => { + beforeEach(() => { + Registry.reset() + registerAll() + }) + afterEach(() => Registry.reset()) + + test("PostgreSQL EXPLAIN ANALYZE runs with readOnly protection", async () => { + for (const type of ["postgres", "postgresql"]) { + Registry.setConfigs({ source: { type } }) + const execute = mock(async () => ({ columns: ["plan"], rows: [["plan"]], row_count: 1, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + const result = await Dispatcher.call("sql.explain", { sql: "SELECT writing_view()", warehouse: "source", analyze: true }) + expect(result.success).toBe(true) + expect(execute.mock.calls[0]?.[0]).toBe("EXPLAIN (ANALYZE, BUFFERS) SELECT writing_view()") + expect(execute.mock.calls[0]?.[3]).toMatchObject({ readOnly: true }) + } finally { + get.mockRestore() + } + } + }) + + test("aborted session cancels EXPLAIN before it reaches the connector", async () => { + Registry.setConfigs({ source: { type: "postgres" } }) + const execute = mock(async () => ({ columns: ["plan"], rows: [["plan"]], row_count: 1, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + const result = await Dispatcher.call( + "sql.explain", + { sql: "SELECT 1", warehouse: "source", analyze: true }, + { signal: AbortSignal.abort(new Error("stopped")) }, + ) + expect(result.success).toBe(false) + expect(execute).not.toHaveBeenCalled() + } finally { + get.mockRestore() + } + }) + + test("non-PostgreSQL EXPLAIN connector options stay unchanged", async () => { + Registry.setConfigs({ source: { type: "snowflake" } }) + const execute = mock(async () => ({ columns: ["plan"], rows: [["plan"]], row_count: 1, truncated: false })) + const get = spyOn(Registry, "get").mockResolvedValue({ execute } as never) + try { + const result = await Dispatcher.call("sql.explain", { sql: "SELECT 1", warehouse: "source", analyze: true }) + expect(result.success).toBe(true) + expect((execute.mock.calls[0]?.[3] as { readOnly?: boolean }).readOnly).toBeUndefined() + } finally { + get.mockRestore() + } + }) +}) + // --------------------------------------------------------------------------- // Input validation helpers (pure functions) // --------------------------------------------------------------------------- @@ -436,6 +493,27 @@ describe("SqlExplainTool.execute", () => { spy.mockRestore() }) + for (const sql of ["INSERT INTO t VALUES (1)", "DELETE FROM t", "SELECT 1; DELETE FROM t", "CREATE TABLE t2 AS SELECT 1"]) { + test(`refuses EXPLAIN ANALYZE of a non-read statement before calling dispatcher: ${sql}`, async () => { + const spy = spyOn(Dispatcher, "call") + const tool = await initTool(SqlExplainTool) + const result = await tool.execute({ sql, analyze: true }, ctx as any) + + expect(result.metadata.success).toBe(false) + expect(result.metadata.error_class).toBe("input_validation") + expect(String(result.output)).toContain("only a single read-only query can be analyzed") + expect(spy).not.toHaveBeenCalled() + spy.mockRestore() + }) + } + + test("still explains a write statement without analyze, and analyzes a read", async () => { + mockDispatcher({ success: true, plan_text: "plan", plan_rows: [], analyzed: false, warehouse_type: "duckdb" }) + const tool = await initTool(SqlExplainTool) + expect((await tool.execute({ sql: "INSERT INTO t VALUES (1)", analyze: false }, ctx as any)).metadata.success).toBe(true) + expect((await tool.execute({ sql: "SELECT id FROM t", analyze: true }, ctx as any)).metadata.success).toBe(true) + }) + test("returns success when dispatcher reports success", async () => { mockDispatcher({ success: true, diff --git a/packages/opencode/test/altimate/tools/sql-read-safety.test.ts b/packages/opencode/test/altimate/tools/sql-read-safety.test.ts new file mode 100644 index 0000000000..024d8f1be5 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-read-safety.test.ts @@ -0,0 +1,141 @@ +import { afterEach, describe, expect, spyOn, test } from "bun:test" +import * as core from "@altimateai/altimate-core" +import * as Registry from "../../../src/altimate/native/connections/registry" +import { checkSql, readSql } from "../../../src/altimate/tools/sql-check" +import { materialize } from "../../../src/altimate/tools/sql-materialize" +import { classifyAndCheck, isScratchSafeWrite } from "../../../src/altimate/tools/sql-classify" +import { maskSql, statementsOf, tokenizeSql } from "../../../src/altimate/tools/sql-tokenize" +import { lintSqlResult } from "../../../src/altimate/tools/sql-result-lint" + +afterEach(() => Registry.reset()) + +const metadataReads = ["SHOW TABLES", "DESCRIBE orders", "EXPLAIN SELECT 1", "PRAGMA table_info(orders)"] + +const attacks = [ + String.raw`SELECT E'\'--' AS a; DELETE FROM victim`, + String.raw`SELECT E'\'--' AS a) x) y; DELETE FROM victim; SELECT * FROM (SELECT * FROM (SELECT ''`, + "SELECT $tag$'--$tag$ AS a; DELETE FROM victim", + "SELECT $$--$$ AS a; DELETE FROM victim", + "SELECT 1) escaped", + "SELECT (1", + "SELECT 1; SELECT 2", +] + +describe("read-only SQL parser boundary", () => { + for (const sql of [...attacks, ...metadataReads]) { + test(`refuses before check/materialize can obtain a connector: ${JSON.stringify(sql)}`, async () => { + Registry.setConfigs({ source: { type: "postgres" } }) + const get = spyOn(Registry, "get").mockRejectedValue(new Error("connector must not be reached")) + try { + expect(() => readSql(sql)).toThrow(/single read-only SELECT/) + await expect(checkSql({ warehouse: "source", check: "grain", sql, columns: ["a"] })).rejects.toThrow( + /single read-only SELECT/, + ) + await expect(materialize({ source_warehouse: "source", sql, target_table: "refused" })).rejects.toThrow( + /only reads/, + ) + expect(get).not.toHaveBeenCalled() + } finally { + get.mockRestore() + } + }) + } + + test("result lint skips metadata and multiple reads before reaching core", async () => { + const previousLint = process.env.ALTIMATE_SQL_EXECUTE_LINT + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + const lint = spyOn(core, "lint").mockImplementation(() => { + throw new Error("lint must not be reached") + }) + try { + for (const [index, sql] of [...metadataReads, "SELECT 1; SELECT 2"].entries()) { + expect(await lintSqlResult(sql, "source", `read-safety-lint-${index}`)).toBeUndefined() + } + expect(lint).not.toHaveBeenCalled() + } finally { + lint.mockRestore() + if (previousLint === undefined) delete process.env.ALTIMATE_SQL_EXECUTE_LINT + else process.env.ALTIMATE_SQL_EXECUTE_LINT = previousLint + } + }) + + for (const sql of [ + String.raw`SELECT E'\'--' AS a`, + String.raw`SELECT E'\\' AS a`, + // Two actual backslashes escape each other: the following -- really is a + // comment. The one-backslash attack above instead escapes the closing quote. + String.raw`SELECT E'\\'--' AS a) x) y; DELETE FROM victim; SELECT * FROM (SELECT * FROM (SELECT ''`, + "SELECT 'it''s -- not a comment; DELETE' AS a", + "SELECT $tag$'-- ; DELETE /*$tag$ AS a", + "SELECT $$--$$ AS a", + 'SELECT "--" AS "/*", "semi;colon" FROM "order"', + ]) { + test(`preserves a quoted read: ${JSON.stringify(sql)}`, () => { + expect(readSql(sql, "postgres")).toBe(sql) + }) + } + + test("parser failure never falls back to a read-shaped prefix", () => { + expect(classifyAndCheck("SELECT (1").queryType).toBe("write") + expect(classifyAndCheck("WITH invalid syntax").queryType).toBe("write") + }) + + test("scratch batches never admit reads, whose row cap the driver cannot apply to a batch", () => { + expect(isScratchSafeWrite("CREATE TABLE items AS SELECT 1 AS value; SELECT value FROM items")).toBe(false) + expect(isScratchSafeWrite("SELECT 1; INSERT INTO items VALUES (2)")).toBe(false) + expect(isScratchSafeWrite("INSERT INTO items VALUES (2); SELECT * FROM items")).toBe(false) + expect(isScratchSafeWrite("CREATE TABLE items AS SELECT 1 AS value; INSERT INTO items VALUES (2)")).toBe(true) + }) + + test("the scratch write exemption does not admit statements the parser skipped", () => { + expect(isScratchSafeWrite("DELETE FROM t; CHECKPOINT")).toBe(false) + expect(isScratchSafeWrite("DELETE FROM t; INSERT INTO t VALUES (1)")).toBe(true) + }) + + test("unterminated quoted content is not an empty read", () => { + expect(classifyAndCheck("/* unclosed comment").queryType).toBe("write") + expect(classifyAndCheck("SELECT 'unclosed").queryType).toBe("write") + }) + + test("masking independently retains statements after escape and dollar literals", () => { + for (const sql of [attacks[0], attacks[2], attacks[3]]) { + const { tokens, complete } = tokenizeSql(sql, "postgres") + expect(complete).toBe(true) + expect(maskSql(tokens)).toMatch(/; DELETE FROM victim$/) + } + expect(maskSql(tokenizeSql("SELECT $$-- ; DELETE$$ AS a -- actual comment", "postgres").tokens)).toMatch(/^SELECT\s+AS a\s+$/) + }) + + for (const dialect of ["mysql", "sqlite", "bigquery", "clickhouse", "unknown", undefined]) { + test(`dollar delimiters leave statements visible for ${dialect ?? "omitted"} dialect`, () => { + const sql = "SELECT $x$; DELETE FROM t; $x$" + const { tokens, complete } = tokenizeSql(sql, dialect) + expect(complete).toBe(true) + expect(maskSql(tokens)).toBe(sql) + expect(statementsOf(sql, dialect)).toEqual(["SELECT $x$", "DELETE FROM t", "$x$"]) + expect(() => readSql(sql, dialect)).toThrow(/single read-only SELECT/) + }) + } + + for (const [dialect, sql] of [ + ["postgres", "SELECT $x$ a; b $x$"], + ["postgres", "SELECT $$ ; DROP TABLE t $$"], + ["redshift", "SELECT $x$ a; b $x$"], + ["duckdb", "SELECT $x$ a; b $x$"], + ["duckdb", "SELECT $$ ; DROP TABLE t $$"], + ["snowflake", "SELECT $$ ; DROP TABLE t $$"], + ]) { + test(`dollar literals mask statement delimiters for ${dialect}: ${sql}`, () => { + const { tokens, complete } = tokenizeSql(sql, dialect) + expect(complete).toBe(true) + expect(tokens.map(({ kind }) => kind)).toEqual(["code", "literal"]) + expect(maskSql(tokens).trim()).toBe("SELECT") + expect(statementsOf(sql, dialect)).toEqual([sql]) + expect(readSql(sql, dialect)).toBe(sql) + }) + } + + test("hard denies survive a parser failure after a completed statement", () => { + expect(classifyAndCheck("DROP DATABASE prod; SELECT 'unclosed").blocked).toBe(true) + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-result-format.test.ts b/packages/opencode/test/altimate/tools/sql-result-format.test.ts new file mode 100644 index 0000000000..8fbb90f9ea --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-result-format.test.ts @@ -0,0 +1,767 @@ +import { describe, expect, test } from "bun:test" +import type { SqlExecuteResult } from "../../../src/altimate/native/types" +import { + formatSqlResult, + SQL_MAX_PREVIEW_BYTES, + SQL_MAX_PREVIEW_COLUMNS, + SQL_MAX_PREVIEW_ROWS, + SQL_MAX_SPILL_BYTES, +} from "../../../src/altimate/tools/sql-result-format" + +const resultPath = "/tmp/tool_sql_result_test" + +function result(rows: unknown[][], columns = ["value"], truncated = false): SqlExecuteResult { + return { columns, rows, row_count: rows.length, truncated } +} + +function spill() { + const writes: string[] = [] + return { + writes, + write: async (text: string) => { + writes.push(text) + return resultPath + }, + rows: () => + writes[0]! + .trimEnd() + .split("\n") + .map((line) => JSON.parse(line)), + } +} + +// The envelope, column names, and separator are not part of the clipped body. +function body(output: string, columns = ["value"]): string { + const header = columns.join(" | ") + const separator = columns.map((column) => "-".repeat(Math.max(column.length, 4))).join("-+-") + const start = output.indexOf(`${header}\n${separator}\n`) + expect(start).toBeGreaterThanOrEqual(0) + return output.slice(start + header.length + separator.length + 2).replace(/\n\n\(\d+ rows\).*$/s, "") +} + +describe("SQL result previews", () => { + test("preserves small scalar output byte-for-byte without spilling", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[42]], ["answer"]), { limit: 100, write: saved.write }) + + expect(formatted.output).toBe("answer\n------\n42\n\n(1 rows)") + expect(formatted.metadata).toMatchObject({ + rowCount: 1, + rows_returned: 1, + preview_rows: 1, + row_limited: false, + output_truncated: false, + truncated: false, + }) + expect(formatted.metadata.result_path).toBeUndefined() + expect(saved.writes).toHaveLength(0) + }) + + test("preserves a short table and NULL versus the string NULL", async () => { + const saved = spill() + const formatted = await formatSqlResult( + result( + [ + [1, null], + [2, "NULL"], + ], + ["id", "text"], + ), + { + limit: 100, + write: saved.write, + }, + ) + + expect(formatted.output).toBe('id | text\n-----+-----\n1 | NULL\n2 | "NULL"\n\n(2 rows)') + expect(saved.writes).toHaveLength(0) + }) + + test("quotes only the exact NULL string in scalar cells", async () => { + const columns = ["missing", "sentinel", "lowercase", "text"] + const saved = spill() + const formatted = await formatSqlResult(result([[null, "NULL", "null", "x"]], columns), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output, columns)).toBe('NULL | "NULL" | null | x') + expect(saved.writes).toHaveLength(0) + }) + + test("marks null array items and quotes the exact NULL string in array cells", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[[null, "NULL"]], [[""]], [[[]]]]), { limit: 100, write: saved.write }) + + // `[NULL]`, `['']` and `[[]]` stay distinguishable: NULL marker, quoted empty item, empty nested array. + expect(body(formatted.output)).toBe('NULL,"NULL"\n""\n[]') + expect(saved.writes).toHaveLength(0) + }) + + test("renders an empty array distinctly from an empty string and from the literal text []", async () => { + const columns = ["empty_array", "empty_string", "bracket_text"] + const saved = spill() + const formatted = await formatSqlResult(result([[[], "", "[]"]], columns), { limit: 100, write: saved.write }) + + expect(body(formatted.output, columns)).toBe('[] | | "[]"') + expect(saved.writes).toHaveLength(0) + }) + + test("quotes newline and column delimiters in string cells without spilling", async () => { + const columns = ["multiline", "separator", "text"] + const saved = spill() + const formatted = await formatSqlResult(result([["alpha\nbeta", "a | b", "plain"]], columns), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output, columns)).toBe('"alpha\\nbeta" | "a | b" | plain') + expect(formatted.metadata).toMatchObject({ preview_rows: 1, output_truncated: false }) + expect(saved.writes).toHaveLength(0) + }) + + test("quotes carriage returns with JSON escaping while leaving ordinary strings unquoted", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([['alpha\r"beta"\\tail'], ["x,y"], ["a|b"]]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output)).toBe('"alpha\\r\\"beta\\"\\\\tail"\nx,y\na|b') + expect(saved.writes).toHaveLength(0) + }) + + test("quotes column separators in aliases without spilling", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[1, 2]], ["a | b", "plain"]), { + limit: 100, + write: saved.write, + }) + + expect(formatted.output).toBe('"a | b" | plain\n--------+------\n1 | 2\n\n(1 rows)') + expect(formatted.metadata).toMatchObject({ + preview_rows: 1, + preview_columns: 2, + schema_truncated: false, + output_truncated: false, + }) + expect(saved.writes).toHaveLength(0) + }) + + test("quotes newline and carriage return aliases without spilling", async () => { + for (const alias of ["alpha\nbeta", 'alpha\r"beta"\\tail']) { + const saved = spill() + const formatted = await formatSqlResult(result([[1]], [alias]), { limit: 100, write: saved.write }) + const rendered = JSON.stringify(alias) + + expect(formatted.output).toBe(`${rendered}\n${"-".repeat(rendered.length)}\n1\n\n(1 rows)`) + expect(formatted.metadata).toMatchObject({ + preview_rows: 1, + preview_columns: 1, + schema_truncated: false, + output_truncated: false, + }) + expect(saved.writes).toHaveLength(0) + } + }) + + test("clips aliases after accounting for JSON escaping", async () => { + const alias = "\n".repeat(64) + const saved = spill() + const formatted = await formatSqlResult(result([[1]], [alias]), { limit: 100, write: saved.write }) + + expect(formatted.output).toContain('"\\n\\n') + expect(formatted.output).toContain("…[alias clipped]") + expect(formatted.metadata).toMatchObject({ schema_truncated: true, output_truncated: false, truncated: false }) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + // Clipped names are lossy, so the full result is saved for recovery. + expect(saved.writes).toHaveLength(1) + }) + + test("renders distinct small Buffer cells as base64 without spilling", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[Buffer.from([0x80])], [Buffer.from([0x81])]]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output)).toBe("base64:gA==\nbase64:gQ==") + expect(formatted.metadata).toMatchObject({ preview_rows: 2, output_truncated: false, truncated: false }) + expect(formatted.metadata.result_path).toBeUndefined() + expect(saved.writes).toHaveLength(0) + }) + + test("renders Uint8Array views and nested binary cells as base64 without spilling", async () => { + const cell = new Uint8Array([255, 1, 128, 254]).subarray(1, 3) + const saved = spill() + const formatted = await formatSqlResult(result([[cell], [new Uint8Array()], [[cell, Buffer.from([0x81])]]]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output)).toBe("base64:AYA=\nbase64:\nbase64:AYA=,base64:gQ==") + expect(formatted.metadata.output_truncated).toBe(false) + expect(saved.writes).toHaveLength(0) + }) + + test("clips base64 expansion below the binary threshold and spills complete bytes", async () => { + const cell = Buffer.alloc(SQL_MAX_PREVIEW_BYTES - 1, 0x80) + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toStartWith("base64:gICAgICA") + expect(body(formatted.output)).toContain("…[cell clipped,") + expect(formatted.metadata.output_truncated).toBe(true) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(saved.rows()).toEqual([{ columns: ["value"], values: [{ $bytes: cell.toString("base64") }] }]) + }) + + test("renders oversized binary cells as a base64 prefix with the existing clip marker", async () => { + const bytes = Buffer.alloc(SQL_MAX_PREVIEW_BYTES * 2, Buffer.from([0x80, 0x81, 0x82])) + for (const cell of [bytes, new Uint8Array(bytes)]) { + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + const preview = body(formatted.output) + + expect(preview).toStartWith("base64:gIGCgIGC") + expect(preview).toContain("…[cell clipped,") + expect(preview).not.toContain("\uFFFD") + expect(bytes.toString("base64")).toStartWith(preview.slice("base64:".length).split("…[cell clipped,")[0]!) + expect(formatted.metadata.output_truncated).toBe(true) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(saved.rows()).toEqual([{ columns: ["value"], values: [{ $bytes: bytes.toString("base64") }] }]) + } + }) + + test("quotes comma-bearing strings in array cells", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[["x,y", "z"]]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toBe('"x,y",z') + expect(saved.writes).toHaveLength(0) + }) + + test("quotes row and column delimiters in nested array cells", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[[["alpha\nbeta", "a | b", "alpha\rbeta", "x,y", "plain"]]]]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output)).toBe('"alpha\\nbeta","a | b","alpha\\rbeta","x,y",plain') + expect(saved.writes).toHaveLength(0) + }) + + test("renders distinct plain object cells as compact JSON without spilling", async () => { + const columns = ["first", "second"] + const saved = spill() + const formatted = await formatSqlResult(result([[{ a: 1 }, { a: 2 }]], columns), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output, columns)).toBe('{"a":1} | {"a":2}') + expect(formatted.metadata.output_truncated).toBe(false) + expect(saved.writes).toHaveLength(0) + }) + + test("renders objects nested in array cells as compact JSON", async () => { + const shared = { a: 1 } + const saved = spill() + const formatted = await formatSqlResult(result([[[{ first: shared, second: shared }, shared]]]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output)).toBe('{"first":{"a":1},"second":{"a":1}},{"a":1}') + expect(formatted.metadata.output_truncated).toBe(false) + expect(saved.writes).toHaveLength(0) + }) + + test("clips self-referencing object cells without hanging", async () => { + const cell: Record = { a: 1 } + cell.self = cell + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toBe('{"a":1,"self":"…[nested cell clipped]"}') + expect(formatted.metadata.output_truncated).toBe(true) + expect(formatted.output).toContain("Spill failed") + expect(saved.writes).toHaveLength(0) + }) + + test("clips object cycles through array cells using the same ancestors", async () => { + const cell: unknown[] = [] + cell.push({ outer: cell }) + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toContain('"outer":"…[nested cell clipped]"') + expect(formatted.metadata.output_truncated).toBe(true) + expect(saved.writes).toHaveLength(0) + }) + + test("clips deeply nested object and array values without overflowing the stack", async () => { + let cell: unknown = { leaf: "value" } + for (let i = 0; i < 200; i++) cell = { child: [cell] } + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toContain("…[nested cell clipped]") + expect(formatted.metadata.output_truncated).toBe(true) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(saved.writes).toHaveLength(0) + }) + + test("clips oversized object JSON with the existing cell marker and spills the full object", async () => { + const cell = { text: "漢😀".repeat(SQL_MAX_PREVIEW_BYTES) } + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(body(formatted.output)).toStartWith('{"text":"漢😀') + expect(body(formatted.output)).toContain("…[cell clipped,") + expect(formatted.output).not.toContain("\uFFFD") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(formatted.metadata.output_truncated).toBe(true) + expect(saved.rows()).toEqual([{ columns: ["value"], values: [cell] }]) + }) + + test("renders bigint values inside object JSON as decimal strings", async () => { + const saved = spill() + const cell = { big: 9007199254740993n, nested: [{ negative: -9007199254740993n }] } + const formatted = await formatSqlResult(result([[cell], [[cell]]]), { limit: 100, write: saved.write }) + + const json = '{"big":"9007199254740993","nested":[{"negative":"-9007199254740993"}]}' + expect(body(formatted.output)).toBe(`${json}\n${json}`) + expect(formatted.metadata.output_truncated).toBe(false) + expect(saved.writes).toHaveLength(0) + }) + + test("a throwing toJSON or getter inside an object cell degrades to a placeholder instead of aborting the preview", async () => { + const saved = spill() + const hostile = { + get boom(): string { + throw new Error("getter exploded") + }, + } + const viaToJSON = { + toJSON() { + throw new Error("toJSON exploded") + }, + } + const formatted = await formatSqlResult(result([[hostile, "ok"], [viaToJSON, "still ok"]], ["cell", "note"]), { + limit: 100, + write: saved.write, + }) + + expect(body(formatted.output, ["cell", "note"])).toBe( + "…[cell not serializable] | ok\n…[cell not serializable] | still ok", + ) + expect(formatted.metadata.output_truncated).toBe(true) + }) + + test("preserves existing Date bigint bytes number and boolean preview paths", async () => { + const cells = [new Date("2026-01-02T03:04:05.678Z"), 9007199254740993n, new Uint8Array([1, 128]), 42, true] + const saved = spill() + const formatted = await formatSqlResult(result(cells.map((cell) => [cell])), { limit: 100, write: saved.write }) + + // Timestamps render as lossless ISO 8601 (milliseconds and zone kept), matching the spill's `$date`. + expect(body(formatted.output)).toBe(["2026-01-02T03:04:05.678Z", String(cells[1]), "base64:AYA=", "42", "true"].join("\n")) + expect(saved.writes).toHaveLength(0) + }) + + test("preserves delimiter strings and distinct objects in JSONL spills", async () => { + const columns = ["newline", "separator", "carriage", "array", "first", "second"] + const values = ["alpha\nbeta", "a | b", "alpha\rbeta", ["x,y", { a: 1 }], { a: 1 }, { a: 2 }] + const saved = spill() + await formatSqlResult(result([values], columns, true), { limit: 1, write: saved.write }) + + expect(saved.writes[0]!.trimEnd().split("\n")).toHaveLength(1) + expect(saved.rows()).toEqual([{ columns, values }]) + }) + + test("preserves an empty result byte-for-byte", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([]), { limit: 100, write: saved.write }) + expect(formatted.output).toBe("(0 rows)") + expect(formatted.metadata.preview_rows).toBe(0) + expect(saved.writes).toHaveLength(0) + }) + + test("clips and spills an oversized single cell even when the backend did not truncate rows", async () => { + const cell = "x".repeat(SQL_MAX_PREVIEW_BYTES * 4) + const saved = spill() + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + + expect(formatted.output).toStartWith("Preview: 1 of 1 returned rows shown.") + expect(formatted.output).toContain(`…[cell clipped, ${cell.length} chars]`) + expect(formatted.output).toContain("Output truncated: yes.") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(Buffer.byteLength(body(formatted.output), "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(formatted.output).toContain(resultPath) + expect(formatted.metadata).toMatchObject({ + rows_returned: 1, + preview_rows: 1, + row_limited: false, + output_truncated: true, + truncated: true, + result_path: resultPath, + }) + expect(saved.writes).toHaveLength(1) + expect(saved.rows()).toEqual([{ columns: ["value"], values: [cell] }]) + }) + + test("leads a row-limited result with an honest envelope and saves every returned row", async () => { + const rows = Array.from({ length: 100 }, (_, i) => [i]) + const saved = spill() + const formatted = await formatSqlResult(result(rows, ["id"], true), { limit: 100, write: saved.write }) + + expect(formatted.output).toStartWith(`Preview: ${SQL_MAX_PREVIEW_ROWS} of 100 returned rows shown.`) + expect(formatted.output.toLowerCase()).toContain("may be row-limited") + expect(formatted.output.toLowerCase()).toContain("total unknown") + expect(formatted.output).toContain(`All 100 returned rows saved to ${resultPath}`) + expect(formatted.metadata).toMatchObject({ + rowCount: 100, + rows_returned: 100, + preview_rows: SQL_MAX_PREVIEW_ROWS, + row_limited: true, + output_truncated: true, + }) + expect(saved.rows().map((row) => row.values)).toEqual(rows) + }) + + test("exactly-N dbt-style truncation says may rather than claiming another row exists", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([[1], [2]], ["id"], true), { limit: 2, write: saved.write }) + + expect(formatted.output).toStartWith("Preview: 2 of 2 returned rows shown.") + expect(formatted.output.toLowerCase()).toContain("may be row-limited") + expect(formatted.output.toLowerCase()).toContain("total unknown") + expect(formatted.output).not.toContain("at least 3") + expect(formatted.output).toContain("Output truncated: no.") + expect(formatted.metadata.row_limited).toBe(true) + expect(formatted.metadata.output_truncated).toBe(false) + expect(saved.rows()).toHaveLength(2) + }) + + test("does not attribute a smaller connector cap to the requested tool limit", async () => { + const formatted = await formatSqlResult(result([[1], [2]], ["id"], true), { + limit: 100, + sql: JSON.stringify({ command: "find", collection: "items", limit: 2 }), + write: spill().write, + }) + + expect(formatted.output).toContain("may be row-limited") + expect(formatted.output).not.toContain("row limit 100") + expect(formatted.metadata.row_limited).toBe(true) + expect(formatted.metadata.output_truncated).toBe(false) + }) + + test("previews the first 50 rows and spills all rows even without a backend row limit", async () => { + const rows = Array.from({ length: 75 }, (_, i) => [`row-${String(i).padStart(3, "0")}`]) + const saved = spill() + const formatted = await formatSqlResult(result(rows), { limit: 100, write: saved.write }) + + expect(body(formatted.output).split("\n").slice(0, SQL_MAX_PREVIEW_ROWS)).toEqual(rows.slice(0, 50).flat()) + expect(formatted.output).not.toContain("row-050") + expect(formatted.output).not.toContain("row-074") + expect(formatted.metadata.row_limited).toBe(false) + expect(formatted.metadata.preview_rows).toBe(SQL_MAX_PREVIEW_ROWS) + expect(saved.rows().map((row) => row.values)).toEqual(rows) + }) + + test("clips UTF-8 on character boundaries and escapes embedded newlines in JSONL", async () => { + const cell = "😀漢字\nsecond line\r\n".repeat(2000) + const saved = spill() + const formatted = await formatSqlResult(result([[cell], ["tail\nvalue"]]), { + limit: 100, + maxBytes: 1024, + write: saved.write, + }) + + expect(formatted.output).not.toContain("\uFFFD") + expect(formatted.output).toContain("…[cell clipped,") + expect(Buffer.byteLength(body(formatted.output), "utf8")).toBeLessThanOrEqual(1024) + expect(saved.writes[0]!.trimEnd().split("\n")).toHaveLength(2) + expect(saved.rows().map((row) => row.values)).toEqual([[cell], ["tail\nvalue"]]) + }) + + test("keeps the envelope, short column list and spill path within the configured cap", async () => { + const columns = ["identifier", "description"] + const saved = spill() + const formatted = await formatSqlResult(result([[7, "q".repeat(10_000)]], columns), { + limit: 100, + maxBytes: 1024, + write: saved.write, + }) + + expect(formatted.output).toStartWith("Preview: 1 of 1 returned rows shown.") + expect(formatted.output).toContain(columns.join(" | ")) + expect(formatted.output).toContain(`All 1 returned rows saved to ${resultPath}`) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(1024) + expect(Buffer.byteLength(body(formatted.output, columns), "utf8")).toBeLessThanOrEqual(1024) + expect(formatted.metadata.result_path).toBe(resultPath) + }) + + test("clips a 20,000-character alias visibly and includes the entire output in the byte cap", async () => { + const alias = "漢".repeat(20_000) + const saved = spill() + const formatted = await formatSqlResult(result([[42]], [alias]), { limit: 100, write: saved.write }) + + expect(formatted.output).toContain("…[alias clipped]") + expect(formatted.output).not.toContain("\uFFFD") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(formatted.metadata).toMatchObject({ + schema_truncated: true, + preview_rows: 1, + preview_columns: 1, + output_truncated: false, + truncated: false, + }) + expect(formatted.output).not.toContain("Output truncated: yes") + expect(formatted.metadata.result_path).toBeDefined() + expect(saved.writes).toHaveLength(1) + }) + + test("caps a 500-column preview and saves the full schema and rows", async () => { + const columns = Array.from({ length: 500 }, (_, i) => `column_${i}`) + const values = columns.map((_, i) => `value_${i}`) + const saved = spill() + const formatted = await formatSqlResult(result([values], columns), { limit: 100, write: saved.write }) + + expect(formatted.output).toContain(`(+${500 - SQL_MAX_PREVIEW_COLUMNS} more columns, see spill)`) + expect(formatted.output).not.toContain("column_60") + expect(formatted.output).not.toContain("value_60") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(formatted.metadata).toMatchObject({ + schema_truncated: true, + preview_columns: SQL_MAX_PREVIEW_COLUMNS, + output_truncated: true, + }) + expect(saved.rows()).toEqual([{ columns, values }]) + }) + + test.each([0, 8, 64, 512, 1024])( + "keeps wide schemas and a long spill envelope within a %i-byte cap", + async (maxBytes) => { + const columns = Array.from({ length: 500 }, (_, i) => `${i}_${"alias".repeat(100)}`) + const formatted = await formatSqlResult(result([columns], columns), { + limit: 100, + maxBytes, + write: async () => "/tmp/" + "long-path".repeat(100), + }) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(maxBytes) + expect(formatted.metadata.output_truncated).toBe(true) + }, + ) + + test("respects a smaller configured line limit", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([["first"], ["second"], ["third"]]), { + limit: 100, + maxLines: 6, + write: saved.write, + }) + + expect(body(formatted.output).split("\n").length).toBeLessThanOrEqual(6) + expect(formatted.output.split("\n").length).toBeLessThanOrEqual(6) + expect(formatted.output).toContain("first") + expect(formatted.output).not.toContain("third") + expect(formatted.metadata.output_truncated).toBe(true) + expect(saved.rows()).toHaveLength(3) + }) + + test("retains a usable preview and reports spill failure without a result path", async () => { + const formatted = await formatSqlResult(result([["readable-prefix " + "x".repeat(100_000)]]), { + limit: 100, + write: async () => { + throw new Error("disk full") + }, + }) + + expect(formatted.output).toStartWith("Preview: 1 of 1 returned rows shown.") + expect(formatted.output).toContain("readable-prefix") + expect(formatted.output.toLowerCase()).toContain("spill failed") + expect(formatted.output).not.toContain("rows saved to") + expect(formatted.metadata.result_path).toBeUndefined() + expect(formatted.metadata.output_truncated).toBe(true) + }) + + test("spills explicit tags for big integers, dates and bytes while leaving identical strings unchanged", async () => { + const columns = [ + "same", + "same", + "nested", + "buffer", + "bytes", + "bigint_string", + "date", + "date_string", + "bytes_string", + ] + const iso = "2026-01-02T03:04:05.000Z" + const rows = [ + [ + null, + "NULL", + { big: 9007199254740993n, list: [true, null, { text: "a\nb" }] }, + Buffer.from([0, 255]), + new Uint8Array([1, 128]), + "9007199254740993", + new Date(iso), + iso, + "AP8=", + ], + ] + const saved = spill() + const formatted = await formatSqlResult(result(rows, columns, true), { limit: 1, write: saved.write }) + + expect(formatted.metadata.result_path).toBe(resultPath) + expect(formatted.output).toContain("Lossy JSONL text") + expect(formatted.output).toContain("$bigint, $date (ISO), $bytes (base64) tags; strings unchanged") + expect(saved.rows()).toEqual([ + { + columns, + values: [ + null, + "NULL", + { big: { $bigint: "9007199254740993" }, list: [true, null, { text: "a\nb" }] }, + { $bytes: "AP8=" }, + { $bytes: "AYA=" }, + "9007199254740993", + { $date: iso }, + iso, + "AP8=", + ], + }, + ]) + }) + + test("rejects oversized spills before writing and still returns the bounded preview", async () => { + const saved = spill() + const formatted = await formatSqlResult(result([["x".repeat(SQL_MAX_SPILL_BYTES + 1)]]), { + limit: 100, + write: saved.write, + }) + + expect(saved.writes).toHaveLength(0) + expect(formatted.output.toLowerCase()).toContain("spill failed") + expect(formatted.metadata.result_path).toBeUndefined() + expect(Buffer.byteLength(body(formatted.output), "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + }) + + test("preserves nonfinite numbers and undefined instead of silently converting them to NULL", async () => { + const saved = spill() + await formatSqlResult( + result( + [[NaN, Infinity, -Infinity, -0, undefined, { missing: undefined }]], + ["nan", "positive", "negative", "zero", "missing", "nested"], + true, + ), + { limit: 1, write: saved.write }, + ) + expect(saved.rows()[0].values).toEqual([ + { $sql_type: "number", value: "NaN" }, + { $sql_type: "number", value: "Infinity" }, + { $sql_type: "number", value: "-Infinity" }, + { $sql_type: "number", value: "-0" }, + { $sql_type: "undefined" }, + { missing: { $sql_type: "undefined" } }, + ]) + }) + + test("preflights oversized binary cells before Buffer.toJSON allocates a data array", async () => { + const saved = spill() + const cell = Buffer.alloc(SQL_MAX_SPILL_BYTES / 4 + 1) + let serialized = false + cell.toJSON = () => { + serialized = true + throw new Error("must not allocate the data array") + } + const formatted = await formatSqlResult(result([[cell]]), { limit: 100, write: saved.write }) + expect(serialized).toBe(false) + expect(saved.writes).toHaveLength(0) + expect(formatted.output).toContain("Spill failed") + expect(formatted.metadata.output_truncated).toBe(true) + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + }) + + test("rejects a cyclic nested value as a spill failure without losing the preview", async () => { + const value: Record = { label: "value" } + value.self = value + const saved = spill() + const formatted = await formatSqlResult(result([[value]], ["value"], true), { limit: 1, write: saved.write }) + expect(saved.writes).toHaveLength(0) + expect(formatted.output).toStartWith("Preview: 1 of 1 returned rows shown.") + expect(formatted.output).toContain("Spill failed") + expect(formatted.metadata.result_path).toBeUndefined() + }) + + test("bounds array previews without converting the whole array to a string", async () => { + const value = ["😀".repeat(20_000), "remaining element"] + value.toString = () => { + throw new Error("must not stringify the full array") + } + const saved = spill() + const formatted = await formatSqlResult(result([[value]]), { limit: 100, write: saved.write }) + expect(formatted.metadata.output_truncated).toBe(true) + expect(formatted.output).not.toContain("\uFFFD") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(SQL_MAX_PREVIEW_BYTES) + expect(saved.rows()[0].values).toEqual([["😀".repeat(20_000), "remaining element"]]) + }) + + test("includes a two-digit preview count and clipping status within the byte budget", async () => { + const rows = [...Array.from({ length: 9 }, (_, i) => [i]), ["x".repeat(20_000)]] + const saved = spill() + const formatted = await formatSqlResult(result(rows), { limit: 100, maxBytes: 1024, write: saved.write }) + expect(formatted.metadata.preview_rows).toBe(10) + expect(formatted.output).toContain("Output truncated: yes") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(1024) + }) +}) + +describe("empty-result hint", () => { + const run = (rows: unknown[][], sql: string, columns = ["region"]) => + formatSqlResult(result(rows, columns), { limit: 100, sql, write: spill().write }) + + test("fires for a 0-row result with a string-literal equality filter", async () => { + const out = await run([], "SELECT * FROM sales WHERE region = 'North'") + expect(out.output).toContain("(0 rows)") + expect(out.output).toContain("Hint: 0 rows.") + expect(out.output).toContain("SELECT DISTINCT") + }) + + test.each([{ rows: [] }, { rows: [["North"]] }])( + "omits the optional hint when it would exceed a short-result budget (%j)", + async ({ rows }) => { + const formatted = await formatSqlResult(result(rows.map((row) => [...row])), { + limit: 100, + sql: "SELECT value FROM sales WHERE value = 'North'", + maxBytes: 64, + write: spill().write, + }) + expect(formatted.output).not.toContain("Hint:") + expect(Buffer.byteLength(formatted.output, "utf8")).toBeLessThanOrEqual(64) + expect(formatted.metadata.output_truncated).toBe(false) + }, + ) + + test("fires for an IN list and for a result of one or two rows", async () => { + expect((await run([], "select * from t where c in ('a', 'b')")).output).toContain("Hint: 0 rows.") + const one = await run([["x"]], "SELECT region FROM t WHERE region = 'N'") + expect(one.output).toContain("Hint: only 1 row(s).") + expect(one.output).toContain("(1 rows)") + }) + + test("does not fire for scalar aggregates, unfiltered or non-literal empties, or larger results", async () => { + expect((await run([[0]], "SELECT COUNT(*) FROM t WHERE region = 'N'", ["n"])).output).not.toContain("Hint") + expect((await run([], "SELECT * FROM t WHERE id = 5")).output).toBe("(0 rows)") + expect((await run([], "SELECT * FROM t")).output).toBe("(0 rows)") + expect((await run([], "SELECT * FROM t WHERE id > 5 -- region = 'N'")).output).toBe("(0 rows)") + expect((await run([["a"], ["b"], ["c"]], "SELECT * FROM t WHERE r = 'a'")).output).not.toContain("Hint") + }) + + test("is off when the statement is not provided", async () => { + expect((await run([], undefined as any)).output).toBe("(0 rows)") + }) +}) diff --git a/packages/opencode/test/altimate/tools/sql-result-lint.test.ts b/packages/opencode/test/altimate/tools/sql-result-lint.test.ts new file mode 100644 index 0000000000..ea63505a40 --- /dev/null +++ b/packages/opencode/test/altimate/tools/sql-result-lint.test.ts @@ -0,0 +1,404 @@ +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" +import * as core from "@altimateai/altimate-core" +import * as Registry from "../../../src/altimate/native/connections/registry" +import * as Cache from "../../../src/altimate/native/schema/cache" +import type { SchemaSearchColumnResult } from "../../../src/altimate/native/types" +import { formatSqlLint, lintSqlResult } from "../../../src/altimate/tools/sql-result-lint" + +const rules = [ + "cast_division_to_int", + "sum_of_ratio", + "join_fan_out", + "non_deterministic_dedup", + "null_in_in_list", + "not_in_nullable", + "greatest_least_null", + "typed_coalesce_mismatch", + "null_propagating_concat", + "union_without_all", + "implicit_cross_join", + "join_without_condition", + "outer_join_filter_in_where", + "count_star_vs_column", + "division_by_column_no_guard", + "integer_division", + "limit_without_order_by", + "avg_of_avg", + "reserved_word_alias", +] + +function finding(rule = "cast_division_to_int", severity = "warning") { + return { rule, severity, message: "Division loses precision", suggestion: "Keep a decimal result" } +} + +describe("formatSqlLint", () => { + for (const rule of rules) { + test(`keeps ${rule}`, () => { + expect(formatSqlLint([finding(rule)])).toEqual({ + output: `Checks:\nCheck: ${rule}: Division loses precision — Keep a decimal result`, + rules: [rule], + }) + }) + } + + test("drops unrelated and Info findings before applying the three-finding limit", () => { + const result = formatSqlLint([ + finding("select_star"), + finding("integer_division", "Info"), + finding("avg_of_avg", "INFO"), + finding("join_fan_out", "info"), + finding("cast_division_to_int", "error"), + finding("not_in_nullable", "Warning"), + finding("sum_of_ratio"), + finding("limit_without_order_by"), + ]) + expect(result.rules).toEqual(["cast_division_to_int", "not_in_nullable", "sum_of_ratio"]) + expect(result.output.split("\n")).toHaveLength(4) + expect(result.output).not.toContain("limit_without_order_by") + }) + + test("collapses messages and suggestions to one line each", () => { + expect( + formatSqlLint([ + { ...finding(), message: " Division\n loses\tprecision ", suggestion: " Keep\r\na decimal result " }, + ]).output, + ).toBe("Checks:\nCheck: cast_division_to_int: Division loses precision — Keep a decimal result") + }) + + test("omits a missing suggestion and the header when no finding survives", () => { + expect(formatSqlLint([{ ...finding(), suggestion: undefined }]).output).toBe( + "Checks:\nCheck: cast_division_to_int: Division loses precision", + ) + expect(formatSqlLint([finding("select_star"), finding("integer_division", "info")])).toEqual({ + output: "", + rules: [], + }) + expect(formatSqlLint([])).toEqual({ output: "", rules: [] }) + }) + + test("records each displayed rule only once", () => { + const result = formatSqlLint([finding(), finding(), finding("not_in_nullable")]) + expect(result.output.split("\n")).toHaveLength(4) + expect(result.rules).toEqual(["cast_division_to_int", "not_in_nullable"]) + }) +}) + +describe("lintSqlResult", () => { + const spies: { mockRestore(): void }[] = [] + let cache: Cache.SchemaCache + let previousLint: string | undefined + let session = 0 + const nextSession = () => `sql-result-lint-${++session}` + const report: core.LintResult = { + sql: "SELECT CAST(3 / 2 AS INT)", + findings: [{ ...finding(), severity: "warning", code: "fixture" }], + error_count: 0, + warning_count: 1, + clean: false, + } + + function track(spy: T): T { + spies.push(spy) + return spy + } + + function status(lastIndexed: string) { + return { + warehouses: [ + { + name: "warehouse", + type: "postgresql", + last_indexed: lastIndexed, + databases_count: 2, + schemas_count: 2, + tables_count: 2, + columns_count: 2, + }, + ], + total_tables: 2, + total_columns: 2, + cache_path: ":memory:", + } + } + + beforeEach(() => { + previousLint = process.env.ALTIMATE_SQL_EXECUTE_LINT + delete process.env.ALTIMATE_SQL_EXECUTE_LINT + cache = Cache.SchemaCache.createInMemory() + track(spyOn(Cache, "getCache").mockResolvedValue(cache)) + track(spyOn(Registry, "list").mockReturnValue({ warehouses: [{ name: "warehouse", type: "postgresql" }] })) + track( + spyOn(Registry, "getConfig").mockImplementation((name) => + name === "warehouse" ? { type: "postgresql" } : { type: "duckdb" }, + ), + ) + }) + + afterEach(() => { + for (const spy of spies.splice(0).reverse()) spy.mockRestore() + cache.close() + if (previousLint === undefined) delete process.env.ALTIMATE_SQL_EXECUTE_LINT + else process.env.ALTIMATE_SQL_EXECUTE_LINT = previousLint + }) + + test("uses the explicit warehouse dialect with an empty schema", async () => { + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + expect(await lintSqlResult(report.sql, "scratch", nextSession())).toEqual(formatSqlLint(report.findings)) + expect(lint).toHaveBeenCalledTimes(1) + expect(lint.mock.calls[0][1].toJson()).toMatchObject({ + dialect: "duckdb", + tables: { _empty_: { columns: [{ name: "id", type: "INT", nullable: true }] } }, + }) + }) + + test("uses the default warehouse's canonical dialect", async () => { + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult(report.sql, undefined, nextSession()) + expect(lint).toHaveBeenCalledTimes(1) + expect(lint.mock.calls[0][1].toJson().dialect).toBe("postgres") + }) + + for (const type of ["sqlserver", "mssql", "fabric"]) { + test(`maps the ${type} warehouse dialect to core's tsql dialect`, async () => { + track(spyOn(Registry, "getConfig").mockReturnValue({ type })) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult(report.sql, "warehouse", nextSession()) + expect(lint).toHaveBeenCalledTimes(1) + expect(lint.mock.calls[0][1].toJson().dialect).toBe("tsql") + }) + } + + test("preserves fresh cached types, nullability, and fully qualified table names", async () => { + const columns: SchemaSearchColumnResult[] = [ + { + warehouse: "warehouse", + database: "db1", + schema_name: "public", + table: "numbers", + name: "a", + data_type: "INTEGER", + nullable: false, + fqn: "db1.public.numbers.a", + }, + { + warehouse: "warehouse", + database: "db2", + schema_name: "public", + table: "numbers", + name: "a", + data_type: "BIGINT", + nullable: true, + fqn: "db2.public.numbers.a", + }, + ] + track(spyOn(cache, "cacheStatus").mockReturnValue(status(new Date().toISOString()))) + const listColumns = track(spyOn(cache, "listColumns").mockReturnValue([...columns, columns[0]])) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult("SELECT a / 2 FROM db1.public.numbers", "warehouse", nextSession()) + expect(listColumns).toHaveBeenCalledWith("warehouse", 500_000) + expect(lint.mock.calls[0][1].toJson()).toMatchObject({ + dialect: "postgres", + tables: { + "db1.public.numbers": { columns: [{ name: "a", type: "INTEGER", nullable: false }] }, + "db2.public.numbers": { columns: [{ name: "a", type: "BIGINT", nullable: true }] }, + }, + }) + expect(lint.mock.calls[0][1].tableNames()).toHaveLength(2) + }) + + test("only builds schemas for referenced tables in a large warehouse cache", async () => { + const columns: SchemaSearchColumnResult[] = Array.from({ length: 500_000 }, (_, i) => ({ + warehouse: "warehouse", + schema_name: "public", + table: `unrelated_${Math.floor(i / 10)}`, + name: `column_${i % 10}`, + data_type: "INTEGER", + nullable: false, + fqn: `public.unrelated_${Math.floor(i / 10)}.column_${i % 10}`, + })) + const numbers: SchemaSearchColumnResult = { + warehouse: "warehouse", + schema_name: "public", + table: "NUMBERS", + name: "a", + data_type: "INTEGER", + nullable: false, + fqn: "public.NUMBERS.a", + } + columns[columns.length - 1] = numbers + track(spyOn(cache, "cacheStatus").mockReturnValue(status(new Date().toISOString()))) + const listColumns = track(spyOn(cache, "listColumns").mockReturnValue(columns)) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + const started = performance.now() + expect(await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", nextSession())).toEqual( + formatSqlLint(report.findings), + ) + const elapsed = performance.now() - started + expect(elapsed).toBeLessThan(150) + expect(listColumns).toHaveBeenCalledWith("warehouse", 500_000) + expect(lint.mock.calls[0][1].tableNames()).toEqual(["public.NUMBERS"]) + expect(lint.mock.calls[0][1].toJson().tables).toMatchObject({ + "public.NUMBERS": { columns: [{ name: "a", type: "INTEGER", nullable: false }] }, + }) + console.log(`Referenced-table lint across 500,000 cached columns: ${elapsed.toFixed(2)} ms`) + }) + + test("matches schema-qualified metadata case-insensitively", async () => { + track(spyOn(core, "extractMetadata").mockReturnValue({ ...core.extractMetadata("SELECT 1"), tables: ["PUBLIC.NUMBERS"] })) + track(spyOn(cache, "cacheStatus").mockReturnValue(status(new Date().toISOString()))) + const column: SchemaSearchColumnResult = { + warehouse: "warehouse", + schema_name: "public", + table: "numbers", + name: "a", + data_type: "INTEGER", + nullable: true, + fqn: "public.numbers.a", + } + track(spyOn(cache, "listColumns").mockReturnValue([column, { ...column, schema_name: "other" }])) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult("SELECT a / 2 FROM public.numbers", "warehouse", nextSession()) + expect(lint.mock.calls[0][1].tableNames()).toEqual(["public.numbers"]) + }) + + test("caps the referenced schema at 2,000 columns total", async () => { + track(spyOn(cache, "cacheStatus").mockReturnValue(status(new Date().toISOString()))) + const columns: SchemaSearchColumnResult[] = Array.from({ length: 3_000 }, (_, i) => ({ + warehouse: "warehouse", + schema_name: "public", + table: i < 1_500 ? "numbers" : "ratios", + name: `column_${i}`, + data_type: "INTEGER", + nullable: false, + fqn: `public.${i < 1_500 ? "numbers" : "ratios"}.column_${i}`, + })) + track(spyOn(cache, "listColumns").mockReturnValue([columns[0], ...columns])) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult("SELECT * FROM numbers JOIN ratios ON 1 = 1", "warehouse", nextSession()) + const tables = lint.mock.calls[0][1].toJson().tables + expect(tables["public.numbers"].columns).toHaveLength(1_500) + expect(tables["public.ratios"].columns).toHaveLength(500) + }) + + test("a trivial query avoids the cache and stays well below the lint budget", async () => { + track(spyOn(cache, "cacheStatus").mockImplementation(() => { + throw new Error("A table-free query must not read the warehouse cache") + })) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + const started = performance.now() + expect(await lintSqlResult("SELECT 1", "warehouse", nextSession())).toEqual(formatSqlLint(report.findings)) + const elapsed = performance.now() - started + expect(elapsed).toBeLessThan(100) + expect(Cache.getCache).not.toHaveBeenCalled() + expect(lint.mock.calls[0][1].tableNames()).toEqual(["_empty_"]) + console.log(`Trivial-query lint: ${elapsed.toFixed(2)} ms`) + }) + + test("falls back to schema-free lint when metadata extraction is unavailable", async () => { + track(spyOn(core, "extractMetadata").mockImplementation(() => { + throw new Error("metadata extraction unavailable") + })) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + expect(await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", nextSession())).toEqual( + formatSqlLint(report.findings), + ) + expect(Cache.getCache).not.toHaveBeenCalled() + expect(lint.mock.calls[0][1].tableNames()).toEqual(["_empty_"]) + }) + + for (const lastIndexed of [new Date(Date.now() - 25 * 60 * 60 * 1000).toISOString(), "invalid-date"]) { + test(`ignores stale or invalid cache timestamp: ${lastIndexed}`, async () => { + track(spyOn(cache, "cacheStatus").mockReturnValue(status(lastIndexed))) + const columns = track(spyOn(cache, "listColumns")) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", nextSession()) + expect(columns).not.toHaveBeenCalled() + expect(lint.mock.calls[0][1].tableNames()).toEqual(["_empty_"]) + }) + } + + test("returns no block for a clean lint", async () => { + track(spyOn(core, "lint").mockReturnValue({ ...report, findings: [], warning_count: 0, clean: true })) + expect(await lintSqlResult("SELECT 1", "warehouse", nextSession())).toBeUndefined() + }) + + test("bypasses lint for writes, mixed statements, and the opt-out environment variable", async () => { + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + expect(await lintSqlResult("UPDATE numbers SET a = 0", "warehouse", nextSession())).toBeUndefined() + expect(await lintSqlResult("SELECT 1; DELETE FROM numbers", "warehouse", nextSession())).toBeUndefined() + expect(await lintSqlResult("SELECT a INTO copied FROM numbers", "warehouse", nextSession())).toBeUndefined() + expect( + await lintSqlResult( + "WITH moved AS (DELETE FROM numbers RETURNING a) SELECT * FROM moved", + "warehouse", + nextSession(), + ), + ).toBeUndefined() + expect(await lintSqlResult("SELECT nextval('sequence')", "warehouse", nextSession())).toBeUndefined() + process.env.ALTIMATE_SQL_EXECUTE_LINT = "0" + expect(await lintSqlResult(report.sql, "warehouse", nextSession())).toBeUndefined() + expect(lint).not.toHaveBeenCalled() + expect(Cache.getCache).not.toHaveBeenCalled() + }) + + test("swallows a lint error without disabling later lints in the session", async () => { + const id = nextSession() + const lint = track( + spyOn(core, "lint") + .mockImplementationOnce(() => { + throw new Error("native lint failed") + }) + .mockReturnValue(report), + ) + expect(await lintSqlResult(report.sql, "warehouse", id)).toBeUndefined() + expect(await lintSqlResult(report.sql, "warehouse", id)).toEqual(formatSqlLint(report.findings)) + expect(lint).toHaveBeenCalledTimes(2) + }) + + test("swallows a schema cache failure", async () => { + track(spyOn(Cache, "getCache").mockRejectedValueOnce(new Error("cache unavailable"))) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + expect(await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", nextSession())).toBeUndefined() + expect(lint).not.toHaveBeenCalled() + }) + + test("discards a synchronous over-budget lint and disables only its session", async () => { + let now = 0 + track(spyOn(performance, "now").mockImplementation(() => now)) + const lint = track( + spyOn(core, "lint") + .mockImplementationOnce(() => { + now = 251 + return report + }) + .mockReturnValue(report), + ) + const id = nextSession() + expect(await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", id)).toBeUndefined() + expect(await lintSqlResult(report.sql, "warehouse", id)).toBeUndefined() + expect(lint).toHaveBeenCalledTimes(1) + expect(await lintSqlResult(report.sql, "warehouse", nextSession())).toEqual(formatSqlLint(report.findings)) + expect(lint).toHaveBeenCalledTimes(2) + }) + + test("times out asynchronous preparation and skips late and future lint work in that session", async () => { + let release!: (cache: Cache.SchemaCache) => void + track( + spyOn(Cache, "getCache").mockImplementationOnce( + () => + new Promise((resolve) => { + release = resolve + }), + ), + ) + const lint = track(spyOn(core, "lint").mockReturnValue(report)) + const id = nextSession() + expect(await lintSqlResult("SELECT a / 2 FROM numbers", "warehouse", id)).toBeUndefined() + release(cache) + await new Promise((resolve) => setImmediate(resolve)) + expect(await lintSqlResult(report.sql, "warehouse", id)).toBeUndefined() + expect(lint).not.toHaveBeenCalled() + expect(await lintSqlResult(report.sql, "warehouse", nextSession())).toEqual(formatSqlLint(report.findings)) + expect(lint).toHaveBeenCalledTimes(1) + }) +}) diff --git a/packages/opencode/test/altimate/tools/tool-schema-anthropic.test.ts b/packages/opencode/test/altimate/tools/tool-schema-anthropic.test.ts new file mode 100644 index 0000000000..0c8a9c25cc --- /dev/null +++ b/packages/opencode/test/altimate/tools/tool-schema-anthropic.test.ts @@ -0,0 +1,235 @@ +import { afterEach, describe, expect, test } from "bun:test" +import Ajv2020 from "ajv/dist/2020" +import path from "node:path" +import { Effect } from "effect" +import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { Agent } from "@/agent/agent" +import { Config } from "@/config/config" +import { RuntimeFlags } from "@/effect/runtime-flags" +import { PermissionNext } from "@/permission/next" +import type { Provider } from "@/provider/provider" +import { ModelID, ProviderID } from "@/provider/schema" +import { ProviderTransform } from "@/provider/transform" +import { ToolJsonSchema } from "@/tool/json-schema" +import { ToolRegistry } from "@/tool/registry" +import { TestConfig } from "../../fixture/config" +import { disposeAllInstances } from "../../fixture/fixture" +import { testEffect } from "../../lib/effect" + +const fixture = (enableParallel: boolean) => + testEffect( + LayerNode.buildLayer(LayerNode.group([ToolRegistry.node, Agent.node]), { + replacements: [ + LayerNode.replace(Config.node, TestConfig.layer()), + LayerNode.replace(RuntimeFlags.node, RuntimeFlags.layer({ enableParallel })), + ], + }), + ) + +afterEach(disposeAllInstances) + +const ajv = new Ajv2020({ allErrors: true, strict: false, validateFormats: false }) +const formats = new Set([ + "date-time", + "date", + "time", + "duration", + "email", + "idn-email", + "hostname", + "idn-hostname", + "ipv4", + "ipv6", + "uri", + "uri-reference", + "iri", + "iri-reference", + "uuid", + "uri-template", + "json-pointer", + "relative-json-pointer", + "regex", +]) + +function isObject(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value) +} + +function schemaErrors(schema: object | boolean): string[] { + const errors = ajv.validateSchema(schema) ? [] : [ajv.errorsText(ajv.errors, { separator: "\n" })] + function visit(value: unknown, location = "#") { + if (!isObject(value)) return + for (const keyword of ["$schema", "nullable"]) { + if (keyword in value) errors.push(`${location}/${keyword} is not supported by Anthropic`) + } + for (const keyword of ["exclusiveMinimum", "exclusiveMaximum"]) { + if (typeof value[keyword] === "boolean") errors.push(`${location}/${keyword} must be numeric`) + } + if (typeof value.format === "string" && !formats.has(value.format)) { + errors.push(`${location}/format is not a standard format: ${value.format}`) + } + if ( + "additionalProperties" in value && + typeof value.additionalProperties !== "boolean" && + !isObject(value.additionalProperties) + ) { + errors.push(`${location}/additionalProperties must be boolean or a schema`) + } + // Walk schema positions only: property names and enum/default values may contain these keywords. + for (const keyword of ["properties", "patternProperties", "$defs", "definitions", "dependentSchemas"]) { + if (!isObject(value[keyword])) continue + for (const [name, child] of Object.entries(value[keyword])) visit(child, `${location}/${keyword}/${name}`) + } + for (const keyword of ["allOf", "anyOf", "oneOf", "prefixItems"]) { + if (!Array.isArray(value[keyword])) continue + value[keyword].forEach((child, index) => visit(child, `${location}/${keyword}/${index}`)) + } + for (const keyword of [ + "items", + "contains", + "additionalProperties", + "unevaluatedProperties", + "unevaluatedItems", + "propertyNames", + "not", + "if", + "then", + "else", + "contentSchema", + ]) { + visit(value[keyword], `${location}/${keyword}`) + } + } + visit(schema) + return errors +} + +function model(providerID: ProviderID): Provider.Model { + const id = providerID === ProviderID.amazonBedrock ? "global.anthropic.claude-opus-5-5" : "claude-opus-5-5" + return { + id: ModelID.make(id), + providerID, + api: { id, npm: `@ai-sdk/${providerID}`, url: "https://example.invalid" }, + name: id, + capabilities: { + temperature: true, + reasoning: true, + attachment: false, + toolcall: true, + input: { text: true, audio: false, image: false, video: false, pdf: false }, + output: { text: true, audio: false, image: false, video: false, pdf: false }, + interleaved: false, + }, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 200_000, output: 32_000 }, + status: "active", + release_date: "2026-01-01", + options: {}, + headers: {}, + } +} + +describe("Anthropic tool JSON schemas", () => { + for (const enableParallel of [false, true]) { + const it = fixture(enableParallel) + for (const providerID of [ProviderID.anthropic, ProviderID.amazonBedrock]) { + for (const name of ["analyst", "builder"]) { + it.instance( + `${providerID}, search ${enableParallel ? "enabled" : "disabled"}: every registered ${name} tool satisfies draft 2020-12 and Anthropic restrictions`, + () => + Effect.gen(function* () { + const registry = yield* ToolRegistry.Service + const agents = yield* Agent.Service + const agent = yield* agents.get(name) + if (!agent) throw new Error(`${name} agent not found`) + const target = model(providerID) + const tools = yield* registry.tools({ providerID, modelID: target.id, agent }) + expect(tools.map((tool) => tool.id)).toEqual(expect.arrayContaining(["sql_check", "sql_execute", "read"])) + expect(tools.some((tool) => tool.id === "answer_commit")).toBe(name === "analyst") + + // Match prompt.ts / session/tools.ts conversion. Both SDK providers forward this schema unchanged. + // Also retain the legacy LLM.stream permission-filtered insertion order for offline diagnostics. + const disabled = PermissionNext.disabled( + tools.map((tool) => tool.id), + agent.permission, + ) + let requestIndex = 0 + const schemas = tools.map((tool, registryIndex) => ({ + name: tool.id, + registryIndex, + requestIndex: tool.id === "invalid" || disabled.has(tool.id) ? null : requestIndex++, + schema: JSON.parse(JSON.stringify(ProviderTransform.schema(target, ToolJsonSchema.fromTool(tool)))), + })) + const dump = process.env.TOOL_SCHEMA_DUMP_DIR + if (dump) { + yield* Effect.promise(() => + Bun.write( + path.join(dump, `${providerID}-${name}${enableParallel ? "-search" : ""}.json`), + JSON.stringify(schemas, null, 2), + ), + ) + } + // Validate every registered tool, including ones hidden by this agent's permissions. + const errors = schemas.flatMap((tool) => + schemaErrors(tool.schema).map((error) => `${tool.name}: ${error}`), + ) + expect(errors).toEqual([]) + }), + ) + } + } + } + + test.each(["@ai-sdk/anthropic", "@ai-sdk/amazon-bedrock", "@ai-sdk/google-vertex/anthropic"])( + "%s removes only the root dialect declaration without mutating the input", + (npm) => { + const target = model(ProviderID.anthropic) + target.api.npm = npm + const expected = { + type: "object" as const, + properties: { + $schema: { type: "string" as const }, + value: { type: "number" as const, exclusiveMinimum: 0 }, + empty: { type: "array" as const, items: {}, minItems: 0, maxItems: 0 }, + }, + required: ["value"], + additionalProperties: false, + } + const input = { $schema: "https://json-schema.org/draft/2020-12/schema", ...expected } + const original = structuredClone(input) + expect(ProviderTransform.schema(target, input)).toEqual(expected) + expect(input).toEqual(original) + }, + ) + + test("rejects empty tuple prefixItems and nested Anthropic-incompatible keywords", () => { + for (const fragment of [ + { type: "array", prefixItems: [] }, + { $schema: "https://json-schema.org/draft/2020-12/schema" }, + { nullable: true }, + { type: "number", exclusiveMinimum: true }, + { type: "number", exclusiveMaximum: false }, + { type: "string", format: "custom-format" }, + { type: "object", additionalProperties: [] }, + ]) { + expect(schemaErrors({ type: "object", properties: { value: { anyOf: [fragment] } } }).length).toBeGreaterThan(0) + } + }) + + test("allows type arrays, compositions, standard formats, and keyword-like data", () => { + expect( + schemaErrors({ + type: "object", + properties: { + nullable: { type: ["string", "null"] }, + $schema: { type: "string", format: "uri" }, + value: { anyOf: [{ type: "number", exclusiveMinimum: 0 }, { type: "null" }] }, + choice: { oneOf: [{ const: 1 }, { const: 2 }] }, + payload: { enum: [{ nullable: true, $schema: "literal data" }] }, + labels: { type: "object", additionalProperties: { type: "string" } }, + }, + additionalProperties: false, + }), + ).toEqual([]) + }) +}) diff --git a/packages/opencode/test/altimate/tracing-adversarial-snapshot.test.ts b/packages/opencode/test/altimate/tracing-adversarial-snapshot.test.ts index 8dc34c9bbb..83ba070a1c 100644 --- a/packages/opencode/test/altimate/tracing-adversarial-snapshot.test.ts +++ b/packages/opencode/test/altimate/tracing-adversarial-snapshot.test.ts @@ -520,8 +520,13 @@ describe("Live trace viewer — /api/trace", () => { }) try { - // startTrace writes initial snapshot — file should exist immediately - await new Promise((r) => setTimeout(r, 50)) + // altimate_change start — wait for asynchronous snapshots, not a fixed write deadline + await pollTrace( + tracer, + (snapshot) => snapshot.spans.filter((span) => span.kind === "session").length === 1, + "the live viewer's initial session span", + ) + // altimate_change end const r1 = await fetch(`http://localhost:${server.port}/api/trace`) expect(r1.status).toBe(200) const data1 = await r1.json() as TraceFile @@ -533,7 +538,13 @@ describe("Live trace viewer — /api/trace", () => { tool: "bash", callID: "c1", state: { status: "completed", input: {}, output: "ok", time: { start: 1, end: 2 } }, }) - await new Promise((r) => setTimeout(r, 50)) + // altimate_change start — the writer may still be draining an earlier snapshot + await pollTrace( + tracer, + (snapshot) => snapshot.spans.filter((span) => span.kind === "tool").length === 1, + "the live viewer's first tool span", + ) + // altimate_change end const r2 = await fetch(`http://localhost:${server.port}/api/trace`) expect(r2.status).toBe(200) @@ -545,7 +556,13 @@ describe("Live trace viewer — /api/trace", () => { tool: "read", callID: "c2", state: { status: "completed", input: {}, output: "content", time: { start: 3, end: 4 } }, }) - await new Promise((r) => setTimeout(r, 50)) + // altimate_change start — assert eventual live updates without forcing a trace flush + await pollTrace( + tracer, + (snapshot) => snapshot.spans.filter((span) => span.kind === "tool").length === 2, + "the live viewer's second tool span", + ) + // altimate_change end const r3 = await fetch(`http://localhost:${server.port}/api/trace`) const data3 = await r3.json() as TraceFile diff --git a/packages/opencode/test/altimate/tracing-bigint.test.ts b/packages/opencode/test/altimate/tracing-bigint.test.ts new file mode 100644 index 0000000000..d656abbc0e --- /dev/null +++ b/packages/opencode/test/altimate/tracing-bigint.test.ts @@ -0,0 +1,160 @@ +import { afterEach, describe, expect, spyOn, test } from "bun:test" +import { RunTracing } from "../../src/cli/cmd/run-tracing" +import { TraceConsumer } from "../../src/altimate/observability/trace-consumer" +import { FileExporter, HttpExporter, Trace, type TraceFile } from "../../src/altimate/observability/tracing" +import { Log } from "../../src/altimate/util/log" +import { tmpdir } from "../fixture/fixture" + +const spies: Array<{ mockRestore(): void }> = [] +afterEach(() => { + for (const spy of spies.splice(0).reverse()) spy.mockRestore() +}) + +const counts = { small: 42n, large: 9007199254740993n, negative: -9007199254740993n } +const serializedCounts = { small: "42", large: "9007199254740993", negative: "-9007199254740993" } + +function toolEvent(id: string) { + return { + type: "message.part.updated", + properties: { + part: { + id, + sessionID: "bigint", + messageID: "assistant", + type: "tool", + tool: "sql_execute", + callID: id, + state: { + status: "completed", + input: counts, + output: "42\nChecks:\nCheck: null_propagating_concat", + time: { start: 1, end: 2 }, + }, + }, + }, + } +} + +describe("BigInt tracing boundaries", () => { + test("snapshots and final exports preserve nested BigInts in spans, tool inputs, and metadata", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace("bigint", {}) + trace.logSpan({ name: "counts", startTime: 1, endTime: 2, input: counts, output: [counts] }) + trace.logToolCall(toolEvent("count").properties.part as Parameters[0]) + trace.setSpanAttributes({ counts }, "tool") + trace.setRunBudget({ elapsed_s: 1, time_budget_deadline: "none", ...{ counts } }) + trace.setRunLineage({ rootSessionId: "bigint", ...{ counts } }) + await trace.flush() + + const snapshot = (await Bun.file(trace.getTracePath()!).json()) as TraceFile + expect(snapshot.spans.find((span) => span.name === "counts")?.input).toEqual(serializedCounts) + expect(snapshot.spans.find((span) => span.name === "counts")?.output).toEqual([serializedCounts]) + expect(snapshot.spans.find((span) => span.kind === "tool")?.input).toEqual(serializedCounts) + expect(snapshot.spans.find((span) => span.kind === "tool")?.attributes?.counts).toEqual(serializedCounts) + expect(snapshot.metadata).toMatchObject({ counts: serializedCounts }) + expect(snapshot.metadata.run).toMatchObject({ counts: serializedCounts }) + expect(await trace.endTrace()).toBe(trace.getTracePath()) + expect((await Bun.file(trace.getTracePath()!).json()).metadata.counts).toEqual(serializedCounts) + expect(counts.small).toBe(42n) + }) + + test.each(["finalizeSync", "flushSync"] as const)("%s retains BigInt evidence", async (method) => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace(`bigint-${method}`, {}) + await trace.flush() + trace.logSpan({ name: "counts", startTime: 1, endTime: 2, output: counts }) + trace[method]() + await trace.flush() + const file = (await Bun.file(trace.getTracePath()!).json()) as TraceFile + expect(file.spans.find((span) => span.name === "counts")?.output).toEqual(serializedCounts) + }) + + test("file and HTTP exporters accept BigInts supplied directly by an exporter caller", async () => { + await using tmp = await tmpdir() + let file: TraceFile | undefined + const trace = Trace.withExporters([ + { + name: "memory", + export: async (value) => { + file = value + return undefined + }, + }, + ]) + trace.startTrace("bigint-export", {}) + await trace.endTrace() + file!.spans[0]!.input = counts + const filePath = await new FileExporter(tmp.path, 0).export(file!) + expect(filePath).toBeDefined() + expect((await Bun.file(filePath!).json()).spans[0].input).toEqual(serializedCounts) + + const fetch = spyOn(globalThis, "fetch").mockResolvedValue(new Response("{}")) + spies.push(fetch) + expect(await new HttpExporter("test", "https://unused.invalid").export(file!)).toBe("test: exported") + expect(JSON.parse(fetch.mock.calls[0]![1]!.body as string).spans[0].input).toEqual(serializedCounts) + }) + + test("LLM request snapshots hash and preserve BigInt tool schema fields", async () => { + let file: TraceFile | undefined + const trace = Trace.withExporters([ + { + name: "memory", + export: async (value) => { + file = value + return undefined + }, + }, + ]) + trace.startTrace("bigint", {}) + const request = { + requestID: "request-1", + sessionID: "bigint", + messageID: "assistant", + userMessageID: "user", + agent: "analyst", + providerID: "test", + modelID: "test", + startTime: 1, + system: "Count rows", + tools: [{ name: "sql_execute", active: true, inputSchema: { counts } }], + } + trace.logLLMRequest(request) + trace.logLLMRequest({ ...request, requestID: "request-2" }) + await trace.endTrace() + const inputs = file!.spans.filter((span) => span.name === "llm-request").map((span) => span.input as any) + expect(inputs).toHaveLength(2) + expect(inputs[0].tools.content[0].inputSchema.counts).toEqual(serializedCounts) + expect(inputs[1].tools).toEqual({ hash: inputs[0].tools.hash }) + }) + + test.each(["run", "server"] as const)("%s event subscriber logs a tracing fault and continues", async (mode) => { + const files: TraceFile[] = [] + const exporters = [ + { + name: "memory", + export: async (value: TraceFile) => { + files.push(value) + return undefined + }, + }, + ] + const trace = Trace.withExporters(exporters) + trace.startTrace("bigint", {}) + const recorder = new RunTracing("bigint", trace, { get: async () => undefined, children: async () => [] }) + const consumer = new TraceConsumer({ exporters }) + const debug = spyOn(Log.Default, "debug").mockImplementation(() => {}) + const failure = spyOn(Trace.prototype, "logToolCall").mockImplementationOnce(() => { + throw new Error("tracer failed") + }) + spies.push(debug, failure) + const observe = (event: unknown) => (mode === "run" ? recorder.observe(event) : consumer.handleEvent(event)) + await expect(observe(toolEvent("first"))).resolves.toBeUndefined() + expect(debug).toHaveBeenCalled() + await observe(toolEvent("second")) + if (mode === "run") await recorder.finish() + else await consumer.flush() + expect(files[0]!.spans.some((span) => span.tool?.callId === "second")).toBe(true) + }) +}) diff --git a/packages/opencode/test/altimate/tracing-run-budget.test.ts b/packages/opencode/test/altimate/tracing-run-budget.test.ts new file mode 100644 index 0000000000..ac23aef551 --- /dev/null +++ b/packages/opencode/test/altimate/tracing-run-budget.test.ts @@ -0,0 +1,85 @@ +import { describe, expect, test } from "bun:test" +import { FileExporter, Trace, type TraceFile } from "../../src/altimate/observability/tracing" +import { tmpdir } from "../fixture/fixture" + +describe("run budget trace metadata", () => { + // altimate_change start — persist soft-deadline interruption and effort changes alongside budget fields + test("preserves interruption and effort timestamps when a trace starts", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace("budget-interrupted", { + prompt: "Answer the question", + time_budget_s: 5, + elapsed_s: 4, + time_budget_deadline: "soft", + effort_downgraded_at: 1_700_000_004_000, + generation_interrupted_at: 1_700_000_004_001, + }) + const file = (await Bun.file((await trace.endTrace())!).json()) as TraceFile + expect(file.metadata).toMatchObject({ + time_budget_s: 5, + time_budget_deadline: "soft", + effort_downgraded_at: 1_700_000_004_000, + generation_interrupted_at: 1_700_000_004_001, + }) + }) + + test("retains soft-deadline timestamps in the final hard-deadline trace", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace("budget-finalized", { prompt: "Answer the question" }) + const timestamps = { + effort_downgraded_at: 1_700_000_004_000, + generation_interrupted_at: 1_700_000_004_001, + } + trace.setRunBudget({ time_budget_s: 5, elapsed_s: 4, time_budget_deadline: "soft", ...timestamps }) + trace.setRunBudget({ time_budget_s: 5, elapsed_s: 5.1, time_budget_deadline: "hard", ...timestamps }) + const file = (await Bun.file((await trace.endTrace())!).json()) as TraceFile + expect(file.metadata).toMatchObject({ + prompt: "Answer the question", + time_budget_s: 5, + elapsed_s: 5.1, + time_budget_deadline: "hard", + ...timestamps, + }) + }) + // altimate_change end + + test("preserves budget metadata supplied when a trace starts", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace("budget-start", { + prompt: "Answer the question", + max_turns: 10, + time_budget_s: 2.5, + elapsed_s: 0, + time_budget_deadline: "none", + }) + const file = (await Bun.file((await trace.endTrace())!).json()) as TraceFile + expect(file.metadata).toMatchObject({ + prompt: "Answer the question", + max_turns: 10, + time_budget_s: 2.5, + elapsed_s: 0, + time_budget_deadline: "none", + }) + }) + + test("persists the latest deadline without replacing other run metadata", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path, 0)]) + trace.startTrace("budget-finish", { prompt: "Answer the question" }) + trace.setRunLineage({ rootSessionId: "budget-finish" }) + trace.setRunBudget({ max_turns: 10, time_budget_s: 2.5, elapsed_s: 2, time_budget_deadline: "soft" }) + trace.setRunBudget({ max_turns: 10, time_budget_s: 2.5, elapsed_s: 2.51, time_budget_deadline: "hard" }) + const file = (await Bun.file((await trace.endTrace())!).json()) as TraceFile + expect(file.metadata).toMatchObject({ + prompt: "Answer the question", + run: { rootSessionId: "budget-finish" }, + max_turns: 10, + time_budget_s: 2.5, + elapsed_s: 2.51, + time_budget_deadline: "hard", + }) + }) +}) diff --git a/packages/opencode/test/altimate/tracing-run-content.test.ts b/packages/opencode/test/altimate/tracing-run-content.test.ts new file mode 100644 index 0000000000..34f9674d15 --- /dev/null +++ b/packages/opencode/test/altimate/tracing-run-content.test.ts @@ -0,0 +1,365 @@ +import { describe, expect, test } from "bun:test" +import { createHash } from "node:crypto" +import { + Trace, + MAX_SERIALIZED_SPANS, + USER_MESSAGE_INPUT_MAX_CHARS, + type LLMRequestSnapshot, + type TraceFile, + type TraceExporter, +} from "../../src/altimate/observability/tracing" + +function recording() { + const files = new Map() + const exporter: TraceExporter = { + name: "capture", + async export(file) { + files.set(file.sessionId, file) + return file.sessionId + }, + } + const root = Trace.withExporters([exporter]) + root.startTrace("root", {}) + return { root, files } +} + +function finish(messageID: string) { + return { + id: `finish-${messageID}`, + messageID, + reason: "stop", + cost: 0.25, + tokens: { input: 3, output: 2, reasoning: 1, cache: { read: 0, write: 0 } }, + } +} + +function tool(messageID: string, output = "tool result") { + return { + id: `tool-${messageID}`, + messageID, + tool: "read", + callID: "same-call-id", + state: { status: "completed" as const, input: {}, output, time: { start: 1, end: 2 } }, + } +} + +function request(overrides: Partial = {}): LLMRequestSnapshot { + return { + requestID: "request-first", + sessionID: "root", + messageID: "assistant-first", + userMessageID: "user-first", + agent: "analyst", + providerID: "test-provider", + modelID: "test-model", + variant: "high", + startTime: 1000, + system: "Provider system\n\nAgent system\n\nUser system", + instructions: "Provider instructions", + tools: [ + { + name: "read", + description: "Read a file", + inputSchema: { type: "object", properties: { path: { type: "string" } }, required: ["path"] }, + active: true, + providerToolID: "provider.read", + }, + ], + ...overrides, + } +} + +function sha256(value: string) { + return createHash("sha256").update(value).digest("hex") +} + +describe("run trace content", () => { + test("request snapshots preserve effective inputs and hash-dedupe canonical tool schemas", async () => { + const { root, files } = recording() + const first = request() + root.logLLMRequest(first) + root.logLLMRequest( + request({ + requestID: "request-second", + messageID: "assistant-second", + tools: [ + { + providerToolID: "provider.read", + active: true, + inputSchema: { required: ["path"], properties: { path: { type: "string" } }, type: "object" }, + description: "Read a file", + name: "read", + }, + ], + }), + ) + await root.endTrace() + const spans = files.get("root")!.spans.filter((span) => span.name === "llm-request") + expect(spans).toHaveLength(2) + const systemHash = sha256(first.system) + const instructionsHash = sha256(first.instructions!) + const toolsHash = sha256( + JSON.stringify([ + { + active: true, + description: "Read a file", + inputSchema: { properties: { path: { type: "string" } }, required: ["path"], type: "object" }, + name: "read", + providerToolID: "provider.read", + }, + ]), + ) + expect(spans[0]).toMatchObject({ + kind: "span", + startTime: first.startTime, + model: { modelId: first.modelID, providerId: first.providerID, variant: first.variant }, + attributes: { + sessionId: first.sessionID, + messageId: first.messageID, + userMessageId: first.userMessageID, + agent: first.agent, + requestId: first.requestID, + captureBoundary: "before-streamText", + }, + input: { + system: { hash: systemHash, content: first.system }, + tools: { hash: toolsHash, content: first.tools }, + instructions: { hash: instructionsHash, content: first.instructions }, + }, + }) + expect(spans[1].input).toEqual({ + system: { hash: systemHash }, + tools: { hash: toolsHash }, + instructions: { hash: instructionsHash }, + }) + }) + + test("changed request fields retain new snapshots independently and old snapshots stay deduplicated", async () => { + const { root, files } = recording() + const first = request() + const nextTools = [...first.tools, { name: "_noop", active: false, inputSchema: { type: "object" } }] + root.logLLMRequest(first) + root.logLLMRequest(request({ requestID: "system-change", system: "Updated system" })) + root.logLLMRequest( + request({ + requestID: "tools-change", + system: "Updated system", + tools: nextTools, + instructions: "New instructions", + }), + ) + root.logLLMRequest(request({ requestID: "original-again" })) + root.logLLMRequest(request({ requestID: "no-instructions", instructions: undefined })) + await root.endTrace() + const inputs = files + .get("root")! + .spans.filter((span) => span.name === "llm-request") + .map((span) => span.input) + expect(inputs).toHaveLength(5) + expect(inputs[1]).toEqual({ + system: { hash: sha256("Updated system"), content: "Updated system" }, + tools: { hash: expect.any(String) }, + instructions: { hash: sha256(first.instructions!) }, + }) + expect(inputs[2]).toEqual({ + system: { hash: sha256("Updated system") }, + tools: { hash: expect.any(String), content: nextTools }, + instructions: { hash: sha256("New instructions"), content: "New instructions" }, + }) + expect(inputs[3]).toEqual({ + system: { hash: sha256(first.system) }, + tools: { hash: expect.any(String) }, + instructions: { hash: sha256(first.instructions!) }, + }) + expect(inputs[4]).toEqual({ system: { hash: sha256(first.system) }, tools: { hash: expect.any(String) } }) + }) + + test("request identities are idempotent, unrelated sessions are rejected, and fork dedupe is independent", async () => { + const { root, files } = recording() + const child = await root.forkSession("child") + const first = request() + root.logLLMRequest(first) + root.logLLMRequest(first) + root.logLLMRequest(request({ requestID: "unrelated", sessionID: "outside", system: "Outside system" })) + child.logLLMRequest(request({ sessionID: "child" })) + await Promise.all([root.endTrace(), child.endTrace()]) + for (const id of ["root", "child"]) { + const spans = files.get(id)!.spans.filter((span) => span.name === "llm-request") + expect(spans).toHaveLength(1) + expect(spans[0].attributes?.sessionId).toBe(id) + expect(spans[0].input).toEqual({ + system: { hash: sha256(first.system), content: first.system }, + tools: { hash: expect.any(String), content: first.tools }, + instructions: { hash: sha256(first.instructions!), content: first.instructions }, + }) + } + }) + + test("forked recordings isolate interleaved generations and retain linked lineage and stable counts", async () => { + const { root, files } = recording() + const childA = await root.forkSession("child-a") + const childB = await root.forkSession("child-b") + const grandchild = await childA.forkSession("grandchild") + const recordings = [root, childA, childB, grandchild] + const sessions = recordings.map((trace, index) => ({ + sessionId: trace.getIdentity().sessionId!, + traceId: trace.getIdentity().traceId, + ...(index && { parentSessionId: index === 3 ? "child-a" : "root" }), + ...(index === 1 && { + taskLinks: [ + { sessionId: "root", messageId: "m1", callId: "task-first" }, + { sessionId: "root", messageId: "m2", callId: "task-reused" }, + ], + }), + })) + root.setRunLineage({ rootSessionId: "root", sessions }) + recordings.slice(1).forEach((trace, index) => + trace.setRunLineage({ + rootSessionId: "root", + parentSessionId: index === 2 ? "child-a" : "root", + }), + ) + recordings.forEach((trace, index) => { + const part = { id: `start-${index}`, messageID: `m${index}` } + trace.logStepStart(part) + trace.logStepStart(part) + }) + for (const index of [2, 0, 3, 1]) { + const trace = recordings[index] + const messageID = `m${index}` + const text = { id: `text-${index}`, messageID, text: `answer-${index}` } + const reasoning = { id: `reason-${index}`, messageID, text: `exposed-${index}` } + for (let repeat = 0; repeat < 2; repeat++) { + trace.logToolCall(tool(messageID)) + trace.logText(text) + if (index !== 2) trace.logReasoning(reasoning) + trace.logStepFinish(finish(messageID)) + } + } + await Promise.all(recordings.map((trace) => trace.endTrace())) + expect(files.size).toBe(4) + expect(files.get("root")!.metadata.run).toEqual({ rootSessionId: "root", sessions }) + expect(new Set([...files.values()].map((file) => file.traceId)).size).toBe(4) + for (const [index, trace] of recordings.entries()) { + const file = files.get(trace.getIdentity().sessionId!)! + expect(file.summary.totalGenerations).toBe(1) + expect(file.summary.totalToolCalls).toBe(1) + expect(file.summary.totalTokens).toBe(6) + expect(file.summary.totalCost).toBe(0.25) + const generation = file.spans.find((span) => span.kind === "generation")! + expect(generation.output).toBe(`answer-${index}`) + expect(generation.attributes).toEqual({ sessionId: file.sessionId, messageId: `m${index}` }) + expect(file.spans.find((span) => span.kind === "tool")!.parentSpanId).toBe(generation.spanId) + const reasoning = file.spans.filter((span) => span.name === "reasoning") + expect(reasoning.length).toBe(index === 2 ? 0 : 1) + if (reasoning.length) expect(reasoning[0].parentSpanId).toBe(generation.spanId) + } + }) + + test("late parts attach to their own message and unrelated sessions are rejected", async () => { + const { root, files } = recording() + root.logStepStart({ id: "s1", messageID: "first" }) + root.logStepFinish(finish("first")) + root.logStepStart({ id: "s2", messageID: "second" }) + root.logText({ id: "late-text", messageID: "first", text: "late first answer" }) + root.logToolCall(tool("first")) + root.logReasoning({ id: "late-reason", messageID: "first", text: "provider reasoning" }) + root.logToolCall({ ...tool("unrelated"), sessionID: "unrelated" }) + root.logStepStart({ id: "bad", sessionID: "unrelated" }) + root.logText({ id: "second-text", messageID: "second", text: "second answer" }) + root.logStepFinish(finish("second")) + await root.endTrace() + const file = files.get("root")! + const generations = file.spans.filter((span) => span.kind === "generation") + expect(generations.map((span) => span.output)).toEqual(["late first answer", "second answer"]) + expect(file.summary.totalGenerations).toBe(2) + expect(file.summary.totalToolCalls).toBe(1) + expect(file.spans.find((span) => span.kind === "tool")!.parentSpanId).toBe(generations[0].spanId) + expect(file.spans.find((span) => span.name === "reasoning")!.parentSpanId).toBe(generations[0].spanId) + }) + + test("output clipping and unavailable capture have explicit metadata", async () => { + const { root, files } = recording() + root.setCaptureOmissions(["effective system input unavailable", "resolved tool definitions unavailable"]) + root.logStepStart({ id: "s1", messageID: "first" }) + root.logToolCall(tool("first", "x".repeat(10009))) + root.logUserMessage("p".repeat(USER_MESSAGE_INPUT_MAX_CHARS + 3)) + root.logStepFinish(finish("first")) + await root.endTrace() + const file = files.get("root")! + const span = file.spans.find((span) => span.kind === "tool")! + expect(String(span.output).length).toBe(10000) + expect(span.attributes?.outputOmission).toEqual({ + reason: "character_limit", + originalCharacters: 10009, + retainedCharacters: 10000, + omittedCharacters: 9, + }) + expect(file.spans.find((span) => span.kind === "user-message")!.attributes?.inputOmission).toEqual({ + reason: "character_limit", + originalCharacters: USER_MESSAGE_INPUT_MAX_CHARS + 3, + retainedCharacters: USER_MESSAGE_INPUT_MAX_CHARS, + omittedCharacters: 3, + }) + expect(file.metadata.captureOmissions).toEqual([ + "effective system input unavailable", + "resolved tool definitions unavailable", + ]) + }) + + test("serialized span caps report original, retained, and omitted counts", async () => { + const { root, files } = recording() + for (let i = 0; i < MAX_SERIALIZED_SPANS + 5; i++) { + root.logSpan({ name: "operation", startTime: i, endTime: i }) + } + await root.endTrace() + const file = files.get("root")! + expect(file.spans.length).toBe(MAX_SERIALIZED_SPANS) + expect(file.omissions?.spans).toEqual({ + original: MAX_SERIALIZED_SPANS + 6, + retained: MAX_SERIALIZED_SPANS - 1, + omitted: 7, + limit: MAX_SERIALIZED_SPANS, + }) + }) + + test("generation input labels tool-result summaries and counts their clipped content", async () => { + const { root, files } = recording() + root.logStepStart({ id: "s1", messageID: "first" }) + root.logToolCall(tool("first", "x".repeat(650))) + root.logToolCall({ + id: "error-tool", + messageID: "first", + tool: "search", + callID: "error-call", + state: { status: "error", input: {}, error: "e".repeat(215), time: { start: 1, end: 2 } }, + }) + root.logStepFinish(finish("first")) + root.logStepStart({ id: "s2", messageID: "second" }) + root.logStepFinish(finish("second")) + await root.endTrace() + const generations = files.get("root")!.spans.filter((span) => span.kind === "generation") + expect(generations[0].attributes?.inputSource).toBeUndefined() + expect(generations[1].input).toBe(`[read] ${"x".repeat(500)}\n[search] error: ${"e".repeat(200)}`) + expect(generations[1].attributes?.inputSource).toBe("tool-result-summaries") + expect(generations[1].attributes?.inputOmission).toEqual({ + reason: "tool_result_summary_limit", + originalCharacters: 865, + retainedCharacters: 700, + omittedCharacters: 165, + }) + }) + + test("child cancellation remains local to its recording", async () => { + const { root, files } = recording() + const child = await root.forkSession("cancelled") + child.logStepStart({ id: "start", messageID: "child-message" }) + child.logReasoning({ id: "reason", messageID: "child-message", text: "partial provider reasoning" }) + await child.endTrace("MessageAbortedError: cancelled") + await root.endTrace() + expect(files.get("cancelled")!.summary.status).toBe("error") + expect(files.get("cancelled")!.summary.totalGenerations).toBe(1) + expect(files.get("root")!.summary.status).toBe("completed") + expect(files.get("root")!.summary.totalGenerations).toBe(0) + }) +}) diff --git a/packages/opencode/test/altimate/tracing-running-tools.test.ts b/packages/opencode/test/altimate/tracing-running-tools.test.ts new file mode 100644 index 0000000000..7044f95117 --- /dev/null +++ b/packages/opencode/test/altimate/tracing-running-tools.test.ts @@ -0,0 +1,209 @@ +import { describe, expect, test } from "bun:test" +import path from "node:path" +import { FileExporter, Trace, type TraceFile } from "../../src/altimate/observability/tracing" +import { TraceConsumer } from "../../src/altimate/observability/trace-consumer" +import { RunTracing } from "../../src/cli/cmd/run-tracing" +import { tmpdir } from "../fixture/fixture" + +function running(start = Date.now() - 1000) { + return { + id: "tool-part", + sessionID: "session", + messageID: "assistant-message", + type: "tool" as const, + tool: "sql_execute", + callID: "tool-call", + state: { status: "running" as const, input: { sql: "SELECT 1" }, time: { start } }, + } +} + +async function readTrace(directory: string): Promise { + return Bun.file(path.join(directory, "session.json")).json() +} + +describe("running tool traces", () => { + test("persists the tool start and input before the call completes", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + trace.logStepStart({ id: "step", messageID: "assistant-message" }) + const part = running() + trace.logToolCall(part) + trace.logToolCall(part) + await trace.flush() + + const file = await readTrace(tmp.path) + const tools = file.spans.filter((span) => span.kind === "tool") + expect(tools).toHaveLength(1) + expect(tools[0]).toMatchObject({ + startTime: part.state.time.start, + status: "running", + input: part.state.input, + parentSpanId: file.spans.find((span) => span.kind === "generation")!.spanId, + }) + expect(tools[0]!.endTime).toBeUndefined() + expect(file.summary.totalToolCalls).toBe(1) + await trace.endTrace() + }) + + test.each(["completed", "error"] as const)("updates the same span on %s without double counting", async (status) => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + trace.logStepStart({ id: "step", messageID: "assistant-message" }) + const part = running() + trace.logToolCall(part) + trace.setSpanAttributes({ warehouse: "warehouse" }, "tool") + await trace.flush() + const started = (await readTrace(tmp.path)).spans.find((span) => span.kind === "tool")! + const end = part.state.time.start + 500 + const finished = { + ...part, + state: status === "completed" + ? { ...part.state, status, output: "one row", time: { ...part.state.time, end } } + : { ...part.state, status, error: "query failed", time: { ...part.state.time, end } }, + } + trace.logToolCall(finished) + trace.logToolCall(finished) + trace.logToolCall(part) + await trace.endTrace() + + const file = await readTrace(tmp.path) + const tools = file.spans.filter((span) => span.kind === "tool") + expect(tools).toHaveLength(1) + expect(tools[0]).toMatchObject({ + spanId: started.spanId, + startTime: part.state.time.start, + endTime: end, + status: status === "completed" ? "ok" : "error", + tool: { callId: part.callID, durationMs: 500 }, + output: status === "completed" ? "one row" : { error: "query failed" }, + attributes: { warehouse: "warehouse" }, + }) + expect(file.summary.totalToolCalls).toBe(1) + }) + + test.each(["endTrace", "finalizeSync", "flushSync"] as const)("%s aborts an unfinished tool with its original start", async (method) => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + const part = running() + trace.logToolCall(part) + const before = Date.now() + await trace[method]() + const after = Date.now() + + const file = await readTrace(tmp.path) + const tools = file.spans.filter((span) => span.kind === "tool") + expect(tools).toHaveLength(1) + expect(tools[0]).toMatchObject({ startTime: part.state.time.start, status: "aborted", input: part.state.input }) + expect(tools[0]!.endTime).toBeGreaterThanOrEqual(before) + expect(tools[0]!.endTime).toBeLessThanOrEqual(after) + expect(tools[0]!.tool!.durationMs).toBe(tools[0]!.endTime! - part.state.time.start) + expect(file.summary.totalToolCalls).toBe(1) + await trace.flush() + }) + + test("an explicitly interrupted tool error is recorded as aborted", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + const part = running() + trace.logToolCall(part) + trace.logToolCall({ + ...part, + state: { + ...part.state, + status: "error", + error: "Tool execution aborted", + metadata: { interrupted: true }, + time: { ...part.state.time, end: part.state.time.start + 400 }, + }, + }) + await trace.endTrace() + const file = await readTrace(tmp.path) + expect(file.spans.filter((span) => span.kind === "tool")).toMatchObject([ + { status: "aborted", interrupted: true, tool: { durationMs: 400 } }, + ]) + }) + + test("running calls with unserializable inputs still leave a span", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + const part = running() + const input: Record = {} + input.self = input + trace.logToolCall({ ...part, state: { ...part.state, input } }) + await trace.flush() + const file = await readTrace(tmp.path) + expect(file.summary.status).toBe("running") + expect(file.spans.filter((span) => span.kind === "tool")).toMatchObject([ + { status: "running", input: { _serialization_error: expect.any(String) } }, + ]) + await trace.endTrace() + }) + + test("rehydration closes a tool left running by an ungraceful exit", async () => { + await using tmp = await tmpdir() + const original = Trace.withExporters([new FileExporter(tmp.path)]) + original.startTrace("session", {}) + const part = running() + original.logToolCall(part) + await original.flush() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + expect(await trace.rehydrateFromFile("session")).toBe(true) + await trace.endTrace() + const file = await readTrace(tmp.path) + expect(file.spans.filter((span) => span.kind === "tool")).toMatchObject([ + { status: "aborted", startTime: part.state.time.start, input: part.state.input }, + ]) + }) + + test("a completion after rehydration finishes the existing span without a duplicate", async () => { + await using tmp = await tmpdir() + const original = Trace.withExporters([new FileExporter(tmp.path)]) + original.startTrace("session", {}) + const part = running() + original.logToolCall(part) + await original.flush() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + expect(await trace.rehydrateFromFile("session")).toBe(true) + const end = part.state.time.start + 500 + trace.logToolCall({ ...part, state: { ...part.state, status: "completed", output: "late", time: { ...part.state.time, end } } }) + await trace.endTrace() + const file = await readTrace(tmp.path) + const tools = file.spans.filter((span) => span.kind === "tool") + expect(tools).toHaveLength(1) + expect(tools[0]).toMatchObject({ status: "ok", output: "late", endTime: end }) + expect(tools[0]!.interrupted).toBeUndefined() + expect(file.summary.totalToolCalls).toBe(1) + }) + + test("shared event consumer captures a running call before synchronous shutdown", async () => { + await using tmp = await tmpdir() + const consumer = new TraceConsumer({ exporters: [new FileExporter(tmp.path)] }) + const part = running() + await consumer.handleEvent({ type: "message.part.updated", properties: { part } }) + consumer.flushSync() + const file = await readTrace(tmp.path) + expect(file.spans.filter((span) => span.kind === "tool")).toMatchObject([ + { status: "aborted", startTime: part.state.time.start, input: part.state.input }, + ]) + }) + + test("run event consumer captures a running call before interruption", async () => { + await using tmp = await tmpdir() + const trace = Trace.withExporters([new FileExporter(tmp.path)]) + trace.startTrace("session", {}) + const router = new RunTracing("session", trace, { get: async () => undefined, children: async () => [] }) + const part = running() + await router.observe({ type: "message.part.updated", properties: { part } }) + router.flushSync("Interrupted") + const file = await readTrace(tmp.path) + expect(file.spans.filter((span) => span.kind === "tool")).toMatchObject([ + { status: "aborted", startTime: part.state.time.start, input: part.state.input }, + ]) + await trace.flush() + }) +}) diff --git a/packages/opencode/test/altimate/tryExecuteViaDbt.test.ts b/packages/opencode/test/altimate/tryExecuteViaDbt.test.ts index 29dc785c2c..400527ba54 100644 --- a/packages/opencode/test/altimate/tryExecuteViaDbt.test.ts +++ b/packages/opencode/test/altimate/tryExecuteViaDbt.test.ts @@ -4,7 +4,16 @@ * The dbt adapter returns QueryExecutionResult with { columnNames, data, ... } * but tryExecuteViaDbt must convert this to SqlExecuteResult { columns, rows, ... }. */ -import { describe, test, expect, beforeEach, mock } from "bun:test" +import { describe, test, expect, beforeEach, afterAll, mock } from "bun:test" +import * as realDuckdb from "@altimateai/drivers/duckdb" + +// Bun's mock.module leaks across test files in the shared process. Snapshot the +// genuine exports before mocking and restore them afterwards so DuckDB-backed +// tests that run later (scratch, sql_materialize, sql_check) see the real driver. +const genuineDuckdb = { ...realDuckdb } +afterAll(() => { + mock.module("@altimateai/drivers/duckdb", () => genuineDuckdb) +}) // Mock DuckDB driver mock.module("@altimateai/drivers/duckdb", () => ({ diff --git a/packages/opencode/test/altimate/warehouse-telemetry.test.ts b/packages/opencode/test/altimate/warehouse-telemetry.test.ts index 6c566c5f6b..6dc1065352 100644 --- a/packages/opencode/test/altimate/warehouse-telemetry.test.ts +++ b/packages/opencode/test/altimate/warehouse-telemetry.test.ts @@ -477,10 +477,12 @@ describe("warehouse telemetry: safety", () => { pg: { type: "postgres", host: "localhost" }, }) - // list() should still work without throwing + // list() should still work without throwing. The implicit `scratch` + // warehouse is appended after the configured ones; count only those. const result = Registry.list() - expect(result.warehouses).toHaveLength(1) - expect(result.warehouses[0].type).toBe("postgres") + const configured = result.warehouses.filter((w: any) => w.name !== "scratch") + expect(configured).toHaveLength(1) + expect(configured[0].type).toBe("postgres") // Restore spy to capture events again trackSpy.mockImplementation((event: any) => { trackedEvents.push(event) }) diff --git a/packages/opencode/test/altimate/warehouse-test-duckdb-e2e.test.ts b/packages/opencode/test/altimate/warehouse-test-duckdb-e2e.test.ts index e232a7d160..855d70e2d5 100644 --- a/packages/opencode/test/altimate/warehouse-test-duckdb-e2e.test.ts +++ b/packages/opencode/test/altimate/warehouse-test-duckdb-e2e.test.ts @@ -192,6 +192,9 @@ describe("warehouse.test against a real DuckDB store", () => { const ok = await tool.execute({ name: "local" }, ctx) expect(ok.title).toContain("OK") + // Release the live engine before testing a fresh open's deadline. reset() + // alone drops the registry reference without closing the connector. + await Registry.closeAll() Registry.reset() const prev = process.env["ALTIMATE_DUCKDB_OPEN_TIMEOUT_MS"] process.env["ALTIMATE_DUCKDB_OPEN_TIMEOUT_MS"] = "1" diff --git a/packages/opencode/test/bus/private-trace.test.ts b/packages/opencode/test/bus/private-trace.test.ts new file mode 100644 index 0000000000..dce14ea4c6 --- /dev/null +++ b/packages/opencode/test/bus/private-trace.test.ts @@ -0,0 +1,169 @@ +// altimate_change start — private request snapshots cannot reach wildcard/global SSE subscribers +import { afterEach, expect, test } from "bun:test" +import fs from "node:fs/promises" +import path from "node:path" +import { Bus } from "../../src/bus" +import { BusEvent } from "../../src/bus/bus-event" +import { GlobalBus } from "../../src/bus/global" +import { Instance } from "../../src/project/instance" +import { MessageV2 } from "../../src/session/message-v2" +import { TraceConsumer } from "../../src/altimate/observability/trace-consumer" +import { FileExporter, LLMRequestEvent, type TraceFile } from "../../src/altimate/observability/tracing" +import { tmpdir } from "../fixture/fixture" + +afterEach(() => Instance.disposeAll()) + +test("request snapshots reach only the typed trace subscription", async () => { + await using directory = await tmpdir({ git: true }) + await Instance.provide({ + directory: directory.path, + fn: async () => { + const snapshot = { + requestID: "request_private", + sessionID: "ses_private", + messageID: "msg_private", + userMessageID: "msg_user", + agent: "analyst", + providerID: "test", + modelID: "test", + startTime: 1, + system: "hidden system instructions", + tools: [], + } + await Bus.publish(LLMRequestEvent, snapshot) + const publicEvents: unknown[] = [] + const privateEvents: unknown[] = [] + const globalEvents: unknown[] = [] + const global = (event: unknown) => globalEvents.push(event) + GlobalBus.on("event", global) + const unsubscribeAll = Bus.subscribeAll((event) => publicEvents.push(event)) + // Delivery runs on a forked fiber: wait for the subscription itself to signal, not for the clock. + const delivered = Promise.withResolvers() + const unsubscribeTrace = Bus.subscribe(LLMRequestEvent, (event) => { + privateEvents.push(event) + delivered.resolve() + }) + try { + await Bus.publish(LLMRequestEvent, snapshot) + await Promise.race([ + delivered.promise, + new Promise((_, reject) => setTimeout(() => reject(new Error("private event was not delivered within 5000ms")), 5000)), + ]) + // Public and global listeners would have been notified by the same publish; give them one tick. + await new Promise((resolve) => setTimeout(resolve, 0)) + expect(privateEvents).toHaveLength(1) + expect(publicEvents).toEqual([]) + expect(globalEvents).toEqual([]) + expect(BusEvent.payloads().safeParse({ type: LLMRequestEvent.type, properties: snapshot }).success).toBe(false) + } finally { + unsubscribeAll() + unsubscribeTrace() + GlobalBus.off("event", global) + } + }, + }) +}) + +test("public tool events keep live trace snapshots current while request snapshots stay private", async () => { + await using directory = await tmpdir({ git: true }) + const sessionID = "ses_live_private" + const tracesDir = path.join(directory.path, "traces") + const consumer = new TraceConsumer({ exporters: [new FileExporter(tracesDir)] }) + + // Observe the same file that /api/trace reads, without finalizing the trace + // or assuming that the asynchronous snapshot finishes within a fixed delay. + async function waitForSpans(count: number) { + const deadline = performance.now() + 4_000 + while (performance.now() < deadline) { + const trace = await fs + .readFile(path.join(tracesDir, `${sessionID}.json`), "utf8") + .then((text) => JSON.parse(text) as TraceFile) + .catch(() => undefined) + if (trace?.spans.filter((span) => span.kind === "tool").length === count) return trace + await Bun.sleep(10) + } + throw new Error(`Live trace snapshot did not reach ${count} tool spans`) + } + + await Instance.provide({ + directory: directory.path, + fn: async () => { + const publicEvents: unknown[] = [] + const privateEvents: unknown[] = [] + const globalEvents: unknown[] = [] + const global = (event: unknown) => globalEvents.push(event) + GlobalBus.on("event", global) + const unsubscribeAll = Bus.subscribeAll(async (event) => { + publicEvents.push(event) + await consumer.handleEvent(event) + }) + let requestDelivered!: () => void + const privateDelivery = new Promise((resolve) => { + requestDelivered = resolve + }) + const unsubscribeTrace = Bus.subscribe(LLMRequestEvent, (event) => { + privateEvents.push(event) + requestDelivered() + }) + const publishTool = (index: number, tool: string) => + Bus.publish( + MessageV2.Event.PartUpdated, + MessageV2.Event.PartUpdated.properties.parse({ + sessionID, + time: index, + part: { + id: `prt_live_${index}`, + sessionID, + messageID: "msg_live", + type: "tool", + callID: `call_live_${index}`, + tool, + state: { + status: "completed", + input: {}, + output: "ok", + title: tool, + metadata: {}, + time: { start: index, end: index + 1 }, + }, + }, + }), + ) + try { + await publishTool(1, "bash") + const first = await waitForSpans(1) + expect(first.spans.find((span) => span.kind === "session")?.endTime).toBeUndefined() + + await Bus.publish(LLMRequestEvent, { + requestID: "request_live_private", + sessionID, + messageID: "msg_live", + userMessageID: "msg_user", + agent: "analyst", + providerID: "test", + modelID: "test", + startTime: 1, + system: "hidden live system instructions", + tools: [], + }) + await privateDelivery + await publishTool(2, "read") + const updated = await waitForSpans(2) + expect(updated.spans.find((span) => span.kind === "session")?.endTime).toBeUndefined() + expect(updated.spans.filter((span) => span.kind === "tool").map((span) => span.name)).toEqual(["bash", "read"]) + expect(privateEvents).toHaveLength(1) + expect(JSON.stringify(privateEvents)).toContain("hidden live system instructions") + for (const events of [publicEvents, globalEvents]) { + expect(JSON.stringify(events)).not.toContain("llm.request") + expect(JSON.stringify(events)).not.toContain("hidden live system instructions") + } + } finally { + unsubscribeAll() + unsubscribeTrace() + GlobalBus.off("event", global) + await consumer.flush() + } + }, + }) +}) +// altimate_change end diff --git a/packages/opencode/test/cli/cmd/run-output.test.ts b/packages/opencode/test/cli/cmd/run-output.test.ts new file mode 100644 index 0000000000..cb19651d28 --- /dev/null +++ b/packages/opencode/test/cli/cmd/run-output.test.ts @@ -0,0 +1,112 @@ +import { describe, expect, test } from "bun:test" +import { NO_TEXT_OUTPUT, OutputCollector } from "../../../src/cli/cmd/run-output" + +// `run --output` must hold the reply, not the transcript: in one evaluation run 9 of 31 +// answers began with commentary from an earlier step ("Use sql_materialize from scratch +// instead.", "Mixed time formats. Let me check all formats."). +describe("run --output collector", () => { + test("keeps only the text of the last model step", () => { + const out = new OutputCollector() + out.stepStart() + out.text("Mixed time formats. Let me check all formats.") + out.stepStart() + out.text("Use sql_materialize from scratch instead.") + out.stepStart() + out.text("Population: businesses with reviews.") + out.text("**Answer:** 42") + expect(out.content()).toBe("Population: businesses with reviews.\n\n**Answer:** 42") + }) + + test("a compaction step does not discard the reply written before it", () => { + const out = new OutputCollector() + out.stepStart() + out.text("**Answer:** 42") + out.stepStart(true) + out.text("Summary of the conversation so far.", { compaction: true }) + expect(out.content()).toBe("**Answer:** 42") + }) + + test("synthetic text never becomes the reply", () => { + const out = new OutputCollector() + out.stepStart() + out.text("injected", { synthetic: true }) + expect(out.content()).toBe("injected") + out.stepStart() + out.text("**Answer:** 7") + expect(out.content()).toBe("**Answer:** 7") + }) + + // The completion check / post-compaction nudge asks for a bare DONE when the deliverable is + // complete; that acknowledgement must not replace the answer it confirms. + test("a bare DONE acknowledgement keeps the answer it confirms", () => { + const out = new OutputCollector() + out.stepStart() + out.text("**Answer:** 42") + out.stepStart(true) + out.text("Summary so far.", { compaction: true }) + out.stepStart() + out.text("DONE") + expect(out.content()).toBe("**Answer:** 42") + }) + + test("an answer, a tool step, then DONE still yields the answer", () => { + const out = new OutputCollector() + out.stepStart() + out.text("**Answer:** 42") + out.stepStart() + out.stepStart() + out.text("done.") + expect(out.content()).toBe("**Answer:** 42") + }) + + test("substantive text after a challenge replaces the earlier reply", () => { + const out = new OutputCollector() + out.stepStart() + out.text("**Answer:** 41") + out.stepStart() + out.text("Corrected after re-checking.\n\n**Answer:** 42\nDONE") + expect(out.content()).toBe("Corrected after re-checking.\n\n**Answer:** 42\nDONE") + }) + + test("a harness note alone explains a run that ended without a reply", () => { + const out = new OutputCollector() + out.stepStart() + out.text("Let me look at the schema first.") + out.stepStart() + out.note("No answer was produced: the turn ended after `sql_execute` failed.") + expect(out.content()).toBe("No answer was produced: the turn ended after `sql_execute` failed.") + }) + + test("a failed budget finalization preserves the last assistant text as an unfinished response", () => { + const out = new OutputCollector() + out.stepStart() + out.text("I will inspect the available records.") + out.stepStart() + out.text("The first group contains 12 records.") + out.text("The remaining groups have not been verified.") + out.stepStart(true) + out.text("Internal conversation summary.", { compaction: true }) + out.stepStart() + out.note("No final answer was produced: the work budget was exhausted.", { preserveLastText: true }) + expect(out.content()).toBe( + "No final answer was produced: the work budget was exhausted.\n\n" + + "Partial assistant response (not finalized):\n\n" + + "The first group contains 12 records.\n\nThe remaining groups have not been verified.", + ) + }) + + test("falls back to everything said when there is neither a reply nor a note", () => { + const out = new OutputCollector() + out.stepStart() + out.text("Let me look at the schema first.") + out.stepStart() + expect(out.content()).toBe("Let me look at the schema first.") + }) + + test("writes the placeholder when nothing was said", () => { + const out = new OutputCollector() + out.stepStart() + out.text(" ") + expect(out.content()).toBe(NO_TEXT_OUTPUT) + }) +}) diff --git a/packages/opencode/test/cli/help/__snapshots__/help-snapshots.test.ts.snap b/packages/opencode/test/cli/help/__snapshots__/help-snapshots.test.ts.snap index dff40154b4..6c6eecf454 100644 --- a/packages/opencode/test/cli/help/__snapshots__/help-snapshots.test.ts.snap +++ b/packages/opencode/test/cli/help/__snapshots__/help-snapshots.test.ts.snap @@ -81,6 +81,7 @@ Options: [string]" `; +// altimate_change start — document the committed-answer echo allowance in run help exports[`opencode CLI help-text snapshots every documented command emits stable help text: opencode run --help 1`] = ` "altimate-code run [message..] @@ -125,7 +126,8 @@ Options: --variant model variant (provider-specific reasoning effort, e.g., high, max, minimal) [string] --thinking show thinking blocks [boolean] [default: false] - -o, --output write final assistant response to file (.md or .txt) [string] + -o, --output write completed assistant text, including preambles, when the + run ends (.md or .txt); not incremental [string] --audience output calibration: executive (no SQL/jargon, business framing) or technical (default) [string] [choices: "executive", "technical"] @@ -133,11 +135,15 @@ Options: statement (1-indexed) [number] --trace enable session tracing (default: true, disable with --no-trace) [boolean] [default: true] - --max-turns maximum number of assistant turns before aborting the session + --max-turns maximum assistant work turns; allows one committed-answer + echo, or one best-effort reply after a budget abort [number] + --time-budget maximum time in seconds including startup (env: + ALTIMATE_RUN_TIME_BUDGET_S); bounded finalization may follow [number] --dangerously-skip-permissions auto-approve permissions that are not explicitly denied (dangerous!) [boolean] [default: false]" `; +// altimate_change end exports[`opencode CLI help-text snapshots every documented command emits stable help text: opencode debug --help 1`] = ` "altimate-code debug diff --git a/packages/opencode/test/cli/run-accounting.test.ts b/packages/opencode/test/cli/run-accounting.test.ts index 18ebb8780b..0338839614 100644 --- a/packages/opencode/test/cli/run-accounting.test.ts +++ b/packages/opencode/test/cli/run-accounting.test.ts @@ -494,8 +494,46 @@ describe("run command request/stream lifecycle contracts", () => { expect(source).toMatch( /const loopPromise = loop\(events\.stream,[\s\S]*?\.catch\(\(e\) => \{[\s\S]*?eventAbort\.abort\(\)/, ) - expect(source).toMatch(/sdk\.session\.command\([\s\S]*?\{ signal: eventAbort\.signal \},\s*\)/) - expect(source).toMatch(/sdk\.session\.prompt\([\s\S]*?\{ signal: eventAbort\.signal \},\s*\)/) + // altimate_change start — exercise both production request paths with their actual signal wiring + const start = source.indexOf(" const send = () => {") + const end = source.indexOf(" /** Did the server persist", start) + expect(start).toBeGreaterThan(0) + expect(end).toBeGreaterThan(start) + const send = new Function( + "sdk", + "args", + "eventAbort", + ` + const sessionID = "ses_stream", sendMessageID = "msg_stream", agent = "analyst", message = "inspect" + const files = [], audienceSystem = undefined + const timeBudgetStop = new AbortController() + const beginRequest = () => {} + const startWorkClock = () => {} + const budgetHeaders = () => ({ "x-test-budget": "active" }) + const Telemetry = { startupReady() {} } + ${source.slice(start, end)} + return send() + `, + ) + for (const command of [undefined, "inspect"]) { + const eventAbort = new AbortController() + let requestSignal: AbortSignal | undefined + const request = (_: unknown, options: { signal: AbortSignal; headers: Record }) => { + requestSignal = options.signal + expect(options.headers).toEqual({ "x-test-budget": "active" }) + return new Promise((_, reject) => { + options.signal.addEventListener("abort", () => reject(options.signal.reason), { once: true }) + }) + } + const pending = send({ session: { command: request, prompt: request } }, { command }, eventAbort) + expect(requestSignal?.aborted).toBe(false) + const reason = new Error("SSE lifetime ended") + const rejected = pending.catch((error: unknown) => error) + eventAbort.abort(reason) + expect(requestSignal?.aborted).toBe(true) + expect(await rejected).toBe(reason) + } + // altimate_change end }) test("abort suppression is initial-stream-only and a declined challenge enqueues continuation", async () => { diff --git a/packages/opencode/test/cli/run/budget-finalization.test.ts b/packages/opencode/test/cli/run/budget-finalization.test.ts new file mode 100644 index 0000000000..90ddbec384 --- /dev/null +++ b/packages/opencode/test/cli/run/budget-finalization.test.ts @@ -0,0 +1,1103 @@ +import { describe, expect, test } from "bun:test" +import { Effect, Fiber } from "effect" +import { createOpencodeClient } from "@opencode-ai/sdk/v2" +import fs from "node:fs/promises" +import path from "node:path" +import { RunAccounting } from "@/cli/cmd/run-accounting" +import { SessionTermination } from "@/session/termination" +import { cliIt } from "../../lib/cli-process" +import { raw, reply } from "../../lib/llm-server" +import { testProviderConfig } from "../../lib/test-provider" + +function exhausted() { + const accounting = RunAccounting.create() + accounting.onStepStart("work") + accounting.onStepFinish("work", "tool-calls") + accounting.onStepStart("interrupted") + accounting.onBudgetExhausted() + return accounting +} + +describe("budget finalization accounting", () => { + // altimate_change start — a failed answer_commit retry revokes the prior echo turn allowance + test("a successful answer_commit grants the committed echo exemption", () => { + const accounting = RunAccounting.create() + expect(accounting.committedAnswer).toBe(false) + accounting.onAnswerCommit("completed") + expect(accounting.committedAnswer).toBe(true) + accounting.resetCommittedAnswer() + expect(accounting.committedAnswer).toBe(false) + }) + + test("a failed answer_commit retry clears the committed echo exemption", () => { + const accounting = RunAccounting.create() + accounting.onAnswerCommit("completed") + expect(accounting.committedAnswer).toBe(true) + accounting.onAnswerCommit("error") + expect(accounting.committedAnswer).toBe(false) + }) + // altimate_change end + // altimate_change start — distinguish recovered wall-clock limits from turn limits and real failures + test("a successful time-budget finalization clears fatal status but keeps budget attribution", () => { + const accounting = RunAccounting.create() + accounting.onStepStart("interrupted") + accounting.onBudgetExhausted("time") + accounting.onSessionError("MessageAbortedError", "intentional time-budget abort") + accounting.onPromptResult({ error: { name: "MessageAbortedError" } }) + expect(accounting.fatal).toBe(true) + expect(accounting.takeBudgetFinalizationAllowance()).toBe(2) + accounting.onStepStart("finalization") + accounting.onText("finalization", "The evidence supports a limited answer.") + accounting.onStepFinish("finalization", "stop") + accounting.onPromptResult({ finish: "stop" }) + + expect(accounting.completeBudgetFinalization(true)).toBe(true) + expect(accounting.fatal).toBe(false) + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + expect(accounting.termination()).toEqual({ + why_model_stopped: "stop", + why_harness_stopped: "budget-exhausted", + done_reason: "none", + }) + }) + + test("a silent time-budget finalization keeps the run fatal", () => { + const accounting = RunAccounting.create() + accounting.onBudgetExhausted("time") + expect(accounting.takeBudgetFinalizationAllowance()).toBe(1) + accounting.onPromptResult({ finish: "stop" }) + expect(accounting.completeBudgetFinalization(false)).toBe(false) + expect(accounting.fatal).toBe(true) + }) + + test("an answer cannot recover a time budget until the finalization allowance was taken", () => { + const accounting = RunAccounting.create() + accounting.onBudgetExhausted("time") + expect(accounting.completeBudgetFinalization(true)).toBe(false) + expect(accounting.fatal).toBe(true) + }) + + test("successful turn-budget finalization preserves the existing nonzero exit contract", () => { + const accounting = exhausted() + expect(accounting.takeBudgetFinalizationAllowance()).toBe(3) + expect(accounting.completeBudgetFinalization(true)).toBe(false) + expect(accounting.fatal).toBe(true) + }) + + test.each(["APIError", "MessageAbortedError", "ContextOverflowError"])( + "%s during time-budget finalization cannot be hidden by a partial answer", + (name) => { + const accounting = RunAccounting.create() + accounting.onBudgetExhausted("time") + expect(accounting.takeBudgetFinalizationAllowance()).toBe(1) + accounting.onSessionError(name, "finalization failed") + expect(accounting.completeBudgetFinalization(true)).toBe(false) + expect(accounting.fatal).toBe(true) + }, + ) + + test("an abnormal finalization finish cannot be hidden by a partial answer", () => { + const accounting = RunAccounting.create() + accounting.onBudgetExhausted("time") + expect(accounting.takeBudgetFinalizationAllowance()).toBe(1) + accounting.onPromptResult({ finish: "other" }) + expect(accounting.completeBudgetFinalization(true)).toBe(false) + expect(accounting.fatal).toBe(true) + }) + // altimate_change end + + test("grants one local generation without resetting the exhausted budget", () => { + const accounting = exhausted() + accounting.onSessionError("MessageAbortedError", "aborted by the turn limit") + accounting.onPromptResult({ error: { name: "MessageAbortedError" } }) + + expect(accounting.takeBudgetFinalizationAllowance()).toBe(3) + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + expect(accounting.turnCount).toBe(2) + expect(accounting.fatal).toBe(true) + + accounting.onStepStart("finalization") + accounting.onText("finalization", "The supported result is available; verification is incomplete.") + accounting.onStepFinish("finalization", "stop") + expect(accounting.turnCount).toBe(3) + expect(accounting.termination()).toEqual({ + why_model_stopped: "stop", + why_harness_stopped: "budget-exhausted", + done_reason: "none", + }) + }) + + test("does not grant an allowance before a budget abort", () => { + const accounting = RunAccounting.create() + accounting.onStepStart("work") + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + expect(accounting.fatal).toBe(false) + }) + + for (const finish of ["error", "other"]) { + test(`accepts one interrupted prompt result with finish=${finish}`, () => { + const accounting = exhausted() + accounting.onSessionError("MessageAbortedError", "aborted") + accounting.onPromptResult({ finish }) + expect(accounting.takeBudgetFinalizationAllowance()).toBe(3) + }) + } + + for (const name of ["APIError", "TransportError", "ContextOverflowError"]) { + for (const order of ["before", "after"] as const) { + test(`${name} ${order} budget exhaustion prevents a finalization despite reason precedence`, () => { + const accounting = RunAccounting.create() + accounting.onStepStart("work") + if (order === "before") accounting.onSessionError(name, "genuine failure") + accounting.onBudgetExhausted() + if (order === "after") accounting.onSessionError(name, "genuine failure") + accounting.onSessionError("MessageAbortedError", "intentional abort") + accounting.onPromptResult({ error: { name: "MessageAbortedError" } }) + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + expect(accounting.termination().why_harness_stopped).toBe("budget-exhausted") + }) + } + } + + test("a genuine abnormal result before the budget abort prevents finalization", () => { + const accounting = RunAccounting.create() + accounting.onPromptResult({ finish: "other" }) + accounting.onBudgetExhausted() + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + }) + + test("a failed prompt transport prevents finalization", () => { + const accounting = exhausted() + accounting.onPromptSendError(new Error("connection reset")) + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + }) + + test("a second abort on either channel is not forgiven", () => { + const event = exhausted() + event.onSessionError("MessageAbortedError", "intentional abort") + event.onSessionError("MessageAbortedError", "another abort") + expect(event.takeBudgetFinalizationAllowance()).toBeUndefined() + + const prompt = exhausted() + prompt.onPromptResult({ error: { name: "MessageAbortedError" } }) + prompt.onPromptResult({ error: { name: "MessageAbortedError" } }) + expect(prompt.takeBudgetFinalizationAllowance()).toBeUndefined() + }) + + test("an earlier idle-done challenge does not consume the budget abort allowance", () => { + const accounting = RunAccounting.create() + accounting.onIdleDoneChallengeIssued() + accounting.onSessionError("MessageAbortedError", "challenge interruption") + accounting.onPromptResult({ finish: "other" }) + accounting.onIdleDoneChallengeReplySent() + accounting.onIdleDoneChallengeCompleted() + accounting.onStepStart("continuation") + accounting.onBudgetExhausted() + accounting.onSessionError("MessageAbortedError", "budget interruption") + accounting.onPromptResult({ error: { name: "MessageAbortedError" } }) + expect(accounting.takeBudgetFinalizationAllowance()).toBe(2) + expect(accounting.termination().done_reason).toBe("none") + }) + + test("an idle-done reply failure cannot be hidden by later budget exhaustion", () => { + const accounting = RunAccounting.create() + accounting.onIdleDoneChallengeIssued() + accounting.onSessionError("MessageAbortedError", "challenge interruption") + accounting.onIdleDoneChallengeReplySent() + accounting.onPromptResult({ finish: "other" }) + accounting.onIdleDoneChallengeCompleted() + accounting.onBudgetExhausted() + expect(accounting.takeBudgetFinalizationAllowance()).toBeUndefined() + }) +}) + +function isFinalization(body: Record) { + const messages = body.messages as { role?: string; content?: unknown }[] | undefined + const lastUser = messages?.findLast((message) => message.role === "user") + return JSON.stringify(lastUser?.content ?? "").includes(SessionTermination.REPLY_AFTER_BUDGET) +} + +describe("opencode run: budget finalization subprocess", () => { + // altimate_change start — attached turn limits use persisted request events without session fetches + for (const scenario of ["ordinary", "shared-request", "failed-commit-retry"] as const) { + const sharedRequest = scenario === "shared-request" + const failedRetry = scenario === "failed-commit-retry" + cliIt.concurrent( + sharedRequest + ? "a new persisted request on --attach --session clears the committed echo exemption" + : failedRetry + ? "a successful answer_commit followed by a failed retry revokes the committed echo exemption" + : "an ordinary over-budget step requests abort without awaiting any session fetch", + ({ opencode }) => + Effect.gen(function* () { + const sessionID = "ses_budget_attached" + let stream: ReadableStreamDefaultController + let aborts = 0 + let sessionFetches = 0 + let prompts = 0 + let subscriptionReady = Promise.withResolvers() + let finishPrompt: (value: Response) => void = () => {} + const encoder = new TextEncoder() + const publish = (type: string, properties: object) => + stream.enqueue(encoder.encode(`data: ${JSON.stringify({ type, properties })}\n\n`)) + const assistant = (messageID: string, parentID: string) => ({ + id: messageID, + sessionID, + role: "assistant", + parentID, + agent: "build", + modelID: "test-model", + providerID: "test", + time: { created: Date.now() }, + }) + const start = (messageID: string, parentID: string) => { + publish("message.updated", { info: assistant(messageID, parentID) }) + publish("message.part.updated", { + part: { id: `${messageID}_start`, messageID, sessionID, type: "step-start" }, + }) + } + const server = yield* Effect.acquireRelease( + Effect.sync(() => + Bun.serve({ + hostname: "127.0.0.1", + port: 0, + idleTimeout: 0, + async fetch(request) { + const route = new URL(request.url).pathname + if (route === "/provider") + return Response.json({ all: [{ id: "test", models: { "test-model": {} } }], connected: ["test"] }) + if (route === "/config") return Response.json({ share: "disabled", tracing: { enabled: false } }) + if (route === "/event") + return new Response( + new ReadableStream({ + start(controller) { + stream = controller + subscriptionReady.resolve() + publish("server.connected", {}) + }, + }), + { + headers: { "content-type": "text/event-stream" }, + }, + ) + if (route === `/session/${sessionID}` && request.method === "GET") { + sessionFetches++ + // This never settles: a read on the step-start path would prevent the abort. + return new Promise(() => {}) + } + if (route === `/session/${sessionID}/abort`) { + aborts++ + const error = { name: "MessageAbortedError", data: { message: "aborted by turn limit" } } + publish("session.error", { sessionID, error }) + publish("session.status", { sessionID, status: { type: "idle" } }) + finishPrompt(Response.json({ info: { error } })) + return Response.json(true) + } + if (route === `/session/${sessionID}/message` && request.method === "POST") { + const body = (await request.json()) as { messageID: string } + // The SDK connects SSE lazily, including during finalization. + // Wait for this prompt's subscriber before publishing its events. + const ready = subscriptionReady + await ready.promise + subscriptionReady = Promise.withResolvers() + const parentID = body.messageID + const messageID = `${parentID}zz_assistant` + prompts++ + publish("session.status", { sessionID, status: { type: "busy" } }) + start(messageID, parentID) + if (prompts > 1) { + publish("message.part.updated", { + part: { + id: `${messageID}_text`, + messageID, + sessionID, + type: "text", + text: "Budget finalization completed.", + time: { start: 1, end: 2 }, + }, + }) + publish("message.part.updated", { + part: { + id: `${messageID}_finish`, + messageID, + sessionID, + type: "step-finish", + reason: "stop", + }, + }) + publish("session.status", { sessionID, status: { type: "idle" } }) + return Response.json({ info: { finish: "stop" } }) + } + if (sharedRequest || failedRetry) { + publish("message.part.updated", { + part: { + id: `${messageID}_commit`, + messageID, + sessionID, + type: "tool", + tool: "answer_commit", + state: { + status: "completed", + input: {}, + output: "Original committed answer.", + title: "Committed", + }, + }, + }) + } + if (failedRetry) { + publish("message.part.updated", { + part: { + id: `${messageID}_commit_retry`, + messageID, + sessionID, + type: "tool", + tool: "answer_commit", + state: { status: "error", input: {}, error: "The retry failed validation." }, + }, + }) + } + if (sharedRequest) { + // The original echo remains exempt, including synthetic compaction continuation rows. + const continuationID = `${parentID}_continuation` + publish("message.updated", { info: { id: continuationID, sessionID, role: "user" } }) + publish("message.part.updated", { + part: { + id: `${continuationID}_text`, + messageID: continuationID, + sessionID, + type: "text", + synthetic: true, + text: "Continue the compacted request.", + }, + }) + start(`${parentID}_echo`, continuationID) + const nextRequestID = "msg_000_shared_request" + publish("message.updated", { info: { id: nextRequestID, sessionID, role: "user" } }) + publish("message.part.updated", { + part: { + id: `${nextRequestID}_text`, + messageID: nextRequestID, + sessionID, + type: "text", + text: "A new user request.", + }, + }) + // The request boundary is emitted after the real user and its parts are persisted. + publish("session.request.started", { sessionID, messageID: nextRequestID }) + // A delayed update from the old request must not re-arm its exemption. + // Client-supplied user IDs need not sort after every earlier assistant ID. + publish("message.updated", { info: assistant(messageID, parentID) }) + publish("message.part.updated", { + part: { + id: `${messageID}_commit`, + messageID, + sessionID, + type: "tool", + tool: "answer_commit", + state: { + status: "completed", + input: {}, + output: "Stale committed answer.", + title: "Committed", + }, + }, + }) + // Its parent predates this subscription, so even the first observed + // update of this older assistant cannot belong to the new request. + const unseenAssistantID = `${parentID}zzz_unseen_assistant` + publish("message.updated", { info: assistant(unseenAssistantID, "msg_older_unobserved_parent") }) + publish("message.part.updated", { + part: { + id: `${unseenAssistantID}_commit`, + messageID: unseenAssistantID, + sessionID, + type: "tool", + tool: "answer_commit", + state: { + status: "completed", + input: {}, + output: "An earlier unobserved request committed.", + title: "Committed", + }, + }, + }) + start(`${nextRequestID}_assistant`, nextRequestID) + } else { + start(`${parentID}_second`, parentID) + } + return new Promise((resolve) => { + finishPrompt = resolve + }) + } + return Response.json({ error: `Unexpected route: ${request.method} ${route}` }, { status: 404 }) + }, + }), + ), + (server) => Effect.sync(() => server.stop(true)), + ) + const result = yield* opencode.run("Start the work.", { + format: "json", + extraArgs: ["--attach", server.url.toString(), "--session", sessionID, "--max-turns", "1", "--no-trace"], + timeoutMs: 20_000, + bunRun: true, + }) + opencode.expectExit(result, 1) + expect(aborts).toBe(1) + expect(sessionFetches).toBe(0) + expect(prompts).toBe(2) + const events = opencode.parseJsonEvents(result.stdout) + if (failedRetry) { + expect(events.filter((event) => event.type === "tool_use").map((event) => event.part)).toEqual([ + expect.objectContaining({ tool: "answer_commit", state: expect.objectContaining({ status: "completed" }) }), + expect.objectContaining({ tool: "answer_commit", state: expect.objectContaining({ status: "error" }) }), + ]) + } + const budgetIndex = events.findIndex((event) => event.type === "budget_exhausted") + expect(budgetIndex).toBeGreaterThan(-1) + expect(events.slice(0, budgetIndex).filter((event) => event.type === "step_start")).toHaveLength( + sharedRequest ? 2 : 1, + ) + expect( + events.filter((event) => event.type === "text").map((event) => (event.part as { text: string }).text), + ).toEqual(["Budget finalization completed."]) + }), + 30_000, + ) + } + // altimate_change end + // altimate_change start — a completed answer gets one tool-free echo beyond the work-turn limit + cliIt.concurrent( + "a request queued before the committed echo step-start preserves its output and is refused for the exhausted budget", + ({ llm, opencode }) => + Effect.gen(function* () { + const committed = "Committed revenue before the queued request: 42" + const echoDispatched = Promise.withResolvers() + const releaseEcho = Promise.withResolvers() + let generations = 0 + const provider = yield* Effect.acquireRelease( + Effect.sync(() => Bun.serve({ + hostname: "127.0.0.1", + port: 0, + idleTimeout: 0, + async fetch(request) { + const body = await request.text() + if (!body.includes("Generate a title for this conversation") && ++generations === 2) { + // Hold even the response headers: the provider cannot emit step-start yet. + echoDispatched.resolve() + await releaseEcho.promise + } + return fetch(`${llm.url}/chat/completions`, { + method: "POST", + headers: { "content-type": "application/json" }, + body, + signal: request.signal, + }) + }, + })), + (server) => Effect.sync(() => { + releaseEcho.resolve() + server.stop(true) + }), + ) + yield* llm.tool("answer_commit", { + fields: [{ name: "", value: committed }], + answer_only: true, + basis: "Summed orders.amount over all orders at order grain.", + }) + yield* llm.text("The provider echo must be replaced by the stored commit.") + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().reason("The queued request must be refused.").hang()) + yield* llm.textMatch(({ body }) => isFinalization(body), "No budget remains for the queued request.") + const server = yield* opencode.serve({ + env: { + ALTIMATE_ANSWER_COMMIT: "1", + // An attached run cannot resolve --agent locally, so the server defaults to the analyst. + OPENCODE_CONFIG_CONTENT: JSON.stringify({ ...testProviderConfig(`${provider.url}v1`), default_agent: "analyst" }), + }, + bunRun: true, + }) + const sdk = createOpencodeClient({ baseUrl: server.url, throwOnError: true }) + const session = yield* Effect.promise(() => sdk.session.create({ title: "Queued echo budget" })) + const sessionID = session.data!.id + const run = yield* opencode.run("Commit the revenue answer.", { + format: "json", + extraArgs: ["--attach", server.url, "--session", sessionID, "--max-turns", "1", "--no-trace"], + env: { ALTIMATE_ANSWER_COMMIT: "1" }, + timeoutMs: 60_000, + bunRun: true, + }).pipe(Effect.forkChild) + yield* Effect.promise(() => echoDispatched.promise).pipe(Effect.timeout("30 seconds")) + // noReply persists the foreign request and publishes its boundary; the running loop will pick it up. + const queued = yield* Effect.promise(() => sdk.session.prompt({ + sessionID, + agent: "analyst", + model: { providerID: "test", modelID: "test-model" }, + noReply: true, + parts: [{ type: "text", text: "Now answer a different question." }], + })) + releaseEcho.resolve() + const result = yield* Fiber.join(run) + opencode.expectExit(result, 1) + const events = opencode.parseJsonEvents(result.stdout) + const budgetIndex = events.findIndex((event) => event.type === "budget_exhausted") + expect(budgetIndex).toBeGreaterThan(-1) + const beforeBudget = events.slice(0, budgetIndex) + expect(beforeBudget.filter((event) => event.type === "step_start")).toHaveLength(2) + expect(beforeBudget.filter((event) => event.type === "text").map((event) => (event.part as { text: string }).text)) + .toEqual([committed]) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(1) + const messages = yield* Effect.promise(() => sdk.session.messages({ sessionID })) + const echo = messages.data!.find((message) => message.parts.some((part) => part.type === "text" && part.text === committed))! + expect(echo.info).toMatchObject({ role: "assistant", finish: "stop" }) + expect(echo.info).not.toHaveProperty("parentID", queued.data!.info.id) + expect(messages.data!.map((message) => message.info)).toContainEqual(expect.objectContaining({ + role: "assistant", + parentID: queued.data!.info.id, + error: expect.objectContaining({ name: "MessageAbortedError" }), + })) + }), + 90_000, + ) + // altimate_change start — compaction continuations keep their originating request's echo allowance + // These exercise the same ownership helper as run.ts without requiring a listening socket. + for (const queued of ["none", "before the marker", "during the summary"] as const) { + test(`proactive compaction preserves committed echo ownership with a queued request: ${queued}`, () => { + const ownership = RunAccounting.createRequestOwnership() + const accounting = RunAccounting.create() + const committedRequests = new Set() + ownership.beginRequest("original") + ownership.onAssistantMessage({ id: "commit", parentID: "original" }) + accounting.onStepStart("commit") + committedRequests.add(ownership.ownerOf("commit")!) + const queue = () => { + ownership.onUserMessage("queued") + ownership.beginRequest("queued") + } + if (queued === "before the marker") queue() + ownership.onUserMessage("marker") + ownership.onUserMessage("marker", "original") + ownership.onAssistantMessage({ id: "summary", parentID: "marker" }) + accounting.onAssistantMessage({ id: "summary", summary: true }) + expect(accounting.onStepStart("summary")).toBe(false) + if (queued === "during the summary") queue() + + // SessionCompaction persists this synthetic user before reporting its origin. + ownership.onUserMessage("continuation") + ownership.onUserMessage("continuation", "marker") + // Another compaction must preserve the original ID, not the intervening user ID. + ownership.onUserMessage("second-marker", "continuation") + ownership.onUserMessage("second-continuation", "second-marker") + ownership.onAssistantMessage({ id: "echo", parentID: "second-continuation" }) + expect(ownership.ownerOf("echo")).toBe("original") + expect(accounting.onStepStart("echo")).toBe(true) + expect(accounting.turnCount).toBe(2) + expect(committedRequests.has(ownership.ownerOf("echo")!)).toBe(true) + + if (queued !== "none") { + ownership.onAssistantMessage({ id: "queued-work", parentID: "queued" }) + // Late updates from the old request cannot transfer its exemption to the new one. + ownership.onAssistantMessage({ id: "commit", parentID: "original" }) + expect(ownership.ownerOf("queued-work")).toBe("queued") + expect(committedRequests.has(ownership.ownerOf("queued-work")!)).toBe(false) + } + }) + } + + test("an ordinary request compacted after a committed echo keeps its own over-budget ownership", () => { + const ownership = RunAccounting.createRequestOwnership() + ownership.beginRequest("committed") + ownership.onAssistantMessage({ id: "old-echo", parentID: "committed" }) + ownership.onUserMessage("ordinary") + ownership.beginRequest("ordinary") + ownership.onUserMessage("ordinary", "committed") + // The new request can compact before creating its first assistant. + ownership.onUserMessage("marker", "ordinary") + ownership.onUserMessage("continuation", "marker") + ownership.onAssistantMessage({ id: "ordinary-work", parentID: "continuation" }) + expect(ownership.ownerOf("ordinary-work")).toBe("ordinary") + expect(ownership.ownerOf("ordinary-work")).not.toBe(ownership.ownerOf("old-echo")) + // A continuation with an unobserved parent cannot borrow the active request. + ownership.onUserMessage("unknown", "unobserved") + ownership.onAssistantMessage({ id: "unknown-work", parentID: "unknown" }) + expect(ownership.ownerOf("unknown-work")).toBeUndefined() + }) + // altimate_change end + cliIt.concurrent( + "answer_commit on --max-turns 1 publishes the committed output on its extra echo turn", + ({ llm, opencode }) => + Effect.gen(function* () { + const committed = "Committed revenue: 42" + yield* llm.tool("answer_commit", { + fields: [{ name: "", value: committed }], + answer_only: true, + basis: "Summed orders.amount over all orders at order grain.", + }) + yield* llm.text("A different provider echo must be replaced.") + // The old budget check aborts the echo and requests this fallback instead. + yield* llm.textMatch(({ body }) => isFinalization(body), "The echo was aborted by the turn limit.") + + const result = yield* opencode.run("Commit the revenue answer.", { + agent: "analyst", + format: "json", + extraArgs: ["--max-turns", "1"], + env: { ALTIMATE_ANSWER_COMMIT: "1" }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 0) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(0) + expect(events.filter((event) => event.type === "step_start")).toHaveLength(2) + expect(events.filter((event) => event.type === "tool_use").map((event) => event.part)).toContainEqual( + expect.objectContaining({ tool: "answer_commit", state: expect.objectContaining({ status: "completed" }) }), + ) + expect(events.filter((event) => event.type === "text").map((event) => (event.part as { text: string }).text)).toEqual([ + committed, + ]) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_model_stopped: "stop", why_harness_stopped: "none" }, + ]) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(2) + expect(requests[1]!.tools ?? []).toEqual([]) + expect(requests.filter(isFinalization)).toHaveLength(0) + }), + 90_000, + ) + cliIt.concurrent( + "answer_commit on --max-turns 1 publishes the committed output after an echo context overflow", + ({ llm, opencode }) => + Effect.gen(function* () { + const committed = "Committed revenue after overflow: 42" + yield* llm.tool("answer_commit", { + fields: [{ name: "", value: committed }], + answer_only: true, + basis: "Summed orders.amount over all orders at order grain.", + }) + // A streaming overflow begins the echo step, whose committed text can finish the request. + // The compatible provider exposes the error's message to the processor. + yield* llm.push({ + type: "sse", + head: [], + tail: [{ error: { message: JSON.stringify({ type: "error", error: { code: "context_length_exceeded" } }) } }], + }) + + const result = yield* opencode.run("Commit the revenue answer.", { + agent: "analyst", + format: "json", + extraArgs: ["--max-turns", "1"], + env: { ALTIMATE_ANSWER_COMMIT: "1" }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 0) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(0) + expect(events.filter((event) => event.type === "error")).toHaveLength(0) + expect(events.filter((event) => event.type === "step_start")).toHaveLength(2) + const texts = events + .filter((event) => event.type === "text") + .map((event) => (event.part as { text: string }).text) + expect(texts).toEqual([committed]) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + // The echo overflowed, so the model never produced a stop; the harness delivered the committed text. + { why_model_stopped: "tool-call", why_harness_stopped: "none" }, + ]) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(2) + expect(requests[1]!.tools ?? []).toEqual([]) + expect(requests.filter(isFinalization)).toHaveLength(0) + }), + 90_000, + ) + cliIt.concurrent( + "a soft-time reminder clears the committed answer turn exemption for its new request", + ({ llm, opencode }) => + Effect.gen(function* () { + yield* llm.tool("answer_commit", { + fields: [{ name: "", value: "The original committed answer." }], + answer_only: true, + basis: "Summed orders.amount over all orders at order grain.", + }) + yield* llm.push(reply().reason("Waiting to publish the committed echo.").hang()) + yield* llm.textMatch(({ body }) => isFinalization(body), "The new request exhausted its turn budget.") + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().reason("Working on the new request.").hang()) + + const result = yield* opencode.run("Commit the revenue answer.", { + agent: "analyst", + format: "json", + extraArgs: ["--max-turns", "1", "--time-budget", "10"], + env: { ALTIMATE_ANSWER_COMMIT: "1" }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 1) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "time_budget_warning")).toHaveLength(1) + expect(events.filter((event) => event.type === "budget_exhausted")).toMatchObject([{ limit: 1 }]) + const budgetIndex = events.findIndex((event) => event.type === "budget_exhausted") + expect(events.slice(0, budgetIndex).filter((event) => event.type === "step_start")).toHaveLength(2) + // The commit belongs to the first request and is delivered before the reminder request is answered. + expect(events.filter((event) => event.type === "text").map((event) => (event.part as { text: string }).text)).toEqual([ + "The original committed answer.", + "The new request exhausted its turn budget.", + ]) + expect((yield* llm.inputs).filter(isFinalization)).toHaveLength(1) + }), + 90_000, + ) + // altimate_change end + // altimate_change start — exhausted budgets must disable execution even if the model calls a tool + for (const budget of ["turn", "time"] as const) { + cliIt.concurrent( + `${budget}-budget finalization omits tools and rejects a model-requested write`, + ({ llm, opencode, home }) => + Effect.gen(function* () { + const forbidden = path.join(home, "after-budget.txt") + yield* llm.tool("glob", { pattern: "*.sql", path: home }) + yield* llm.toolMatch(({ body }) => isFinalization(body), "write", { + filePath: forbidden, + content: "work continued after the hard budget", + }) + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().hang()) + if (budget === "time") yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().hang()) + const result = yield* opencode.run("Inspect SQL files and report the available evidence.", { + format: "json", + extraArgs: budget === "turn" ? ["--max-turns", "1"] : ["--time-budget", "5"], + env: { + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...testProviderConfig(llm.url), + permission: { glob: "allow", edit: "allow" }, + }), + }, + timeoutMs: 60_000, + bunRun: true, + }) + expect(yield* Effect.promise(() => Bun.file(forbidden).exists())).toBe(false) + const events = opencode.parseJsonEvents(result.stdout) + const exhausted = events.filter((event) => event.type === "budget_exhausted") + expect(exhausted).toHaveLength(1) + expect(exhausted[0]).toMatchObject(budget === "turn" ? { limit: 1 } : { limit_seconds: 5 }) + expect(events.filter((event) => event.type === "tool_use").map((event) => event.part)).toContainEqual( + expect.objectContaining({ tool: "glob", state: expect.objectContaining({ status: "completed" }) }), + ) + const finalizations = (yield* llm.inputs).filter(isFinalization) + expect(finalizations.length).toBeGreaterThanOrEqual(1) + for (const request of finalizations) expect(request.tools ?? []).toEqual([]) + }), + 90_000, + ) + } + // altimate_change end + + cliIt.concurrent( + "a silent stop exactly at --max-turns 1 gets one finalization and honors --no-trace", + ({ llm, opencode, home }) => + Effect.gen(function* () { + const traceDir = path.join(home, "disabled-traces") + yield* llm.text("") + yield* llm.textMatch(({ body }) => isFinalization(body), "The evidence is insufficient to answer yet.") + const result = yield* opencode.run("Give the supported answer.", { + format: "json", + extraArgs: ["--max-turns", "1", "--no-trace"], + env: { + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...testProviderConfig(llm.url), + tracing: { enabled: true, dir: traceDir, maxFiles: 0 }, + }), + }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 1) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_model_stopped: "stop", why_harness_stopped: "budget-exhausted", done_reason: "none" }, + ]) + const answers = events + .filter((event) => event.type === "text") + .map((event) => (event.part as { text: string }).text) + .filter((text) => text.trim()) + expect(answers).toEqual(["The evidence is insufficient to answer yet."]) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests.filter((body) => !isFinalization(body))).toHaveLength(1) + expect(requests.filter(isFinalization)).toHaveLength(1) + expect(events.filter((event) => event.type === "trace_saved")).toHaveLength(0) + yield* Effect.promise(async () => { + await expect(fs.stat(traceDir)).rejects.toMatchObject({ code: "ENOENT" }) + }) + }), + 90_000, + ) + + cliIt.concurrent( + "--max-turns 1 finalizes once from useful tool output and preserves JSON termination and exit 1", + ({ llm, opencode, home }) => + Effect.gen(function* () { + const models = path.join(home, "models") + yield* Effect.promise(() => fs.mkdir(models)) + yield* Effect.promise(() => Bun.write(path.join(models, "orders.sql"), "select 1\n")) + yield* llm.tool("glob", { pattern: "*.sql", path: models }) + yield* llm.textMatch(({ body }) => isFinalization(body), "Found orders.sql; its contents remain unverified.") + // The request whose step-start exceeds the budget may reach the provider. + // Keep it separate from the finalization response and await its cancellation. + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().hang()) + + const result = yield* opencode.run("Which SQL files are present?", { + format: "json", + extraArgs: ["--max-turns", "1"], + env: { + OPENCODE_CONFIG_CONTENT: JSON.stringify({ ...testProviderConfig(llm.url), permission: { glob: "allow" } }), + }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 1) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(1) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + // altimate_change start — a non-commit still stops before the second work step is emitted + const budgetIndex = events.findIndex((event) => event.type === "budget_exhausted") + expect(events[budgetIndex]).toMatchObject({ limit: 1 }) + expect(events.slice(0, budgetIndex).filter((event) => event.type === "step_start")).toHaveLength(1) + // altimate_change end + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_model_stopped: "stop", why_harness_stopped: "budget-exhausted", done_reason: "none" }, + ]) + expect( + events.filter((event) => event.type === "text").map((event) => (event.part as { text: string }).text), + ).toEqual(["Found orders.sql; its contents remain unverified."]) + const tools = events + .filter((event) => event.type === "tool_use") + .map( + (event) => + event.part as { + tool: string + state: { status: string; output: string } + }, + ) + expect(tools).toHaveLength(1) + expect(tools[0]).toMatchObject({ tool: "glob", state: { status: "completed" } }) + expect(tools[0]!.state.output).toContain("orders.sql") + const finalizations = (yield* llm.inputs).filter(isFinalization) + expect(finalizations).toHaveLength(1) + expect(JSON.stringify(finalizations[0])).toContain("orders.sql") + }), + 90_000, + ) + + cliIt.concurrent( + "a silent budget finalization produces an honest status once and exits 1", + ({ llm, opencode }) => + Effect.gen(function* () { + yield* llm.tool("glob", { pattern: "*.sql" }) + yield* llm.textMatch(({ body }) => isFinalization(body), "") + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().hang()) + const result = yield* opencode.run("Which SQL files are present?", { + format: "json", + extraArgs: ["--max-turns", "1"], + env: { + OPENCODE_CONFIG_CONTENT: JSON.stringify({ ...testProviderConfig(llm.url), permission: { glob: "allow" } }), + }, + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 1) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(events.filter((event) => event.type === "silent_turn")).toMatchObject([ + { + message: + "No final answer was produced: the work budget was exhausted and the best-effort reply did not provide an answer.", + }, + ]) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "budget-exhausted" }, + ]) + expect((yield* llm.inputs).filter(isFinalization)).toHaveLength(1) + }), + 90_000, + ) + + cliIt.concurrent( + "an answer within --max-turns 1 is not followed by another generation", + ({ llm, opencode }) => + Effect.gen(function* () { + yield* llm.text("The answer is ready.") + const result = yield* opencode.run("Answer directly.", { + format: "json", + extraArgs: ["--max-turns", "1"], + timeoutMs: 60_000, + bunRun: true, + }) + opencode.expectExit(result, 0) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(0) + expect(events.filter((event) => event.type === "termination")).toMatchObject([{ why_harness_stopped: "none" }]) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(1) + expect(requests.filter(isFinalization)).toHaveLength(0) + }), + 90_000, + ) +}) + +// altimate_change start — hard time-budget aborts recover only when finalization writes an answer +cliIt.live( + "a soft-interrupted partial answer gets one finalization when the reminder stalls before step-start", + ({ llm, opencode, home }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const finalAnswer = "The available evidence supports this final answer." + const partialAnswer = "Let me examine the evidence before" + yield* llm.push(reply().text(partialAnswer).hang()) + yield* llm.textMatch(({ body }) => isFinalization(body), finalAnswer) + // No SSE chunks means the reminder's provider request never starts a new step. + yield* llm.pushMatch(({ body }) => !isFinalization(body), raw({ hang: true })) + const result = yield* opencode.run("Give the best supported answer.", { + format: "json", + extraArgs: ["--time-budget", "5", "--output", outputPath], + bunRun: true, + timeoutMs: 30_000, + }) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(3) + expect(JSON.stringify(requests[1])).toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(requests.filter(isFinalization)).toHaveLength(1) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(finalAnswer) + const events = opencode.parseJsonEvents(result.stdout) + const hardDeadline = events.findIndex((event) => event.type === "budget_exhausted") + expect(hardDeadline).toBeGreaterThanOrEqual(0) + expect(events.slice(0, hardDeadline).filter((event) => event.type === "step_start")).toHaveLength(1) + expect(events.slice(0, hardDeadline).filter((event) => event.type === "text")).toMatchObject([ + { part: { text: partialAnswer } }, + ]) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(events.filter((event) => event.type === "text").at(-1)).toMatchObject({ + part: { text: finalAnswer }, + }) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "budget-exhausted", time_budget_deadline: "hard" }, + ]) + expect(yield* llm.pending).toBe(0) + }), + 60_000, +) + +cliIt.live( + "a complete answer before the time deadline skips budget finalization", + ({ llm, opencode, home }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const answer = "The complete answer is ready." + yield* llm.text(answer) + const result = yield* opencode.run("Answer directly.", { + format: "json", + extraArgs: ["--time-budget", "5", "--output", outputPath], + bunRun: true, + timeoutMs: 30_000, + }) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(1) + expect(requests.filter(isFinalization)).toHaveLength(0) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(0) + }), + 60_000, +) + +for (const finalAnswer of ["The available evidence supports this limited answer.", ""]) { + cliIt.live( + `hard time-budget finalization uses low effort and exits ${finalAnswer ? "0 with an answer" : "nonzero without an answer"}`, + ({ llm, opencode, home }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const config = testProviderConfig(llm.url) + const model = config.provider.test.models["test-model"] + const partialAnswer = "The first group contains 12 records; the rest remain unverified." + yield* llm.push(reply().text(partialAnswer).reason("Still considering the evidence.").hang()) + yield* llm.textMatch(({ body }) => isFinalization(body), finalAnswer) + yield* llm.pushMatch(({ body }) => !isFinalization(body), reply().reason("More analysis.").hang()) + const result = yield* opencode.run("Give the best supported answer.", { + format: "json", + extraArgs: ["--time-budget", "5", "--variant", "high", "--output", outputPath], + bunRun: true, + env: { + ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE: "1", + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...config, + provider: { + test: { + ...config.provider.test, + models: { + "test-model": { + ...model, + id: "o3", + reasoning: true, + variants: { high: { reasoningEffort: "high" }, low: { reasoningEffort: "low" } }, + }, + }, + }, + }, + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + }), + }, + timeoutMs: 30_000, + }) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(3) + expect(requests.map((body) => body.reasoning_effort)).toEqual(["high", "low", "low"]) + expect(JSON.stringify(requests[1])).toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(requests.filter(isFinalization)).toHaveLength(1) + opencode.expectExit(result, finalAnswer ? 0 : 1) + const output = yield* Effect.promise(() => Bun.file(outputPath).text()) + if (finalAnswer) { + expect(output).toBe(finalAnswer) + expect(result.stderr).toMatch(/warn|time.*budget|budget.*time/i) + } else { + expect(output).toContain("No final answer was produced") + expect(output).toContain("Partial assistant response (not finalized):") + expect(output).toContain(partialAnswer) + } + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(1) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "budget-exhausted", time_budget_deadline: "hard" }, + ]) + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + const trace = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.metadata.effort_downgraded_at).toBeDefined() + expect(trace.metadata.generation_interrupted_at).toBeDefined() + if (finalAnswer) { + expect(trace.summary.status).toBe("completed") + expect(trace.summary.error).toBeUndefined() + } + expect(yield* llm.pending).toBe(0) + }), + 60_000, + ) +} +// altimate_change end diff --git a/packages/opencode/test/cli/run/json-output.test.ts b/packages/opencode/test/cli/run/json-output.test.ts new file mode 100644 index 0000000000..d75274645b --- /dev/null +++ b/packages/opencode/test/cli/run/json-output.test.ts @@ -0,0 +1,327 @@ +import { describe, expect } from "bun:test" +import { Effect, Fiber } from "effect" +import path from "node:path" +import type { TraceFile } from "../../../src/altimate/observability/tracing" +import { SessionTermination } from "../../../src/session/termination" +import { cliIt } from "../../lib/cli-process" +import { reply } from "../../lib/llm-server" +import { testProviderConfig } from "../../lib/test-provider" + +function isBudgetFinalization(body: Record) { + const messages = body.messages as { role?: string; content?: unknown }[] | undefined + const lastUser = messages?.findLast((message) => message.role === "user") + return JSON.stringify(lastUser?.content ?? "").includes(SessionTermination.REPLY_AFTER_BUDGET) +} + +function workRequests(inputs: Record[]) { + return inputs.filter((body) => !JSON.stringify(body).includes("Generate a title for this conversation")) +} + +describe("opencode run: JSON output artifacts", () => { + cliIt.concurrent( + "--format json --output writes completed assistant text at termination and resolves root trace metadata", + ({ llm, home, opencode }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const inputPath = path.join(home, "notes.txt") + const preamble = "Let me read the project notes first." + const answer = "The project notes contain three items." + yield* Effect.promise(() => Bun.write(inputPath, "first\nsecond\nthird\n")) + + // Match the second generation by the read result, not HTTP call count: + // background title generation can make its own request in either order. + let reachedFinalGeneration!: () => void + const finalGeneration = new Promise((resolve) => { + reachedFinalGeneration = resolve + }) + let releaseAnswer!: () => void + const answerGate = new Promise((resolve) => { + releaseAnswer = resolve + }) + yield* llm.textTool(preamble, "read", { filePath: inputPath }) + yield* llm.pushMatch(({ body }) => { + if (!Array.isArray(body.messages) || !body.messages.some((message) => message.role === "tool")) return false + reachedFinalGeneration() + return true + }, reply().wait(answerGate).text(answer).stop()) + + const config = { + ...testProviderConfig(llm.url), + model: "test/test-model", + agent: { build: { model: "test/test-model", variant: "review" } }, + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + experimental: { auto_mcp_discovery: false }, + } + // Omit --model and --variant so this assertion depends on enrichment + // from the root assistant, not metadata seeded from command-line flags. + const running = yield* opencode + .spawn(["run", "--agent", "build", "--format", "json", "--output", outputPath, "Summarize notes.txt."], { + bunRun: true, + env: { OPENCODE_CONFIG_CONTENT: JSON.stringify(config), ALTIMATE_CLI_YOLO: "true" }, + }) + .pipe(Effect.forkChild) + try { + yield* Effect.promise(() => finalGeneration).pipe(Effect.timeout("45 seconds")) + // --output holds the final step's text (the tool preamble belongs to an earlier + // step) and writes once at normal termination. It is not a crash-durable stream. + expect(yield* Effect.promise(() => Bun.file(outputPath).exists())).toBe(false) + } finally { + releaseAnswer() + } + const result = yield* Fiber.join(running) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + + const events = opencode.parseJsonEvents(result.stdout) + const textEvents = events.filter((event) => event.type === "text") + expect(textEvents.map((event) => (event.part as { text: string }).text)).toEqual([preamble, answer]) + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + expect(saved[0]!.sessionID).toBe(textEvents[0]!.sessionID) + expect(typeof saved[0]!.path).toBe("string") + const trace: TraceFile = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.sessionId).toBe(textEvents[0]!.sessionID as string) + expect(trace.metadata).toMatchObject({ + model: "test/test-model", + providerId: "test", + agent: "build", + variant: "review", + }) + expect(trace.summary.totalGenerations).toBe(2) + expect(trace.summary.totalToolCalls).toBe(1) + expect(yield* llm.pending).toBe(0) + }), + 90_000, + ) + + cliIt.live( + "--time-budget delivers one soft directive at the next slow-tool boundary", + ({ llm, home, opencode }) => + Effect.gen(function* () { + const inputPath = path.join(home, "notes.txt") + const outputPath = path.join(home, "answer.md") + const answer = "The notes contain the current supported answer." + yield* Effect.promise(() => Bun.write(inputPath, "current supported answer\n")) + // The sleep is the workload being budgeted, not a synchronization delay. + // Five seconds leaves headroom for prompt setup and the final read after + // crossing the four-second soft deadline. + yield* llm.tool("bash", { command: "sleep 4.05", description: "Simulate a slow exploration tool" }) + yield* llm.tool("read", { filePath: inputPath }) + yield* llm.text(answer) + + const result = yield* opencode.run("Read the notes and give the supported answer.", { + format: "json", + extraArgs: ["--time-budget", "5", "--output", outputPath], + bunRun: true, + env: { + ALTIMATE_CLI_YOLO: "true", + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...testProviderConfig(llm.url), + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + }), + }, + }) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + const requests = workRequests(yield* llm.inputs) + expect(requests).toHaveLength(3) + expect(JSON.stringify(requests[0])).not.toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(JSON.stringify(requests[1])).toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(JSON.stringify(requests[2]).split(SessionTermination.REPLY_BEFORE_TIME_BUDGET)).toHaveLength(2) + expect(requests.filter(isBudgetFinalization)).toHaveLength(0) + + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "time_budget_warning")).toMatchObject([{ limit_seconds: 5 }]) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + // altimate_change start — the soft deadline preserves a tool result after it finishes + const tools = events.filter((event) => event.type === "tool_use").map((event) => event.part) + expect(tools).toHaveLength(2) + expect(tools[0]).toMatchObject({ tool: "bash", state: { status: "completed" } }) + expect(tools[1]).toMatchObject({ tool: "read", state: { status: "completed" } }) + expect(JSON.stringify(requests[2])).toContain("current supported answer") + // altimate_change end + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "none", time_budget_s: 5, time_budget_deadline: "soft" }, + ]) + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + const trace: TraceFile = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.metadata).toMatchObject({ time_budget_s: 5, time_budget_deadline: "soft" }) + expect(trace.metadata.elapsed_s).toBeGreaterThanOrEqual(4) + expect(trace.metadata.elapsed_s).toBeLessThan(5) + expect(yield* llm.pending).toBe(0) + }), + 90_000, + ) + + for (const finalAnswer of ["The notes establish three items; the additional exploration was interrupted.", ""]) { + cliIt.live( + `--time-budget cuts off a running tool and finalizes once (${finalAnswer ? "partial answer" : "no answer"})`, + ({ llm, home, opencode }) => + Effect.gen(function* () { + const inputPath = path.join(home, "notes.txt") + const outputPath = path.join(home, "answer.md") + yield* Effect.promise(() => Bun.write(inputPath, "The notes establish three items.\n")) + yield* llm.tool("read", { filePath: inputPath }) + yield* llm.textTool("Let me explore a little further before answering.", "bash", { + command: "sleep 10", + description: "Simulate exploration beyond the deadline", + }) + yield* llm.textMatch(({ body }) => isBudgetFinalization(body), finalAnswer) + // If the interrupted tool races a further work request, keep that + // request from consuming the one finalization response. + yield* llm.pushMatch(({ body }) => !isBudgetFinalization(body), reply().hang()) + const result = yield* opencode.run("Read the notes and investigate further.", { + format: "json", + extraArgs: ["--output", outputPath], + bunRun: true, + env: { + ALTIMATE_RUN_TIME_BUDGET_S: "2", + ALTIMATE_CLI_YOLO: "true", + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...testProviderConfig(llm.url), + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + }), + }, + }) + // altimate_change start — a hard deadline is recovered when finalization writes the answer + opencode.expectExit(result, finalAnswer ? 0 : 1) + // altimate_change end + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toMatchObject([{ limit_seconds: 2 }]) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "budget-exhausted", time_budget_s: 2, time_budget_deadline: "hard" }, + ]) + const finalizations = workRequests(yield* llm.inputs).filter(isBudgetFinalization) + expect(finalizations).toHaveLength(1) + expect(JSON.stringify(finalizations[0])).toContain("The notes establish three items.") + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + const trace: TraceFile = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.metadata).toMatchObject({ time_budget_s: 2, time_budget_deadline: "hard" }) + expect(trace.metadata.elapsed_s).toBeGreaterThanOrEqual(2) + // A natural tool finish would take ten seconds. Exclude process boot + // from the measurement by asserting the run's own elapsed accounting. + expect(trace.metadata.elapsed_s).toBeLessThan(10) + const output = yield* Effect.promise(() => Bun.file(outputPath).text()) + if (finalAnswer) { + expect(output).toBe(finalAnswer) + expect(events.filter((event) => event.type === "silent_turn")).toHaveLength(0) + } else { + expect(output).toBe( + "No final answer was produced: the work budget was exhausted and the best-effort reply did not provide an answer.", + ) + expect(events.filter((event) => event.type === "silent_turn")).toHaveLength(1) + } + }), + 90_000, + ) + } + + cliIt.live( + "time exhaustion during a silent-turn followup still gets one budget finalization", + ({ llm, home, opencode }) => + Effect.gen(function* () { + const answer = "There is not enough evidence to answer; the attempted exploration was interrupted." + const outputPath = path.join(home, "answer.md") + yield* llm.text("") + yield* llm.textTool("Let me investigate before giving the requested reply.", "bash", { + command: "sleep 10", + description: "Simulate exploration in the silent-turn followup", + }) + yield* llm.textMatch(({ body }) => isBudgetFinalization(body), answer) + yield* llm.pushMatch(({ body }) => !isBudgetFinalization(body), reply().hang()) + + const result = yield* opencode.run("Give the best supported answer.", { + format: "json", + extraArgs: ["--time-budget", "2", "--output", outputPath], + bunRun: true, + env: { ALTIMATE_CLI_YOLO: "true" }, + }) + // altimate_change start — finalization also recovers an abort during a silent-turn followup + opencode.expectExit(result, 0) + // altimate_change end + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + const requests = workRequests(yield* llm.inputs) + expect(JSON.stringify(requests[1])).toContain(SessionTermination.replyAfterSilentTurn()) + expect(requests.filter(isBudgetFinalization)).toHaveLength(1) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "budget_exhausted")).toMatchObject([{ limit_seconds: 2 }]) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(2) + expect(events.filter((event) => event.type === "silent_turn")).toHaveLength(0) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "budget-exhausted", time_budget_s: 2, time_budget_deadline: "hard" }, + ]) + }), + 90_000, + ) + + cliIt.live( + "a fast --time-budget run overrides the environment and fires neither deadline", + ({ llm, home, opencode }) => + Effect.gen(function* () { + const answer = "The answer is ready." + const outputPath = path.join(home, "answer.md") + yield* llm.text(answer) + const result = yield* opencode.run("Answer directly.", { + format: "json", + extraArgs: ["--time-budget", "4", "--output", outputPath], + bunRun: true, + env: { + ALTIMATE_RUN_TIME_BUDGET_S: "not-a-number", + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...testProviderConfig(llm.url), + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + }), + }, + }) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + const requests = workRequests(yield* llm.inputs) + expect(requests).toHaveLength(1) + expect(JSON.stringify(requests)).not.toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(requests.filter(isBudgetFinalization)).toHaveLength(0) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "time_budget_warning")).toHaveLength(0) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + expect(events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(0) + expect(events.filter((event) => event.type === "termination")).toMatchObject([ + { why_harness_stopped: "none", time_budget_s: 4, time_budget_deadline: "none" }, + ]) + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + const trace: TraceFile = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.metadata).toMatchObject({ time_budget_s: 4, time_budget_deadline: "none" }) + expect(trace.metadata.elapsed_s).toBeGreaterThanOrEqual(0) + expect(trace.metadata.elapsed_s).toBeLessThan(3.2) + }), + 90_000, + ) + + for (const invalid of [ + { name: "zero CLI value", extraArgs: ["--time-budget", "0"], env: { ALTIMATE_RUN_TIME_BUDGET_S: "5" } }, + { name: "negative CLI value", extraArgs: ["--time-budget=-2"], env: { ALTIMATE_RUN_TIME_BUDGET_S: "5" } }, + { name: "nonnumeric CLI value", extraArgs: ["--time-budget", "invalid"], env: { ALTIMATE_RUN_TIME_BUDGET_S: "5" } }, + { name: "nonnumeric environment value", extraArgs: [], env: { ALTIMATE_RUN_TIME_BUDGET_S: "invalid" } }, + ]) { + cliIt.live( + `--time-budget rejects ${invalid.name} before making a model request`, + ({ llm, home, opencode }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const result = yield* opencode.run("This must not run.", { + format: "json", + extraArgs: [...invalid.extraArgs, "--output", outputPath], + env: invalid.env, + bunRun: true, + }) + opencode.expectExit(result, 1) + expect(result.stderr).toContain("--time-budget must be a positive number") + expect(yield* llm.calls).toBe(0) + expect(yield* Effect.promise(() => Bun.file(outputPath).exists())).toBe(false) + }), + 90_000, + ) + } +}) diff --git a/packages/opencode/test/cli/run/query-budget.test.ts b/packages/opencode/test/cli/run/query-budget.test.ts new file mode 100644 index 0000000000..f0be0a6250 --- /dev/null +++ b/packages/opencode/test/cli/run/query-budget.test.ts @@ -0,0 +1,24 @@ +import { describe, expect, test } from "bun:test" +import { RunBudget } from "../../../src/altimate/run-budget" +import { RunTimeBudget } from "../../../src/cli/cmd/run-time-budget" + +describe("query deadline within the run budget", () => { + test("reserves answer time before the hard deadline", () => { + expect(RunTimeBudget.queryDeadline(1_000, 600)).toBe(511_000) + expect(RunTimeBudget.queryDeadline(1_000, 5)).toBe(5_000) + expect(RunTimeBudget.queryDeadline(1_000, undefined)).toBeUndefined() + }) + + test("keeps very large finite budgets finite", () => { + expect(Number.isFinite(RunTimeBudget.queryDeadline(1_000, Number.MAX_VALUE))).toBe(true) + }) + + test("keeps a newer run deadline when the previous run releases", () => { + const first = RunBudget.registerQueryDeadline("session-query-budget", 10_000) + const second = RunBudget.registerQueryDeadline("session-query-budget", 20_000) + first() + expect(RunBudget.queryDeadline("session-query-budget")).toBe(20_000) + second() + expect(RunBudget.queryDeadline("session-query-budget")).toBeUndefined() + }) +}) diff --git a/packages/opencode/test/cli/run/queued-time-budget.test.ts b/packages/opencode/test/cli/run/queued-time-budget.test.ts new file mode 100644 index 0000000000..a75f735116 --- /dev/null +++ b/packages/opencode/test/cli/run/queued-time-budget.test.ts @@ -0,0 +1,196 @@ +// altimate_change start — exercise the CLI's actual cancellation closure without a listening server +import { expect, test } from "bun:test" +import fs from "node:fs/promises" +import { RunTimeBudget } from "../../../src/cli/cmd/run-time-budget" + +test("work deadlines include process startup and do not restart on retries", async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const elapsedStart = source.indexOf(" const elapsedSeconds =") + const elapsedEnd = source.indexOf("\n", elapsedStart) + const start = source.indexOf(" const startWorkClock = () => {") + const end = source.indexOf("\n // altimate_change end", start) + expect(elapsedStart).toBeGreaterThan(0) + expect(start).toBeGreaterThan(0) + let now = 7_000 + const setup = new Function("performance", "process", "setInterval", "RunTimeBudget", ` + let timeStarted, workActive = false, timeBudgetTimer, queryDeadline + const timeBudget = 10, tracer = undefined + const budgetMetadata = () => ({}) + const checkTimeBudget = () => {} + ${source.slice(elapsedStart, elapsedEnd)} + ${source.slice(start, end)} + return { startWorkClock, elapsedSeconds } + `) + const clock = setup({ now: () => now }, { uptime: () => now / 1000 }, () => 1, RunTimeBudget) + clock.startWorkClock() + expect(clock.elapsedSeconds()).toBe(7) + expect(RunTimeBudget.deadline(clock.elapsedSeconds(), 10)).toBeUndefined() + now = 8_000 + clock.startWorkClock() + expect(RunTimeBudget.deadline(clock.elapsedSeconds(), 10)).toBe("soft") + now = 10_000 + expect(RunTimeBudget.deadline(clock.elapsedSeconds(), 10)).toBe("hard") +}) + +test("hard deadline aborts a queued session without a post-subscription busy event", async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const start = source.indexOf(" const abortForTimeBudget = () => {") + const end = source.indexOf(" const checkTimeBudget =", start) + expect(start).toBeGreaterThan(0) + const calls: string[] = [] + // Supply the lexical state used by the production closure; no busy event has arrived. + const setup = new Function( + "sdk", + ` + const sessionID = "ses_queued" + let timeAbortRequested = false + let timeBudgetAbort + const accounting = { onSessionError() {} } + const eventAbort = new AbortController() + ${source.slice(start, end)} + abortForTimeBudget() + abortForTimeBudget() + return timeBudgetAbort + `, + ) + await setup({ + session: { + abort: async ({ sessionID }: { sessionID: string }) => { + calls.push(sessionID) + return {} + }, + }, + }) + expect(calls).toEqual(["ses_queued"]) +}) + +test("hard deadline abort carries the harness deadline marker", async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const start = source.indexOf(" const abortForTimeBudget = () => {") + const end = source.indexOf(" const checkTimeBudget =", start) + expect(start).toBeGreaterThan(0) + let abortOptions: { signal: AbortSignal; headers?: Record } | undefined + const setup = new Function( + "sdk", + ` + const sessionID = "ses_deadline_marker" + let timeAbortRequested = false + let timeBudgetAbort + const accounting = { onSessionError() {} } + const eventAbort = new AbortController() + ${source.slice(start, end)} + abortForTimeBudget() + return timeBudgetAbort + `, + ) + await setup({ + session: { + abort: async (_: unknown, options: NonNullable) => { + abortOptions = options + return {} + }, + }, + }) + expect(abortOptions?.headers?.["x-altimate-run-budget"]).toBe("hard-deadline") + expect(abortOptions?.signal.aborted).toBe(false) +}) +// altimate_change end + +// altimate_change start — the request lifetime also ends when queued work never becomes busy +for (const command of [undefined, "inspect"]) { + test(`hard deadline cancels the ${command ? "command" : "prompt"} POST before any busy event`, async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const start = source.indexOf(" const send = () => {") + const end = source.indexOf(" /** Did the server persist", start) + const deadline = new AbortController() + const send = new Function( + "sdk", + "args", + "timeBudgetStop", + ` + const sessionID = "ses_queued", sendMessageID = "msg_queued", agent = "analyst", message = "inspect" + const files = [], audienceSystem = undefined + const eventAbort = new AbortController() + const startWorkClock = () => {} + const beginRequest = () => {} + const budgetHeaders = () => ({}) + const Telemetry = { startupReady() {} } + ${source.slice(start, end)} + return send() + `, + ) + const sdk = { + session: { + prompt: (_: unknown, options: { signal: AbortSignal }) => options.signal, + command: (_: unknown, options: { signal: AbortSignal }) => options.signal, + }, + } + const signal = send(sdk, { command }, deadline) as AbortSignal + expect(signal.aborted).toBe(false) + deadline.abort() + expect(signal.aborted).toBe(true) + }) +} +// altimate_change end + +// altimate_change start — deliberate request cancellation cannot prevent budget finalization recovery +for (const cancellation of [true, false]) { + test(`hard deadline ${cancellation ? "preserves recovery after" : "does not hide"} an active POST failure`, async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const start = source.indexOf(" // altimate_change start — cancellation during bootstrap") + const end = source.indexOf(" // Wait for the event loop to drain", start) + const deadline = new AbortController() + deadline.abort() + const failures: unknown[] = [] + const account = new Function( + "sendFailure", + "timeBudgetStop", + "accounting", + ` + const timeExhausted = () => true + const timeAbortRequested = true, assistantStarted = true, eventLoopFailure = undefined, sendResult = undefined + const eventAbort = new AbortController() + const RunAccounting = { serializeSessionError: String } + let error + ${source.slice(start, end)} + `, + ) + account(cancellation ? deadline.signal.reason : new Error("unrelated transport failure"), deadline, { + onPromptSendError(error: unknown) { + failures.push(error) + }, + onPromptResult() {}, + }) + expect(failures).toHaveLength(cancellation ? 0 : 1) + }) +} +// altimate_change end + +// altimate_change start — idempotency probes share the request's hard deadline +test("hard deadline cancels an acceptance probe after a retryable POST failure", async () => { + const source = await fs.readFile(new URL("../../../src/cli/cmd/run.ts", import.meta.url), "utf8") + const start = source.lastIndexOf("const acceptance = await ") + const end = source.indexOf("\n if (", start) + const expression = source.slice(start + "const acceptance = await ".length, end).trim() + const deadline = new AbortController() + const eventAbort = new AbortController() + const probe = new Function( + "acceptanceState", + "timeBudgetStop", + "eventAbort", + `const sendMessageID = "msg_queued"; return ${expression}`, + ) + const pending = probe( + (_: string, signal?: AbortSignal) => + new Promise((resolve) => { + signal?.addEventListener("abort", () => resolve("cancelled"), { once: true }) + }), + deadline, + eventAbort, + ) + deadline.abort() + expect(await Promise.race([pending, new Promise((resolve) => setTimeout(() => resolve("hung"), 30))])).toBe( + "cancelled", + ) +}) +// altimate_change end diff --git a/packages/opencode/test/cli/run/run-budget-control.test.ts b/packages/opencode/test/cli/run/run-budget-control.test.ts new file mode 100644 index 0000000000..f3ac927cf4 --- /dev/null +++ b/packages/opencode/test/cli/run/run-budget-control.test.ts @@ -0,0 +1,258 @@ +// altimate_change start — shared message and command control preserves reminder-before-interruption ordering +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" +import { Bus } from "../../../src/bus" +import { RunBudget } from "../../../src/altimate/run-budget" +import { withBudgetControl } from "../../../src/altimate/session/run-budget-control" +import * as RunBudgetEffort from "../../../src/altimate/session/run-budget-effort" +import { SessionID } from "../../../src/session/schema" + +describe("run budget control at prompt boundaries", () => { + let publish: ReturnType> + let priorDowngrade: string | undefined + + beforeEach(() => { + priorDowngrade = process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE + delete process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE + publish = spyOn(Bus, "publish").mockImplementation(async () => {}) + }) + + afterEach(() => { + publish.mockRestore() + if (priorDowngrade === undefined) delete process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE + else process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE = priorDowngrade + }) + + test("work owns the query cutoff until completion while reminders borrow it", async () => { + const sessionID = SessionID.make("ses_budget_control_query_deadline") + const finishWork = Promise.withResolvers() + const work = withBudgetControl( + { sessionID, control: "work", queryDeadline: "10000" }, + () => finishWork.promise, + ) + try { + expect(RunBudget.queryDeadline(sessionID)).toBe(10_000) + await withBudgetControl( + { sessionID, control: "soft-no-downgrade", noReply: true, queryDeadline: "20000" }, + async () => expect(RunBudget.queryDeadline(sessionID)).toBe(10_000), + ) + expect(RunBudget.queryDeadline(sessionID)).toBe(10_000) + } finally { + finishWork.resolve() + await work + } + expect(RunBudget.queryDeadline(sessionID)).toBeUndefined() + }) + + test("failed work releases its query cutoff and finalization does not acquire one", async () => { + const sessionID = SessionID.make("ses_budget_control_query_failure") + await expect(withBudgetControl({ sessionID, control: "work", queryDeadline: "10000" }, async () => { + expect(RunBudget.queryDeadline(sessionID)).toBe(10_000) + throw new Error("work failed") + })).rejects.toThrow("work failed") + expect(RunBudget.queryDeadline(sessionID)).toBeUndefined() + await withBudgetControl({ sessionID, control: "finalization", queryDeadline: "10000" }, async () => { + expect(RunBudget.queryDeadline(sessionID)).toBeUndefined() + }) + }) + + test.each(["", "0", "-1", "NaN", "Infinity", "invalid"])("ignores invalid query cutoff %p", async (queryDeadline) => { + const sessionID = SessionID.make("ses_budget_control_invalid_query") + await withBudgetControl({ sessionID, control: "work", queryDeadline }, async () => { + expect(RunBudget.queryDeadline(sessionID)).toBeUndefined() + }) + }) + + for (const control of ["finalization", "finalization-no-downgrade"]) { + for (const fails of [false, true]) { + test(`${control} disables tools only until finalization ${fails ? "fails" : "completes"}`, async () => { + const sessionID = SessionID.make(`ses_budget_control_${control}_${fails}`) + const result = withBudgetControl({ sessionID, control }, async () => { + expect(RunBudgetEffort.toolsDisabled(sessionID)).toBe(true) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(control === "finalization") + if (fails) throw new Error("provider failed") + return "final answer" + }) + if (fails) await expect(result).rejects.toThrow("provider failed") + else expect(await result).toBe("final answer") + expect(RunBudgetEffort.toolsDisabled(sessionID)).toBe(false) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + await withBudgetControl({ sessionID, control: "work" }, async () => { + expect(RunBudgetEffort.toolsDisabled(sessionID)).toBe(false) + }) + }) + } + } + + test("the effort opt-out does not enable tools during finalization", async () => { + const sessionID = SessionID.make("ses_budget_control_finalization_opt_out") + process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE = "0" + await withBudgetControl({ sessionID, control: "finalization" }, async () => { + expect(RunBudgetEffort.toolsDisabled(sessionID)).toBe(true) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + }) + expect(RunBudgetEffort.toolsDisabled(sessionID)).toBe(false) + }) + + test("downgrades before storing the nudge and interrupts only after it is stored", async () => { + const sessionID = SessionID.make("ses_budget_control_order") + const finishWork = Promise.withResolvers() + const storeNudge = Promise.withResolvers() + const nudgeStarted = Promise.withResolvers() + const order: string[] = [] + const unregister = RunBudget.registerGeneration(sessionID, () => order.push("interrupt")) + const work = withBudgetControl({ sessionID, control: "work" }, () => finishWork.promise) + try { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + const nudge = withBudgetControl({ sessionID, control: "soft", noReply: true }, async () => { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(true) + order.push("storing") + nudgeStarted.resolve() + await storeNudge.promise + order.push("stored") + return "saved nudge" + }) + await nudgeStarted.promise + expect(order).toEqual(["storing"]) + expect(publish).toHaveBeenCalledWith(RunBudgetEffort.EffortDowngraded, { + sessionID, + timestamp: expect.any(Number), + }) + storeNudge.resolve() + expect(await nudge).toBe("saved nudge") + expect(order).toEqual(["storing", "stored", "interrupt"]) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(true) + } finally { + storeNudge.resolve() + finishWork.resolve("answer") + unregister() + expect(await work).toBe("answer") + } + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + expect(RunBudgetEffort.downgradeEffort(sessionID)).toBeUndefined() + }) + + test("a finalization request re-arms low effort and clears it before the next run", async () => { + const sessionID = SessionID.make("ses_budget_control_finalization") + await withBudgetControl({ sessionID, control: "work" }, async () => "interrupted work") + expect(RunBudgetEffort.downgradeEffort(sessionID)).toBeUndefined() + const result = await withBudgetControl({ sessionID, control: "soft" }, async () => { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(true) + return "final answer" + }) + expect(result).toBe("final answer") + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + expect(RunBudgetEffort.downgradeEffort(sessionID)).toBeUndefined() + await withBudgetControl({ sessionID, control: "work" }, async () => { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + }) + }) + + test("failure to store a nudge never interrupts the active generation", async () => { + const sessionID = SessionID.make("ses_budget_control_failed_nudge") + const finishWork = Promise.withResolvers() + let interruptions = 0 + const unregister = RunBudget.registerGeneration(sessionID, () => interruptions++) + const work = withBudgetControl({ sessionID, control: "work" }, () => finishWork.promise) + try { + await expect( + withBudgetControl({ sessionID, control: "soft", noReply: true }, async () => { + throw new Error("could not persist the reminder") + }), + ).rejects.toThrow("could not persist the reminder") + expect(interruptions).toBe(0) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(true) + } finally { + finishWork.resolve() + unregister() + await work + } + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + }) + + for (const control of ["soft", "soft-no-downgrade"]) { + test(`${control} does not interrupt a newer generation when its reminder resolves late`, async () => { + const sessionID = SessionID.make(`ses_budget_control_late_reminder_${control}`) + const storeNudge = Promise.withResolvers() + const nudgeStarted = Promise.withResolvers() + const interruptions: string[] = [] + const unregisterWork = RunBudget.registerGeneration(sessionID, () => interruptions.push("work")) + let unregisterFinalization: (() => void) | undefined + const nudge = withBudgetControl({ sessionID, control, noReply: true }, () => { + nudgeStarted.resolve() + return storeNudge.promise + }) + try { + await nudgeStarted.promise + unregisterWork() + unregisterFinalization = RunBudget.registerGeneration(sessionID, () => interruptions.push("finalization")) + storeNudge.resolve("saved nudge") + expect(await nudge).toBe("saved nudge") + expect(interruptions).toEqual([]) + } finally { + storeNudge.resolve("saved nudge") + await nudge + unregisterWork() + unregisterFinalization?.() + } + }) + + test(`${control} interrupts its original generation when its reminder resolves while still current`, async () => { + const sessionID = SessionID.make(`ses_budget_control_current_reminder_${control}`) + const storeNudge = Promise.withResolvers() + const nudgeStarted = Promise.withResolvers() + let interruptions = 0 + const unregister = RunBudget.registerGeneration(sessionID, () => interruptions++) + const nudge = withBudgetControl({ sessionID, control, noReply: true }, () => { + nudgeStarted.resolve() + return storeNudge.promise + }) + try { + await nudgeStarted.promise + expect(interruptions).toBe(0) + storeNudge.resolve("saved nudge") + expect(await nudge).toBe("saved nudge") + expect(interruptions).toBe(1) + } finally { + storeNudge.resolve("saved nudge") + await nudge + unregister() + } + }) + + test(`${control} respects the effort opt-out while still interrupting the saved reminder`, async () => { + const sessionID = SessionID.make(`ses_budget_control_opt_out_${control}`) + if (control === "soft") process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE = "0" + const finishWork = Promise.withResolvers() + let interruptions = 0 + const unregister = RunBudget.registerGeneration(sessionID, () => interruptions++) + const work = withBudgetControl({ sessionID, control: "work" }, () => finishWork.promise) + try { + await withBudgetControl({ sessionID, control, noReply: true }, async () => { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + expect(interruptions).toBe(0) + }) + expect(interruptions).toBe(1) + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + expect(publish).not.toHaveBeenCalled() + } finally { + finishWork.resolve() + unregister() + await work + } + expect(RunBudgetEffort.downgradeEffort(sessionID)).toBeUndefined() + }) + } + + test("a failed finalization releases its effort override", async () => { + const sessionID = SessionID.make("ses_budget_control_failed_finalization") + await expect( + withBudgetControl({ sessionID, control: "soft" }, async () => { + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(true) + throw new Error("provider failed") + }), + ).rejects.toThrow("provider failed") + expect(RunBudgetEffort.effortOverride(sessionID)).toBe(false) + expect(RunBudgetEffort.downgradeEffort(sessionID)).toBeUndefined() + }) +}) +// altimate_change end diff --git a/packages/opencode/test/cli/run/run-budget-effort.test.ts b/packages/opencode/test/cli/run/run-budget-effort.test.ts new file mode 100644 index 0000000000..8ebed0f6d0 --- /dev/null +++ b/packages/opencode/test/cli/run/run-budget-effort.test.ts @@ -0,0 +1,36 @@ +// altimate_change start — budget effort is scoped to active run requests +import { describe, expect, test } from "bun:test" +import * as RunBudgetEffort from "../../../src/altimate/session/run-budget-effort" + +describe("run budget effort lifetime", () => { + test("a soft deadline affects only its active run and is cleared before session reuse", () => { + const end = RunBudgetEffort.begin("run") + const endOther = RunBudgetEffort.begin("other") + try { + expect(RunBudgetEffort.effortOverride("run")).toBe(false) + expect(RunBudgetEffort.downgradeEffort("run")).toBeNumber() + expect(RunBudgetEffort.effortOverride("run")).toBe(true) + expect(RunBudgetEffort.effortOverride("other")).toBe(false) + } finally { + end() + endOther() + } + expect(RunBudgetEffort.effortOverride("run")).toBe(false) + expect(RunBudgetEffort.downgradeEffort("run")).toBeUndefined() + expect(RunBudgetEffort.effortOverride("run")).toBe(false) + }) + + test("finalization can re-arm the downgrade without leaking to the next run", () => { + const endWork = RunBudgetEffort.begin("run") + RunBudgetEffort.downgradeEffort("run") + endWork() + const endFinalization = RunBudgetEffort.begin("run") + RunBudgetEffort.downgradeEffort("run") + expect(RunBudgetEffort.effortOverride("run")).toBe(true) + endFinalization() + const endNext = RunBudgetEffort.begin("run") + expect(RunBudgetEffort.effortOverride("run")).toBe(false) + endNext() + }) +}) +// altimate_change end diff --git a/packages/opencode/test/cli/run/run-tracing.test.ts b/packages/opencode/test/cli/run/run-tracing.test.ts new file mode 100644 index 0000000000..d7c0996a77 --- /dev/null +++ b/packages/opencode/test/cli/run/run-tracing.test.ts @@ -0,0 +1,570 @@ +import { describe, expect, test } from "bun:test" +import { RunTracing } from "@/cli/cmd/run-tracing" +import { + FileExporter, + Trace, + type LLMRequestSnapshot, + type TraceExporter, + type TraceFile, +} from "@/altimate/observability/tracing" +import { tmpdir } from "../../fixture/fixture" +import path from "node:path" +import os from "node:os" + +type Info = { id: string; parentID?: string } + +function fixture(infos: Info[] = []) { + const files = new Map() + const exporter: TraceExporter = { + name: "memory", + async export(trace) { + files.set(trace.sessionId, structuredClone(trace)) + return undefined + }, + } + const known = new Map(infos.map((info) => [info.id, info])) + const root = Trace.withExporters([exporter]) + root.startTrace("ses_root", { prompt: "Inspect the project." }) + const router = new RunTracing("ses_root", root, { + get: async (id) => known.get(id), + children: async (id) => [...known.values()].filter((info) => info.parentID === id), + }) + return { files, known, root, router } +} + +function created(id: string, parentID?: string) { + return { type: "session.created", properties: { info: { id, parentID } } } +} + +function assistant(sessionID: string, messageID: string) { + return { + type: "message.updated", + properties: { + info: { + id: messageID, + sessionID, + role: "assistant", + modelID: `model-${sessionID}`, + providerID: "test", + agent: "general", + variant: "high", + }, + }, + } +} + +function part(sessionID: string, messageID: string, id: string, value: Record) { + return { type: "message.part.updated", properties: { part: { sessionID, messageID, id, ...value } } } +} + +function start(sessionID: string, messageID: string) { + return part(sessionID, messageID, `prt_start_${messageID}`, { type: "step-start" }) +} + +function finish(sessionID: string, messageID: string, input = 1, output = 2) { + return part(sessionID, messageID, `prt_finish_${messageID}`, { + type: "step-finish", + reason: "stop", + cost: 0, + tokens: { input, output, reasoning: 0, cache: { read: 0, write: 0 } }, + }) +} + +function text(sessionID: string, messageID: string, value: string) { + return part(sessionID, messageID, `prt_text_${messageID}`, { type: "text", text: value, time: { start: 1, end: 2 } }) +} + +function tool(sessionID: string, messageID: string, callID: string, name = "read", metadata = {}, input = {}) { + return part(sessionID, messageID, `prt_${callID}`, { + type: "tool", + tool: name, + callID, + state: { status: "completed", input, output: `${name} result`, metadata, time: { start: 1, end: 2 } }, + }) +} + +function request(sessionID: string, requestID = "request-first") { + const properties: LLMRequestSnapshot = { + requestID, + sessionID, + messageID: `msg_${sessionID}`, + userMessageID: `user_${sessionID}`, + agent: sessionID === "ses_root" ? "analyst" : "data-explorer", + providerID: "test", + modelID: "test-model", + variant: "high", + startTime: 1000, + system: "Effective system", + instructions: "Provider instructions", + tools: [{ name: "read", active: true, inputSchema: { type: "object" } }], + } + return { type: "llm.request", properties } +} + +async function feed(router: RunTracing, events: unknown[]) { + for (const event of events) await router.observe(event) +} + +function manifest(files: Map) { + return files.get("ses_root")!.metadata.run!.sessions! +} + +function assertGeneration( + trace: TraceFile, + messageID: string, + expected: { output: string; tools: number; tokens: number }, +) { + const generations = trace.spans.filter((span) => span.kind === "generation") + expect(generations).toHaveLength(1) + expect(generations[0]!.attributes).toEqual({ sessionId: trace.sessionId, messageId: messageID }) + expect(generations[0]!.output).toBe(expected.output) + expect(trace.summary.totalGenerations).toBe(1) + expect(trace.summary.totalTokens).toBe(expected.tokens) + expect(trace.summary.totalToolCalls).toBe(expected.tools) + const tools = trace.spans.filter((span) => span.kind === "tool") + expect(tools).toHaveLength(expected.tools) + for (const span of tools) { + expect(span.parentSpanId).toBe(generations[0]!.spanId) + expect(span.attributes).toEqual({ sessionId: trace.sessionId, messageId: messageID }) + } +} + +describe("run trace session routing", () => { + test("user and synthetic attachment prompt spans use the 4000-character cap", async () => { + const { router, files } = fixture() + const prompt = "x".repeat(10_000) + await router.observe({ type: "message.updated", properties: { + info: { id: "msg_user", sessionID: "ses_root", role: "user" }, + } }) + for (const synthetic of [false, true]) { + await router.observe(part("ses_root", "msg_user", `prt_user_${synthetic}`, { + type: "text", text: prompt, synthetic, + })) + } + await router.finish() + const spans = files.get("ses_root")!.spans.filter((span) => ["user-prompt", "synthetic-prompt"].includes(span.name)) + expect(spans).toHaveLength(2) + for (const span of spans) expect(span.input).toBe(prompt.slice(0, 4000)) + }) + + for (const source of ["message.updated", "session.error"]) { + test(`${source} bounds API error bodies and omits response headers`, async () => { + const { router, files } = fixture() + await router.observe(created("ses_failed", "ses_root")) + const error = { name: "APIError", data: { + message: "provider failed", statusCode: 503, isRetryable: true, + responseHeaders: { "x-private-header": "private-header-value" }, + responseBody: "body-prefix:" + "b".repeat(100_000) + ":body-tail", + } } + await router.observe(source === "session.error" + ? { type: source, properties: { sessionID: "ses_failed", error } } + : { type: source, properties: { info: { + ...assistant("ses_failed", "msg_failed").properties.info, error, + } } }) + await router.finish() + const serialized = files.get("ses_failed")!.summary.error! + expect(serialized.length).toBeLessThanOrEqual(4000) + expect(serialized).toContain("provider failed") + expect(serialized).toContain("503") + expect(serialized).not.toContain("private-header-value") + expect(serialized).not.toContain("responseHeaders") + expect(serialized).not.toContain(":body-tail") + }) + } + + test("exported error summaries redact secrets and local identity before truncation", async () => { + const { router, files } = fixture() + await router.observe(created("ses_private", "ses_root")) + await router.observe({ + type: "session.error", + properties: { + sessionID: "ses_private", + error: { + message: `Failed at ${os.homedir()}/private on ${os.hostname()} user=${os.userInfo().username} https://provider.test/request?token=query-secret password=inline-secret`, + responseBody: "Bearer abcdefghijklmnop private@example.test", + apiKey: "structured-secret", + }, + }, + }) + await router.finish() + const error = files.get("ses_private")!.summary.error! + expect(error).toContain("Failed at ~/private") + for (const value of [ + os.homedir(), + os.hostname(), + "query-secret", + "inline-secret", + "abcdefghijklmnop", + "private@example.test", + "structured-secret", + ]) + expect(error).not.toContain(value) + }) + + test("root error summaries redact credentials before export", async () => { + const { router, files } = fixture() + await router.finish("Connection failed: password=root-secret https://provider.test/?token=private-query") + const error = files.get("ses_root")!.summary.error! + expect(error).not.toContain("root-secret") + expect(error).not.toContain("private-query") + expect(error).toContain("Connection failed") + }) + + test("request snapshots route interleaved and early child events once after verified ancestry", async () => { + const { router, files } = fixture([{ id: "ses_outside" }]) + const early = request("ses_early") + await feed(router, [ + early, + early, + request("ses_outside"), + request("ses_root"), + created("ses_other", "ses_root"), + request("ses_other"), + created("ses_early", "ses_root"), + request("ses_root", "request-second"), + early, + created("ses_without_request", "ses_root"), + ]) + await router.finish() + expect([...files.keys()].sort()).toEqual(["ses_early", "ses_other", "ses_root", "ses_without_request"]) + for (const id of ["ses_root", "ses_early", "ses_other"]) { + const file = files.get(id)! + const spans = file.spans.filter((span) => span.name === "llm-request") + expect(spans).toHaveLength(id === "ses_root" ? 2 : 1) + expect(spans[0].attributes).toMatchObject({ + sessionId: id, + messageId: `msg_${id}`, + userMessageId: `user_${id}`, + agent: id === "ses_root" ? "analyst" : "data-explorer", + requestId: "request-first", + captureBoundary: "before-streamText", + }) + expect(spans[0].input).toEqual({ + system: { hash: expect.any(String), content: "Effective system" }, + tools: { hash: expect.any(String), content: request(id).properties.tools }, + instructions: { hash: expect.any(String), content: "Provider instructions" }, + }) + if (id === "ses_root") { + expect(spans[1].input).toEqual({ + system: { hash: expect.any(String) }, + tools: { hash: expect.any(String) }, + instructions: { hash: expect.any(String) }, + }) + } + expect(file.metadata.captureOmissions).toHaveLength(1) + expect(file.metadata.captureOmissions![0]).toStartWith("internal_custom_spans:") + } + const uncaptured = files.get("ses_without_request")! + expect(uncaptured.spans.filter((span) => span.name === "llm-request")).toHaveLength(0) + expect(uncaptured.metadata.captureOmissions).toHaveLength(3) + expect( + uncaptured.metadata.captureOmissions!.some((omission) => omission.startsWith("effective_system_prompt:")), + ).toBe(true) + expect( + uncaptured.metadata.captureOmissions!.some((omission) => omission.startsWith("resolved_tool_catalog:")), + ).toBe(true) + }) + + test("two interleaving children and a grandchild keep independent lineage, generations, tools, and reasoning", async () => { + const { router, files } = fixture() + await feed(router, [ + created("ses_a", "ses_root"), + created("ses_b", "ses_root"), + created("ses_grandchild", "ses_a"), + assistant("ses_root", "msg_root"), + start("ses_root", "msg_root"), + assistant("ses_a", "msg_a"), + start("ses_a", "msg_a"), + assistant("ses_b", "msg_b"), + start("ses_b", "msg_b"), + tool("ses_a", "msg_a", "call_a"), + assistant("ses_grandchild", "msg_grandchild"), + start("ses_grandchild", "msg_grandchild"), + tool("ses_b", "msg_b", "call_b"), + part("ses_a", "msg_a", "prt_reason_a", { + type: "reasoning", + text: "Compare the observed records.", + time: { start: 1, end: 2 }, + }), + text("ses_b", "msg_b", "Child B answer"), + tool("ses_grandchild", "msg_grandchild", "call_grandchild"), + text("ses_a", "msg_a", "Child A answer"), + text("ses_grandchild", "msg_grandchild", "Grandchild answer"), + finish("ses_b", "msg_b", 3, 4), + finish("ses_a", "msg_a", 1, 2), + finish("ses_grandchild", "msg_grandchild", 5, 6), + text("ses_root", "msg_root", "Root answer"), + finish("ses_root", "msg_root", 7, 8), + ]) + await router.finish() + expect([...files.keys()].sort()).toEqual(["ses_a", "ses_b", "ses_grandchild", "ses_root"]) + expect( + manifest(files).map(({ sessionId, parentSessionId, traceId }) => ({ sessionId, parentSessionId, traceId })), + ).toEqual([ + { sessionId: "ses_root", parentSessionId: undefined, traceId: files.get("ses_root")!.traceId }, + { sessionId: "ses_a", parentSessionId: "ses_root", traceId: files.get("ses_a")!.traceId }, + { sessionId: "ses_b", parentSessionId: "ses_root", traceId: files.get("ses_b")!.traceId }, + { sessionId: "ses_grandchild", parentSessionId: "ses_a", traceId: files.get("ses_grandchild")!.traceId }, + ]) + expect(new Set([...files.values()].map((trace) => trace.traceId)).size).toBe(4) + for (const [id, parentID, messageID, output, tools, tokens] of [ + ["ses_root", undefined, "msg_root", "Root answer", 0, 15], + ["ses_a", "ses_root", "msg_a", "Child A answer", 1, 3], + ["ses_b", "ses_root", "msg_b", "Child B answer", 1, 7], + ["ses_grandchild", "ses_a", "msg_grandchild", "Grandchild answer", 1, 11], + ] as const) { + const trace = files.get(id)! + assertGeneration(trace, messageID, { output, tools, tokens }) + expect(trace.metadata.run!.rootSessionId).toBe("ses_root") + expect(trace.metadata.run!.parentSessionId).toBe(parentID) + expect(trace.metadata.model).toBe(`test/model-${id}`) + const reasoning = trace.spans.filter((span) => span.name === "reasoning") + expect(reasoning).toHaveLength(id === "ses_a" ? 1 : 0) + if (id === "ses_a") { + expect(reasoning[0]!.output).toBe("Compare the observed records.") + expect(reasoning[0]!.parentSpanId).toBe(trace.spans.find((span) => span.kind === "generation")!.spanId) + } + } + }) + + test("seed recursively records resumed descendants before their next creation event", async () => { + const { router, files } = fixture([ + { id: "ses_resumed", parentID: "ses_root" }, + { id: "ses_nested", parentID: "ses_resumed" }, + { id: "ses_unrelated" }, + ]) + await router.seed() + await feed(router, [ + assistant("ses_nested", "msg_nested"), + start("ses_nested", "msg_nested"), + tool("ses_nested", "msg_nested", "call_nested"), + text("ses_nested", "msg_nested", "Resumed answer"), + finish("ses_nested", "msg_nested"), + ]) + await router.finish() + expect([...files.keys()].sort()).toEqual(["ses_nested", "ses_resumed", "ses_root"]) + expect(manifest(files).map(({ sessionId, parentSessionId }) => ({ sessionId, parentSessionId }))).toEqual([ + { sessionId: "ses_root", parentSessionId: undefined }, + { sessionId: "ses_resumed", parentSessionId: "ses_root" }, + { sessionId: "ses_nested", parentSessionId: "ses_resumed" }, + ]) + assertGeneration(files.get("ses_nested")!, "msg_nested", { output: "Resumed answer", tools: 1, tokens: 3 }) + }) + + test("resuming without child activity retains the child's existing on-disk evidence", async () => { + await using tmp = await tmpdir() + const exporter = new FileExporter(tmp.path, 0) + const firstRoot = Trace.withExporters([exporter]) + firstRoot.startTrace("ses_root", {}) + const first = new RunTracing("ses_root", firstRoot, { get: async () => undefined, children: async () => [] }) + await feed(first, [ + created("ses_child", "ses_root"), + assistant("ses_child", "msg_child"), + request("ses_child"), + start("ses_child", "msg_child"), + tool("ses_child", "msg_child", "call_child"), + text("ses_child", "msg_child", "Earlier child answer"), + finish("ses_child", "msg_child", 7, 11), + ]) + await first.finish() + const childPath = path.join(tmp.path, "ses_child.json") + const before = (await Bun.file(childPath).json()) as TraceFile + + const resumedRoot = Trace.withExporters([exporter]) + expect(await resumedRoot.rehydrateFromFile("ses_root")).toBe(true) + const resumed = new RunTracing("ses_root", resumedRoot, { + get: async () => undefined, + children: async (id) => (id === "ses_root" ? [{ id: "ses_child", parentID: "ses_root" }] : []), + }) + await resumed.seed() + await resumed.finish() + const after = (await Bun.file(childPath).json()) as TraceFile + expect(after.traceId).toBe(before.traceId) + expect(after.startedAt).toBe(before.startedAt) + expect(after.metadata).toEqual(before.metadata) + expect(after.spans.filter((span) => span.kind !== "session")).toEqual( + before.spans.filter((span) => span.kind !== "session"), + ) + expect(after.summary).toMatchObject({ totalGenerations: 1, totalToolCalls: 1, totalTokens: 18 }) + expect(after.summary.tokens).toEqual(before.summary.tokens) + const rootFile = (await Bun.file(path.join(tmp.path, "ses_root.json")).json()) as TraceFile + expect(rootFile.metadata.run!.sessions!.find((entry) => entry.sessionId === "ses_child")!.traceId).toBe( + before.traceId, + ) + }) + + test("task_id reuse links both invocations to one verified child without duplicating events", async () => { + const { router, files } = fixture([{ id: "ses_reused", parentID: "ses_root" }]) + const first = tool("ses_root", "msg_first", "call_first", "task", {}, { task_id: "ses_reused" }) + const second = tool("ses_root", "msg_second", "call_second", "task", { sessionId: "ses_reused" }) + await feed(router, [ + assistant("ses_root", "msg_first"), + start("ses_root", "msg_first"), + first, + first, + finish("ses_root", "msg_first"), + assistant("ses_reused", "msg_child_first"), + start("ses_reused", "msg_child_first"), + text("ses_reused", "msg_child_first", "First answer"), + finish("ses_reused", "msg_child_first"), + assistant("ses_root", "msg_second"), + start("ses_root", "msg_second"), + second, + second, + finish("ses_root", "msg_second"), + assistant("ses_reused", "msg_child_second"), + start("ses_reused", "msg_child_second"), + text("ses_reused", "msg_child_second", "Second answer"), + finish("ses_reused", "msg_child_second"), + ]) + await router.finish() + expect(files.size).toBe(2) + expect(files.get("ses_root")!.summary.totalToolCalls).toBe(2) + expect(files.get("ses_reused")!.summary.totalGenerations).toBe(2) + expect(manifest(files).find((entry) => entry.sessionId === "ses_reused")!.taskLinks).toEqual([ + { sessionId: "ses_root", messageId: "msg_first", callId: "call_first" }, + { sessionId: "ses_root", messageId: "msg_second", callId: "call_second" }, + ]) + }) + + test("events and task links before parent creation replay once after ancestry is established", async () => { + const { router, files } = fixture() + const task = tool("ses_early", "msg_early", "call_early_task", "task", { sessionId: "ses_early_nested" }) + await feed(router, [ + assistant("ses_early", "msg_early"), + start("ses_early", "msg_early"), + task, + created("ses_early_nested", "ses_early"), + assistant("ses_early_nested", "msg_early_nested"), + start("ses_early_nested", "msg_early_nested"), + tool("ses_early_nested", "msg_early_nested", "call_early_nested"), + text("ses_early_nested", "msg_early_nested", "Early nested answer"), + finish("ses_early_nested", "msg_early_nested"), + text("ses_early", "msg_early", "Early answer"), + finish("ses_early", "msg_early"), + created("ses_early", "ses_root"), + ]) + await router.finish() + expect(files.size).toBe(3) + assertGeneration(files.get("ses_early")!, "msg_early", { output: "Early answer", tools: 1, tokens: 3 }) + assertGeneration(files.get("ses_early_nested")!, "msg_early_nested", { + output: "Early nested answer", + tools: 1, + tokens: 3, + }) + expect(manifest(files).find((entry) => entry.sessionId === "ses_early_nested")).toMatchObject({ + parentSessionId: "ses_early", + taskLinks: [{ sessionId: "ses_early", messageId: "msg_early", callId: "call_early_task" }], + }) + }) + + test("unrelated sessions and unverified task targets never enter the trace manifest", async () => { + const { router, files } = fixture([{ id: "ses_outside" }, { id: "ses_outside_child", parentID: "ses_outside" }]) + await feed(router, [ + created("ses_outside"), + created("ses_outside_child", "ses_outside"), + assistant("ses_outside_child", "msg_outside"), + start("ses_outside_child", "msg_outside"), + tool("ses_outside_child", "msg_outside", "call_outside"), + text("ses_outside_child", "msg_outside", "Unrelated answer"), + finish("ses_outside_child", "msg_outside"), + { + type: "session.error", + properties: { sessionID: "ses_outside", error: { name: "APIError", data: { message: "unrelated failure" } } }, + }, + assistant("ses_root", "msg_root"), + start("ses_root", "msg_root"), + tool("ses_root", "msg_root", "call_unverified", "task", { sessionId: "ses_outside_child" }), + text("ses_root", "msg_root", "Root answer"), + finish("ses_root", "msg_root"), + ]) + await router.finish() + expect([...files.keys()]).toEqual(["ses_root"]) + expect(manifest(files).map((entry) => entry.sessionId)).toEqual(["ses_root"]) + assertGeneration(files.get("ses_root")!, "msg_root", { output: "Root answer", tools: 1, tokens: 3 }) + expect(files.get("ses_root")!.summary.status).toBe("completed") + expect(files.get("ses_root")!.summary.error).toBeUndefined() + }) + + test("child failures, cancellations, and unfinished work leave the root outcome independent", async () => { + const { router, files } = fixture() + await feed(router, [ + created("ses_failed", "ses_root"), + created("ses_cancelled", "ses_root"), + created("ses_active", "ses_root"), + { + type: "session.error", + properties: { sessionID: "ses_failed", error: { name: "APIError", data: { message: "provider failure" } } }, + }, + { + type: "session.error", + properties: { + sessionID: "ses_cancelled", + error: { name: "MessageAbortedError", data: { message: "cancelled" } }, + }, + }, + { type: "session.status", properties: { sessionID: "ses_cancelled", status: { type: "idle" } } }, + { type: "session.status", properties: { sessionID: "ses_active", status: { type: "busy" } } }, + assistant("ses_root", "msg_root"), + start("ses_root", "msg_root"), + text("ses_root", "msg_root", "Root result"), + finish("ses_root", "msg_root"), + ]) + await router.finish() + expect(files.get("ses_root")!.summary.status).toBe("completed") + expect(files.get("ses_root")!.summary.error).toBeUndefined() + expect(files.get("ses_failed")!.summary.status).toBe("error") + expect(JSON.parse(files.get("ses_failed")!.summary.error!)).toEqual({ + name: "APIError", + data: { message: "provider failure" }, + }) + expect(files.get("ses_cancelled")!.summary.status).toBe("error") + expect(JSON.parse(files.get("ses_cancelled")!.summary.error!)).toEqual({ + name: "MessageAbortedError", + data: { message: "cancelled" }, + }) + expect(files.get("ses_active")!.summary).toMatchObject({ + status: "error", + error: "The root run ended while this child session was still active.", + }) + }) + + test("providers without reasoning leave it absent and completed events are idempotent", async () => { + const { router, files } = fixture() + const events = [ + assistant("ses_root", "msg_root"), + start("ses_root", "msg_root"), + text("ses_root", "msg_root", "Answer"), + finish("ses_root", "msg_root"), + ] + await feed(router, events) + await feed(router, events) + await router.finish() + const root = files.get("ses_root")! + assertGeneration(root, "msg_root", { output: "Answer", tools: 0, tokens: 3 }) + expect(root.spans.filter((span) => span.name === "reasoning")).toHaveLength(0) + expect(root.summary.tokens.reasoning).toBe(0) + expect(root.metadata.captureOmissions).toHaveLength(3) + }) + + test("crash flushing preserves the root manifest and each child file", async () => { + await using tmp = await tmpdir() + const root = Trace.withExporters([new FileExporter(tmp.path, 0)]) + root.startTrace("ses_root", {}) + const router = new RunTracing("ses_root", root, { get: async () => undefined, children: async () => [] }) + await feed(router, [ + created("ses_child", "ses_root"), + assistant("ses_child", "msg_child"), + start("ses_child", "msg_child"), + ]) + router.flushSync("SIGTERM") + const rootFile = (await Bun.file(path.join(tmp.path, "ses_root.json")).json()) as TraceFile + const childFile = (await Bun.file(path.join(tmp.path, "ses_child.json")).json()) as TraceFile + expect(rootFile.summary.status).toBe("crashed") + expect(childFile.summary.status).toBe("crashed") + expect(rootFile.metadata.run!.sessions!.map((entry) => entry.sessionId)).toEqual(["ses_root", "ses_child"]) + expect(childFile.metadata.run).toEqual({ rootSessionId: "ses_root", parentSessionId: "ses_root" }) + expect(childFile.summary.totalGenerations).toBe(1) + await router.finish("SIGTERM") + }) +}) diff --git a/packages/opencode/test/cli/run/time-budget.test.ts b/packages/opencode/test/cli/run/time-budget.test.ts new file mode 100644 index 0000000000..4a761efe4b --- /dev/null +++ b/packages/opencode/test/cli/run/time-budget.test.ts @@ -0,0 +1,127 @@ +import { describe, expect, test } from "bun:test" +import { RunTimeBudget } from "../../../src/cli/cmd/run-time-budget" + +describe("run time budget", () => { + test.each([0, -1, -0.1, NaN, Infinity, -Infinity, "2", "", null, undefined, true, {}])( + "rejects invalid seconds: %p", + (value) => { + expect(RunTimeBudget.isValidTimeBudget(value)).toBe(false) + }, + ) + + test.each([0.001, 0.5, 1, 900, Number.MAX_VALUE])("accepts positive finite seconds: %p", (value) => { + expect(RunTimeBudget.isValidTimeBudget(value)).toBe(true) + }) + + test("does not fire when no budget is configured", () => { + expect(RunTimeBudget.deadline(900, undefined)).toBeUndefined() + }) + + test.each([ + [0, undefined], + [7.999, undefined], + [8, "soft"], + [9.999, "soft"], + [10, "hard"], + [20, "hard"], + ] as const)("selects the deadline at %p elapsed seconds", (elapsed, expected) => { + expect(RunTimeBudget.deadline(elapsed, 10)).toBe(expected) + }) + + test("handles fractional seconds without rounding away the budget", () => { + expect(RunTimeBudget.deadline(0.399, 0.5)).toBeUndefined() + expect(RunTimeBudget.deadline(0.4, 0.5)).toBe("soft") + expect(RunTimeBudget.deadline(0.5, 0.5)).toBe("hard") + }) + + test("handles a large finite budget without overflowing deadline arithmetic", () => { + expect(RunTimeBudget.deadline(Number.MAX_VALUE * 0.5, Number.MAX_VALUE)).toBeUndefined() + expect(RunTimeBudget.deadline(Number.MAX_VALUE * 0.8, Number.MAX_VALUE)).toBe("soft") + expect(RunTimeBudget.deadline(Number.MAX_VALUE, Number.MAX_VALUE)).toBe("hard") + }) +}) + +// altimate_change start — soft deadlines cancel a live generation and lower real provider request effort +import { Effect } from "effect" +import path from "node:path" +import { SessionTermination } from "../../../src/session/termination" +import { cliIt } from "../../lib/cli-process" +import { reply } from "../../lib/llm-server" +import { testProviderConfig } from "../../lib/test-provider" + +function isSoftBudgetReply(body: Record) { + const messages = body.messages as { role?: string; content?: unknown }[] | undefined + return JSON.stringify(messages?.findLast((message) => message.role === "user")?.content ?? "").includes( + SessionTermination.REPLY_BEFORE_TIME_BUDGET, + ) +} + +describe("opencode run: interrupt in-flight generation at soft time deadline", () => { + for (const downgrade of [true, false]) { + cliIt.live( + `aborts a hanging generation, keeps emitted parts, and sends the nudge with ${downgrade ? "low" : "configured"} effort`, + ({ llm, opencode, home }) => + Effect.gen(function* () { + const outputPath = path.join(home, "answer.md") + const config = testProviderConfig(llm.url) + const model = config.provider.test.models["test-model"] + const answer = "The supported answer is ready; further exploration was interrupted." + const partial = "A useful observation before the deadline." + yield* llm.push(reply().text(partial).reason("Still considering the evidence.").hang()) + yield* llm.textMatch(({ body }) => isSoftBudgetReply(body), answer) + const result = yield* opencode.run("Give the best supported answer.", { + format: "json", + extraArgs: ["--time-budget", "5", "--variant", "high", "--output", outputPath], + bunRun: true, + env: { + ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE: downgrade ? "1" : "0", + OPENCODE_CONFIG_CONTENT: JSON.stringify({ + ...config, + provider: { + test: { + ...config.provider.test, + models: { + "test-model": { + ...model, + id: "o3", + reasoning: true, + variants: { high: { reasoningEffort: "high" }, low: { reasoningEffort: "low" } }, + }, + }, + }, + }, + tracing: { enabled: true, dir: path.join(home, "traces"), maxFiles: 0 }, + }), + }, + timeoutMs: 30_000, + }) + const requests = (yield* llm.inputs).filter( + (body) => !JSON.stringify(body).includes("Generate a title for this conversation"), + ) + expect(requests).toHaveLength(2) + expect(requests[0]!.reasoning_effort).toBe("high") + expect(isSoftBudgetReply(requests[1]!)).toBe(true) + expect(requests[1]!.reasoning_effort).toBe(downgrade ? "low" : "high") + expect(JSON.stringify(requests[1])).toContain(partial) + opencode.expectExit(result, 0) + expect(yield* Effect.promise(() => Bun.file(outputPath).text())).toBe(answer) + const events = opencode.parseJsonEvents(result.stdout) + expect(events.filter((event) => event.type === "time_budget_warning")).toHaveLength(1) + expect(events.filter((event) => event.type === "budget_exhausted")).toHaveLength(0) + expect(events.filter((event) => event.type === "error")).toHaveLength(0) + const saved = events.filter((event) => event.type === "trace_saved") + expect(saved).toHaveLength(1) + const trace = yield* Effect.promise(() => Bun.file(saved[0]!.path as string).json()) + expect(trace.metadata).toMatchObject({ time_budget_s: 5, time_budget_deadline: "soft" }) + expect(trace.metadata.generation_interrupted_at).toBeDefined() + if (downgrade) expect(trace.metadata.effort_downgraded_at).toBeDefined() + else expect(trace.metadata.effort_downgraded_at).toBeUndefined() + expect(trace.metadata.elapsed_s).toBeGreaterThanOrEqual(4) + expect(trace.metadata.elapsed_s).toBeLessThan(5) + expect(yield* llm.pending).toBe(0) + }), + 60_000, + ) + } +}) +// altimate_change end diff --git a/packages/opencode/test/cli/welcome.test.ts b/packages/opencode/test/cli/welcome.test.ts index 0e36ba0be3..bdc3d9f0d0 100644 --- a/packages/opencode/test/cli/welcome.test.ts +++ b/packages/opencode/test/cli/welcome.test.ts @@ -16,6 +16,8 @@ describe("showWelcomeBannerIfNeeded", () => { fs.mkdirSync(dataDir, { recursive: true }) // Set env vars for test isolation + const originalTestHome = process.env.OPENCODE_TEST_HOME + const originalDataHome = process.env.XDG_DATA_HOME process.env.OPENCODE_TEST_HOME = tmpDir process.env.XDG_DATA_HOME = tmpDir @@ -29,8 +31,10 @@ describe("showWelcomeBannerIfNeeded", () => { cleanup = () => { process.stderr.write = originalStderrWrite - delete process.env.OPENCODE_TEST_HOME - delete process.env.XDG_DATA_HOME + if (originalTestHome === undefined) delete process.env.OPENCODE_TEST_HOME + else process.env.OPENCODE_TEST_HOME = originalTestHome + if (originalDataHome === undefined) delete process.env.XDG_DATA_HOME + else process.env.XDG_DATA_HOME = originalDataHome fs.rmSync(tmpDir, { recursive: true, force: true }) } }) diff --git a/packages/opencode/test/e2e-smoke/README.md b/packages/opencode/test/e2e-smoke/README.md new file mode 100644 index 0000000000..a583bd1d2b --- /dev/null +++ b/packages/opencode/test/e2e-smoke/README.md @@ -0,0 +1,76 @@ +# Analyst smoke suite + +From the worktree root: + +```sh +./scripts/analyst-smoke.sh +``` + +This opts into real ChatGPT subscription calls using `openai/gpt-5.6-sol`. +Ordinary `bun test` skips the suite. The wrapper prints a PASS/FAIL/SKIP row per +check and preserves its artifact directory. There are eight CLI conversations: +scenarios 1–6 and 9, plus the wide DuckDB case 2b. Checks 7 and 8 reuse scenario 1. +The runner never retries a scenario. The CLI's own provider retry policy still +applies. Reusing an artifact directory refuses any already-started conversation. + +To check saved evidence after fixing a test bug, without new model calls: + +```sh +ANALYST_SMOKE_REPLAY=/absolute/path/from/previous/run ./scripts/analyst-smoke.sh +``` + +To run only the local fixture/source preflight: + +```sh +./scripts/analyst-smoke.sh --test-name-pattern '^0 ' +``` + +To select cancellation, include its slow-query preflight: + +```sh +./scripts/analyst-smoke.sh --test-name-pattern '^(0 |3 )' +``` + +The preflight runs the exact recursive SQLite query for 121 seconds using +`python3 -I`, then terminates and reaps it. The live cancellation check uses the +actual source CLI and requires a timeout near 15 seconds, a subsequent successful +query, normal CLI exit and an empty process group. SQLite's Python baseline and +Bun driver use separate SQLite builds. + +Every conversation starts a source CLI subprocess from the worktree root: + +```text +bun run --no-env-file --conditions=browser packages/opencode/src/index.ts run + --dir --model openai/gpt-5.6-sol --yolo --agent analyst + --max-turns N --output --format json --print-logs --log-level INFO --trace +``` + +The process has a clean HOME/XDG environment, telemetry disabled, pure mode and +`experimental.auto_mcp_discovery=false`. Only the existing OpenAI OAuth entry is +copied into its private auth store; that copy is removed after exit. The original +store is never changed. Set `ANALYST_SMOKE_AUTH_FILE` if it is outside the standard +XDG data location. Set `ANALYST_SMOKE_ARTIFACTS` to choose where evidence is kept. + +Each run retains `command.json`, `started.json`, `run.json`, `events.jsonl`, +`cli.log`, `output.md`, its trace bundle and its synthetic project. Timeouts are +failures after 300 seconds; the process group is killed and the log attached. +The current SQL helper subprocesses inherit this group, so a group-liveness +check also detects helper processes left alive after CLI exit. No `ps` access is +required. Failure details include the full log in `failure-.txt`. + +The independent fixture oracle reads persisted rows, normalizes sensor IDs in +code and sums integer cents. It never uses the model's SQL. Short reading rows +exercise row limiting and preview clipping; the 100 KB DuckDB cell exercises +byte clipping. Reading a spill is optional, but a read that is attempted must +succeed. Source mode copies the repository's real `data-question` skill into the +temp project; this does not test compiled skill packaging. + +The only capability skips are missing DuckDB/native binding (2b) and an absent +SQLite deadline implementation (3). These dynamic skips are recorded as SKIP in +`results.json` and the wrapper table; Bun itself counts their early return as a +pass. Missing OAuth, connectivity errors, startup failures and timeouts remain +FAIL. The wrapper rejects retry/watch flags and fails if no results were recorded. + +Use the dedicated `bunfig.toml` for direct smoke invocations. It avoids the +package's unit-test preload, which imports product modules and installs mock +provider configuration before any smoke checks can run. diff --git a/packages/opencode/test/e2e-smoke/RUN-REPORT.md b/packages/opencode/test/e2e-smoke/RUN-REPORT.md new file mode 100644 index 0000000000..de24a8b7a6 --- /dev/null +++ b/packages/opencode/test/e2e-smoke/RUN-REPORT.md @@ -0,0 +1,102 @@ +# Analyst smoke run report — 2026-10-11 + +**Completed: 1 PASS, 10 FAIL, 0 SKIP.** Fixtures and source preflight passed. +All eight conversations were launched exactly once. Each failed because this +environment could not connect to the ChatGPT endpoint, before any assistant +text or tool execution. Analyst behavior remains unverified; these are +connectivity failures, not demonstrated analyst regressions. A subsequent replay +checked saved evidence in 35 ms with no new CLI conversations or model calls and +reproduced the same results. + +Artifacts: `/private/tmp/analyst-smoke-once-20261011/`. Each conversation retains +`run.json`, `events.jsonl`, `cli.log`, `output.md`, and its trace directory. + +Previously there was no opt-in suite covering these analyst flows end to end → +the suite now generates synthetic databases, launches the source CLI, checks +events/output/logs/traces, enforces deadlines, checks process cleanup, and prints +PASS/FAIL/SKIP rows. Changes belong only to the smoke suite and wrapper; this +task makes no product-code changes. + +Files: [analyst-smoke.test.ts](analyst-smoke.test.ts), +[fixtures.ts](fixtures.ts), [bunfig.toml](bunfig.toml), [README.md](README.md), +[analyst-smoke.sh](../../../../scripts/analyst-smoke.sh), and this report. + +The wrapper launches from the worktree root using: + +```text +bun run --no-env-file --conditions=browser packages/opencode/src/index.ts run + --dir --model openai/gpt-5.6-sol --yolo --agent analyst + --max-turns N --output --format json --print-logs --log-level INFO --trace +``` + +Every conversation gets isolated HOME/XDG directories and fixture copies, +`ALTIMATE_TELEMETRY_DISABLED=true`, `OPENCODE_PURE=1`, and +`experimental.auto_mcp_discovery=false`. Only the existing OpenAI OAuth entry is +copied into its private auth store and removed afterward. There are eight CLI +conversations, each launched at most once; checks 7 and 8 reuse scenario 1. +The CLI's own transport retries still apply. A 300-second scenario timeout is +a failure with retained logs. Replay rechecks existing artifacts without calls. + +| Check | Expected | Observed | Status | +| --- | --- | --- | --- | +| 0: fixtures/source preflight | Deterministic fixtures, usable source CLI, slow SQL exceeds two minutes | Source help exit 0; slow query still running at 121,002.784 ms, then terminated and reaped; DuckDB fixture available | PASS | +| 1: cross-engine answer | Final `**Answer:**` average within 1e-6; SQL trace | Exit 1 after 61.418 s; API connection error; zero text/tool events; placeholder output | FAIL — connectivity | +| 2: truncation/spill/read | `Preview:` envelope, result path, exact JSONL returned-row count; successful read if attempted | Exit 1 after 61.505 s; same connection error; no SQL or spill | FAIL — connectivity | +| 2b: wide DuckDB cell | 100 KB cell clipped in preview, intact in spill | Driver available; exit 1 after 61.472 s; same connection error before SQL | FAIL — connectivity | +| 3: cancellation | Exact slow SQL times out near 15 s; next query succeeds; CLI and children exit | Exit 1 after 61.422 s; connection error before SQL. Deadline feature and >120 s baseline verified, but CLI cancellation not exercised | FAIL — connectivity | +| 4: subagent | `task` names `data-explorer`; child trace includes its SQL | Exit 1 after 61.520 s; no tool calls or child session | FAIL — connectivity | +| 5: skill | Successful `skill` call returns real `data-question` body | Exit 1 after 61.460 s; no skill call | FAIL — connectivity | +| 6: budget finalization | Exit 1 for budget exhaustion; final text; exactly one finalization generation | Exit 1 after 61.652 s, but reason is `error`, no text/finalization, output is placeholder | FAIL — connectivity | +| 7: JSON output | Scenario 1 output file contains numeric answer, not placeholder | Reused run contains `(no text output — tool-only response)` | FAIL — connectivity | +| 8: no stray MCP | Successful run with discovery disabled and no discovery/MCP-stderr log lines | Config is false and all eight logs have neither forbidden pattern; shared scenario 1 fails the successful-run prerequisite | FAIL — inherited connectivity; isolation evidence passes | +| 9: write denial | Explicit refusal/read-only error and unchanged sensors hash | Exit 1 after 61.456 s; no write attempt or refusal. Sensor hash unchanged | FAIL — connectivity | + +The fixture oracle independently reads persisted rows, normalizes IDs in code, +and sums integer cents: **50,000 north-region readings; average 20.1170434**. +Saved database counts are 300 sensors and 200,000 readings. All eight runs exited +normally without a scenario timeout or surviving process-group member. Their +sensor hashes remained unchanged and all temporary OAuth copies were removed. +They saved root traces and emitted `termination.why_harness_stopped="error"`. +No SQL worker was exercised because no model response reached a tool call. +These observations are recorded in the artifact directory's `evidence-audit.json`. + +Excerpt from scenario 1's `cli.log` (the connection cause, omitting request body): + +```text +"name":"AI_APICallError","cause":{"code":"FailedToOpenSocket","path":"https://chatgpt.com/backend-api/codex/responses","errno":0} +``` + +Other retries recorded `ConnectionRefused`. The final JSON error was +`Cannot connect to API: Unable to connect. Is the computer able to access the url?`. +The SDK event labels its original URL `https://api.openai.com/v1/responses`; +the log's cause records the actual ChatGPT OAuth endpoint above. No assertion +was weakened to accept these failures. + +Validation: + +- Disabled smoke suite: **11 SKIP**, successful exit; no model calls. +- From `packages/opencode`, `bunx tsc --noEmit --strict --skipLibCheck --target ESNext --module Preserve --moduleResolution Bundler --types bun test/e2e-smoke/analyst-smoke.test.ts`: + **PASS**. +- Package `bun run typecheck`: **PASS** on the final run; log at + `/private/tmp/analyst-smoke-once-20261011/typecheck.log`. Earlier concurrent + `sql-check` import/property errors resolved without edits from this task. +- `bash -n scripts/analyst-smoke.sh` and Prettier checks: **PASS**. +- Live command: `ANALYST_SMOKE_ARTIFACTS=/private/tmp/analyst-smoke-once-20261011 ./scripts/analyst-smoke.sh`; + **1 PASS, 10 FAIL**, exit 1, 491.96 seconds. Exactly eight `started.json` records. +- Replay command: `ANALYST_SMOKE_REPLAY=/private/tmp/analyst-smoke-once-20261011 ./scripts/analyst-smoke.sh`; + **same 1 PASS, 10 FAIL**, exit 1. Output retained in `replay.log`. + +The remaining verification requires an environment that can reach the ChatGPT +OAuth endpoint. No analyst product regression can be concluded from this run. +No scenario was re-launched to seek a passing result, and no product code was +changed. Development fixes were limited to test assertions, isolation and +diagnostics. In particular, the sandbox forbids `ps`, so cleanup checks use the +CLI's isolated process group instead. + +The Python SQLite baseline and Bun SQLite driver are different builds. Spill +reading is optional. The skill check uses the real repository skill copied into +the isolated project, so compiled skill packaging is outside this suite. +Capability skips are limited to unavailable DuckDB and an absent SQL deadline; +both capabilities are available in this run. Dynamic SKIPs are authoritative in +the wrapper table/results JSON even though Bun counts their early return as a +passed test. diff --git a/packages/opencode/test/e2e-smoke/analyst-smoke.test.ts b/packages/opencode/test/e2e-smoke/analyst-smoke.test.ts new file mode 100644 index 0000000000..febb8371ab --- /dev/null +++ b/packages/opencode/test/e2e-smoke/analyst-smoke.test.ts @@ -0,0 +1,676 @@ +/** + * Opt-in, real-model smoke tests: scripts/analyst-smoke.sh + * Ordinary `bun test` skips these tests and spends no subscription quota. + * Each CLI scenario runs once; 7/8 inspect scenario 1's recorded run. There are + * no retries. ANALYST_SMOKE_REPLAY=/path/to/artifacts rechecks saved evidence + * without invoking the CLI or model. Never change an assertion to hide a + * product failure. Logs, output, traces and synthetic databases are retained. + * + * SKIPs: not opted in; missing DuckDB binding (2b); missing SQL deadline (3). + * Missing auth, startup errors and scenario timeouts are FAILs, not SKIPs. + * Source mode has no embedded skill bundle: copy the actual repository skill + * into each isolated project. This tests skill loading, not compiled packaging. + */ +import { afterAll, expect, test } from "bun:test" +import { spawn } from "node:child_process" +import { createHash } from "node:crypto" +import { closeSync, openSync } from "node:fs" +import * as fs from "node:fs/promises" +import os from "node:os" +import path from "node:path" +import { assertFinalOutput } from "./output-assertions" +import { createFixtures, SLOW_SQL, verifySlowQuery } from "./fixtures" + +const ROOT = path.resolve(import.meta.dir, "../../../..") +const MODEL = "openai/gpt-5.6-sol" +const TIMEOUT_MS = 300_000 +const QUERY_TIMEOUT_MS = 15_000 +const enabled = process.env.ANALYST_SMOKE_RUN === "1" || !!process.env.ANALYST_SMOKE_REPLAY +const replay = process.env.ANALYST_SMOKE_REPLAY +const artifacts = path.resolve( + replay || process.env.ANALYST_SMOKE_ARTIFACTS || path.join(os.tmpdir(), `analyst-smoke-${process.pid}`), +) +// The wrapper captures this before the package test preload replaces XDG vars. +const authFile = process.env.ANALYST_SMOKE_AUTH_FILE || path.join(os.homedir(), ".local/share/altimate-code/auth.json") +const skillSource = path.join(ROOT, ".opencode/skills/data-question/SKILL.md") +const crossPrompt = + "What is the average temperature across all readings from sensors in region 'north'? " + + "Use sensors_db.sensor and readings_db.reading. Inspect and reconcile their sensor identifier formats. " + + "Compute from raw readings, and end with **Answer:** followed by the numeric average with at least 10 decimal places." + +type Json = Record +type Outcome = { + id: string + directory: string + pid: number + exitCode: number | null + signal: string | null + timedOut: boolean + elapsedMs: number + remainingProcesses: string[] + processInspectionError?: string + sensorsBefore: string + sensorsAfter: string +} +type Run = Outcome & { events: Json[]; output: string; log: string; traces: Json[]; stdout: string } +type Result = { id: string; name: string; status: "PASS" | "FAIL" | "SKIP"; reason?: string; directory?: string } +type FixtureInfo = Awaited> & { deadlineAvailable: boolean; slowVerifiedMs?: number } +const results: Result[] = [] +const runs = new Map>() +let fixturesPromise: Promise | undefined + +async function writeJson(file: string, value: unknown) { + await fs.writeFile(file, JSON.stringify(value, null, 2) + "\n") +} + +async function readJson(file: string) { + return JSON.parse(await fs.readFile(file, "utf8")) +} + +async function hash(file: string) { + return createHash("sha256") + .update(await fs.readFile(file)) + .digest("hex") +} + +async function fixtures(): Promise { + return (fixturesPromise ??= (async () => { + if (replay) return readJson(path.join(artifacts, "fixtures.json")) + await fs.mkdir(artifacts, { recursive: true, mode: 0o700 }) + const saved = path.join(artifacts, "fixtures.json") + if (await Bun.file(saved).exists()) return readJson(saved) + const fixtureDir = path.join(artifacts, "fixtures") + await fs.mkdir(fixtureDir, { recursive: true }) + const info = await createFixtures(fixtureDir) + const policy = await fs.readFile(path.join(ROOT, "packages/drivers/src/query-timeout.ts"), "utf8").catch(() => "") + const sqlite = await fs.readFile(path.join(ROOT, "packages/drivers/src/sqlite.ts"), "utf8") + const manifest: FixtureInfo = { + ...info, + deadlineAvailable: policy.includes("ALTIMATE_SQL_QUERY_TIMEOUT_MS") && sqlite.includes("resolveQueryTimeout"), + } + await writeJson(path.join(artifacts, "fixtures.json"), manifest) + return manifest + })()) +} + +function childEnvironment(home: string): NodeJS.ProcessEnv { + // An allowlist avoids inheriting test mocks, model paths, provider keys, MCP + // configuration, and the package preload's global database into the CLI. + const env: NodeJS.ProcessEnv = {} + for (const name of ["PATH", "TMPDIR", "TMP", "TEMP", "LANG", "LC_ALL", "SSL_CERT_FILE", "SSL_CERT_DIR"]) { + if (process.env[name]) env[name] = process.env[name] + } + return { + ...env, + HOME: home, + XDG_DATA_HOME: path.join(home, "share"), + XDG_CACHE_HOME: path.join(home, "cache"), + XDG_CONFIG_HOME: path.join(home, "config"), + XDG_STATE_HOME: path.join(home, "state"), + XDG_CONFIG_DIRS: path.join(home, "config-dirs"), + XDG_DATA_DIRS: path.join(home, "data-dirs"), + OPENCODE_TEST_HOME: home, + OPENCODE_TEST_STATE_HOME: path.join(home, "state"), + OPENCODE_TEST_MANAGED_CONFIG_DIR: path.join(home, "managed"), + OPENCODE_PURE: "1", + ALTIMATE_TELEMETRY_DISABLED: "true", + ALTIMATE_DISABLE_WORKSPACE: "1", + ALTIMATE_CODE_DISABLE_OS_CREDENTIAL_STORE: "1", + OPENCODE_DISABLE_MODELS_FETCH: "1", + NO_COLOR: "1", + TERM: "dumb", + } +} + +async function processGroup(pid: number): Promise { + // The CLI is a session/process-group leader; LocalEngine's Bun helpers inherit + // this group (their spawn does not detach). kill(0) probes every remaining + // member, including reparented orphans, without needing sandbox-blocked ps. + try { + process.kill(-pid, 0) + return [`process group ${pid} still has a live CLI descendant`] + } catch (error: any) { + if (error.code === "ESRCH") return [] + throw error + } +} + +function killGroup(pid: number, signal: NodeJS.Signals) { + try { + process.kill(-pid, signal) + } catch (error: any) { + if (error.code !== "ESRCH") throw error + } +} + +async function launch(args: string[], directory: string, env: NodeJS.ProcessEnv, timeoutMs = TIMEOUT_MS) { + const out = openSync(path.join(directory, "events.jsonl"), "w", 0o600) + const err = openSync(path.join(directory, "cli.log"), "w", 0o600) + const started = Date.now() + const child = spawn( + process.execPath, + ["run", "--no-env-file", "--conditions=browser", "packages/opencode/src/index.ts", ...args], + { + cwd: ROOT, + env, + detached: true, + stdio: ["ignore", out, err], + }, + ) + closeSync(out) + closeSync(err) + let timedOut = false + let hardKill: ReturnType | undefined + const timer = setTimeout(() => { + timedOut = true + if (!child.pid) return + killGroup(child.pid, "SIGTERM") + hardKill = setTimeout(() => killGroup(child.pid!, "SIGKILL"), 1500) + }, timeoutMs) + let exited: { exitCode: number | null; signal: string | null } + try { + exited = await new Promise((resolve, reject) => { + child.once("error", reject) + child.once("exit", (exitCode, signal) => resolve({ exitCode, signal })) + }) + } finally { + clearTimeout(timer) + if (hardKill) clearTimeout(hardKill) + } + const pid = child.pid! + let remainingProcesses: string[] = [] + let processInspectionError: string | undefined + try { + const until = Date.now() + 2000 + do { + remainingProcesses = await processGroup(pid) + if (!remainingProcesses.length) break + await Bun.sleep(50) + } while (Date.now() < until) + } catch (error) { + processInspectionError = String(error) + } finally { + // Capture leaks before cleaning up, so cleanup cannot turn a failure green. + killGroup(pid, "SIGKILL") + } + return { pid, ...exited, timedOut, elapsedMs: Date.now() - started, remainingProcesses, processInspectionError } +} + +async function loadRun(id: string): Promise { + const directory = path.join(artifacts, id) + const outcome: Outcome = await readJson(path.join(directory, "run.json")) + const stdout = await fs.readFile(path.join(directory, "events.jsonl"), "utf8") + const log = await fs.readFile(path.join(directory, "cli.log"), "utf8") + const output = await fs.readFile(path.join(directory, "output.md"), "utf8").catch(() => "") + // Keep diagnostics available for assertion failures even when startup emitted + // non-JSON text. common() explicitly rejects malformed event streams. + const events = stdout + .split("\n") + .filter(Boolean) + .flatMap((line) => { + try { + return [JSON.parse(line)] + } catch { + return [] + } + }) + const traces = [] + for (const file of await fs.readdir(path.join(directory, "traces")).catch(() => [])) { + if (file.endsWith(".json")) traces.push(await readJson(path.join(directory, "traces", file))) + } + return { ...outcome, directory, stdout, log, output, events, traces } +} + +function run(id: string, prompt: string, turns = 12, extraEnv: NodeJS.ProcessEnv = {}): Promise { + const cached = runs.get(id) + if (cached) return cached + const promise = (async () => { + if (replay) return loadRun(id) + const fixture = await fixtures() + const directory = path.join(artifacts, id) + await fs.mkdir(directory, { recursive: true }) + // Fail closed when a caller reuses an artifact directory; never spend quota + // twice accidentally. Use replay for fixing test bugs against this evidence. + await fs.writeFile(path.join(directory, "started.json"), JSON.stringify({ prompt, turns, model: MODEL }), { + flag: "wx", + }) + const project = path.join(directory, "project") + const home = path.join(directory, "home") + const traces = path.join(directory, "traces") + const authDestination = path.join(home, "share/altimate-code/auth.json") + await fs.mkdir(path.join(project, ".altimate-code"), { recursive: true }) + await fs.mkdir(path.join(home, "share/altimate-code"), { recursive: true, mode: 0o700 }) + await fs.mkdir(traces, { recursive: true }) + const sensors = path.join(project, "sensors.db") + const readings = path.join(project, "readings.db") + await fs.copyFile(fixture.sensors, sensors) + await fs.copyFile(fixture.readings, readings) + const connections: Json = { + sensors_db: { type: "sqlite", path: sensors, readonly: true }, + readings_db: { type: "sqlite", path: readings, readonly: true }, + } + if (fixture.wide) { + const wide = path.join(project, "wide.duckdb") + await fs.copyFile(fixture.wide, wide) + connections.wide_db = { type: "duckdb", path: wide, readonly: true } + } + await writeJson(path.join(project, ".altimate-code/connections.json"), connections) + await fs.mkdir(path.join(project, ".opencode/skills/data-question"), { recursive: true }) + await fs.copyFile(skillSource, path.join(project, ".opencode/skills/data-question/SKILL.md")) + await writeJson(path.join(project, "opencode.json"), { + model: MODEL, + enabled_providers: ["openai"], + // The committed dev model snapshot predates this subscription model. + provider: { + openai: { models: { "gpt-5.6-sol": { name: "GPT-5.6 Sol", limit: { context: 400000, output: 32768 } } } }, + }, + experimental: { auto_mcp_discovery: false }, + tracing: { enabled: true, dir: traces, maxFiles: 0 }, + share: "disabled", + }) + const sensorsBefore = await hash(sensors) + try { + // Copy only the existing subscription entry, never print it, and remove + // the isolated copy in finally. Other provider credentials stay outside. + const auth = await readJson(authFile) + if (auth.openai?.type !== "oauth") + throw new Error("OpenAI subscription OAuth is missing from ANALYST_SMOKE_AUTH_FILE") + await fs.writeFile(authDestination, JSON.stringify({ openai: auth.openai }), { mode: 0o600 }) + const args = [ + "run", + "--dir", + project, + "--model", + MODEL, + "--yolo", + "--agent", + "analyst", + "--max-turns", + String(turns), + "--output", + path.join(directory, "output.md"), + "--format", + "json", + "--print-logs", + "--log-level", + "INFO", + "--trace", + prompt, + ] + await writeJson(path.join(directory, "command.json"), { cwd: ROOT, executable: process.execPath, args, home }) + const execution = await launch(args, directory, { ...childEnvironment(home), ...extraEnv }) + await writeJson(path.join(directory, "run.json"), { + id, + directory, + ...execution, + sensorsBefore, + sensorsAfter: await hash(sensors), + }) + return loadRun(id) + } finally { + await fs.rm(authDestination, { force: true }) + } + })() + runs.set(id, promise) + return promise +} + +function tools(run: Run, name: string): Json[] { + return run.events.filter((event) => event.type === "tool_use" && event.part?.tool === name).map((event) => event.part) +} + +function rootTrace(run: Run): Json { + const saved = run.events.find((event) => event.type === "trace_saved") + expect(saved, "JSON stream must name the trace artifact").toBeDefined() + const root = run.traces.find((trace) => trace.sessionId === saved!.sessionID) + expect(root, "Root trace must exist and match the JSON session").toBeDefined() + expect(path.resolve(saved!.path)).toBe(path.join(run.directory, "traces", `${root!.sessionId}.json`)) + return root! +} + +function common(run: Run, expectedExit = 0) { + expect(run.timedOut, `CLI exceeded ${TIMEOUT_MS}ms; log: ${run.directory}/cli.log`).toBe(false) + expect(run.signal, "CLI must exit normally").toBeNull() + expect(run.exitCode, `CLI exit status; log: ${run.directory}/cli.log`).toBe(expectedExit) + expect(run.processInspectionError).toBeUndefined() + expect(run.remainingProcesses, "CLI children remained alive after exit (recorded before forced cleanup)").toEqual([]) + expect(run.stdout.trim().length, "JSON event stream is empty").toBeGreaterThan(0) + for (const line of run.stdout.trim().split("\n")) + expect(() => JSON.parse(line), `Non-JSON stdout: ${line.slice(0, 300)}`).not.toThrow() + expect(run.events.some((event) => event.type === "termination")).toBe(true) + expect(run.log.trim().length, "--print-logs must capture the INFO log").toBeGreaterThan(0) + expect(run.log).not.toMatch(/Discovering MCP servers|mcp stderr/i) + expect(run.output.trim().length, "--output must contain a response").toBeGreaterThan(0) + expect(run.output).not.toMatch(/\(no text output[^\n]*tool-only response\)/i) + assertFinalOutput(run.events, run.output) + const trace = rootTrace(run) + expect(trace.spans.length).toBeGreaterThan(0) + expect(trace.metadata.agent).toBe("analyst") + expect(trace.metadata.model).toBe(MODEL) +} + +function answer(run: Run, expected: number) { + const lines = [...run.output.matchAll(/^\*\*Answer:\*\*\s*(.+)$/gm)] + expect(lines.length, "Expected a final **Answer:** line in --output").toBeGreaterThan(0) + // The answer can quote earlier results; grade only the final + // declared answer, never an alternate number elsewhere in the transcript. + const match = lines.at(-1)![1].match(/[-+]?\d+(?:\.\d+)?(?:e[-+]?\d+)?/i) + expect(match, "Answer line must contain the computed numeric average").not.toBeNull() + const actual = Number(match![0]) + expect(Math.abs(actual - expected), `Expected ${expected}, observed ${actual}; tolerance 1e-6`).toBeLessThanOrEqual( + 1e-6, + ) +} + +async function assertSpill(run: Run, wide = false) { + const part = tools(run, "sql_execute").find( + (part) => + part.state.input.warehouse === (wide ? "wide_db" : "readings_db") && + /^\s*SELECT\s+\*/i.test(part.state.input.query), + ) + expect(part, "Expected SELECT * sql_execute call").toBeDefined() + const { output, metadata, status } = part!.state + expect(status).toBe("completed") + expect(output.startsWith("Preview:")).toBe(true) + expect(metadata.output_truncated).toBe(true) + expect(metadata.row_limited).toBe(!wide) + expect(typeof metadata.result_path).toBe("string") + expect(output).toContain(metadata.result_path) + expect(metadata.rows_returned).toBeGreaterThan(0) + expect(metadata.rows_returned).toBeLessThanOrEqual(wide ? 1 : 10_000) + expect(Buffer.byteLength(output)).toBeLessThanOrEqual(16 * 1024) + const real = await fs.realpath(metadata.result_path) + expect( + real.startsWith((await fs.realpath(run.directory)) + path.sep), + "Spill must remain inside the isolated run", + ).toBe(true) + const rows = (await fs.readFile(real, "utf8")) + .trimEnd() + .split("\n") + .map((line) => JSON.parse(line)) + expect(rows).toHaveLength(metadata.rows_returned) + for (const row of rows) { + expect(row.columns).toEqual(wide ? ["payload"] : ["sid", "temp"]) + expect(row.values).toHaveLength(wide ? 1 : 2) + } + if (wide) { + expect(output).toMatch(/cell clipped/) + expect(rows[0].values[0]).toBe("w".repeat(100 * 1024)) + } else { + expect(metadata.rows_returned).toBeLessThan(200_000) + expect(metadata.preview_rows).toBeLessThan(metadata.rows_returned) + } + expect(rootTrace(run).spans.some((span: Json) => span.kind === "tool" && span.name === "sql_execute")).toBe(true) + // Reading the spill is optional. If attempted, it must succeed. + for (const read of tools(run, "read")) { + if (read.state.input.filePath === metadata.result_path) expect(read.state.status).toBe("completed") + } +} + +async function saveResults() { + await fs.mkdir(artifacts, { recursive: true, mode: 0o700 }) + await writeJson(path.join(artifacts, "results.json"), results) +} + +function logExcerpt(log: string) { + // Provider errors can include an entire tool catalogue on one line. Keep the + // terminal excerpt useful; failure-.txt and cli.log retain the full log. + const errors = log.split("\n").filter((line) => /\[ERROR\]|\[WARN\]|^error:|^Error:/.test(line)) + return errors.length + ? errors + .slice(-6) + .map((line) => line.slice(0, 800)) + .join("\n") + : log.slice(-3000) +} + +function scenario(id: string, name: string, check: () => Promise, skip?: () => Promise) { + if (!enabled) { + test.skip(`${id} ${name} [opt in with scripts/analyst-smoke.sh]`, () => {}) + return + } + test( + `${id} ${name}`, + async () => { + const directory = path.join(artifacts, id === "7" || id === "8" ? "1" : id) + try { + const reason = await skip?.() + if (reason) { + results.push({ id, name, status: "SKIP", reason }) + console.log(`SKIP ${id} ${name}: ${reason}`) + return + } + await check() + results.push({ id, name, status: "PASS", directory }) + } catch (error: any) { + const reason = error?.message || String(error) + results.push({ id, name, status: "FAIL", reason, directory }) + const log = await fs.readFile(path.join(directory, "cli.log"), "utf8").catch(() => "(CLI did not reach launch)") + await fs.writeFile(path.join(artifacts, `failure-${id}.txt`), `${reason}\n\nLog: ${directory}/cli.log\n${log}`) + throw new Error(`${reason}\nArtifacts: ${directory}\nLog excerpt:\n${logExcerpt(log)}`, { cause: error }) + } finally { + await saveResults() + } + }, + TIMEOUT_MS + 45_000, + ) +} + +scenario("0", "fixture/source preflight (no model calls)", async () => { + const info = await fixtures() + expect(Number.isFinite(info.expectedAverage)).toBe(true) + expect(info.northReadings).toBeGreaterThan(0) + const directory = path.join(artifacts, "0") + const file = path.join(directory, "preflight.json") + if (!replay && !(await Bun.file(file).exists())) { + await fs.mkdir(directory, { recursive: true }) + const [help, slow] = await Promise.all([ + launch(["run", "--help"], directory, childEnvironment(path.join(directory, "home")), 45_000), + info.deadlineAvailable && !info.slowVerifiedMs ? verifySlowQuery(directory) : Promise.resolve(undefined), + ]) + await writeJson(file, help) + if (slow) { + info.slowVerifiedMs = slow.verifiedMs + await writeJson(path.join(artifacts, "fixtures.json"), info) + } + } + if (info.deadlineAvailable) expect(info.slowVerifiedMs).toBeGreaterThan(120_000) + const help = await readJson(file) + expect(help.timedOut).toBe(false) + expect(help.exitCode).toBe(0) + expect(help.processInspectionError).toBeUndefined() + expect(help.remainingProcesses).toEqual([]) + const output = + (await fs.readFile(path.join(directory, "events.jsonl"), "utf8")) + + (await fs.readFile(path.join(directory, "cli.log"), "utf8")) + for (const flag of ["--agent", "--max-turns", "--format", "--output"]) expect(output).toContain(flag) +}) + +scenario("1", "cross-engine answer", async () => { + const result = await run("1", crossPrompt, 18) + common(result) + answer(result, (await fixtures()).expectedAverage) + expect(tools(result, "sql_execute").length).toBeGreaterThan(0) + expect(rootTrace(result).spans.some((span: Json) => span.kind === "tool" && span.name === "sql_execute")).toBe(true) +}) + +scenario("2", "truncation envelope, spill and optional read", async () => { + const result = await run( + "2", + "List every reading row from readings_db.reading. First execute SELECT * FROM reading using sql_execute with limit 10000. Report the preview's returned-row count and result_path; do not paginate or claim the preview is complete. You may read the first few lines of the spill. End with a concise answer.", + 6, + ) + common(result) + await assertSpill(result) +}) + +scenario( + "2b", + "wide DuckDB cell byte clipping", + async () => { + const result = await run( + "2b", + "Execute SELECT * FROM wide on wide_db using sql_execute. Report whether the text cell was clipped and provide the result_path. Do not print the full cell or repeat the query.", + 4, + ) + common(result) + await assertSpill(result, true) + }, + async () => (await fixtures()).wideSkip, +) + +scenario( + "3", + "SQL cancellation, next query and child cleanup", + async () => { + const info = await fixtures() + expect( + info.slowVerifiedMs, + "Preflight must prove this query runs for more than two minutes without a deadline", + ).toBeGreaterThan(120_000) + const result = await run( + "3", + `Run exactly this SQL and report the error or result: ${SLOW_SQL};\nUse sensors_db. After it returns an error or result, run SELECT 1 AS ok on sensors_db in the same session to confirm the connection still works. Do not rewrite the first SQL or retry it. Do not pass query_timeout_ms to sql_execute: the deadline under test comes from the environment, and a per-call value overrides it.`, + 6, + { ALTIMATE_SQL_QUERY_TIMEOUT_MS: String(QUERY_TIMEOUT_MS) }, + ) + common(result) + const calls = tools(result, "sql_execute") + const slow = calls.find((part) => part.state.input.query.trim().replace(/;$/, "") === SLOW_SQL) + expect(slow, "Agent must execute the exact slow query").toBeDefined() + expect(JSON.stringify(slow!.state)).toMatch(/QUERY_TIMEOUT|execution deadline|timed? out/i) + const duration = slow!.state.time.end - slow!.state.time.start + // The model may legitimately pass its own per-call deadline, which outranks the + // environment value; whichever applied, the query must stop close to it and far + // below the 120 s default. + const perCall = slow!.state.input.query_timeout_ms + const applied = typeof perCall === "number" && perCall > 0 ? perCall : QUERY_TIMEOUT_MS + expect(applied, "the applied deadline must be a short one, not the 120 s default").toBeLessThan(60_000) + expect(duration).toBeGreaterThanOrEqual(applied - 500) + expect(duration, `Timeout must return close to the applied ${applied} ms deadline`).toBeLessThan(applied + 5000) + const next = calls.find( + (part) => /SELECT\s+1\s+AS\s+ok/i.test(part.state.input.query) && part.state.time.start >= slow!.state.time.end, + ) + expect(next, "A subsequent fast query must execute after cancellation").toBeDefined() + expect(next!.state.input.warehouse).toBe("sensors_db") + expect(next!.state.status).toBe("completed") + expect(next!.state.metadata.error).toBeUndefined() + expect(next!.state.output).toMatch(/\bok\b[\s\S]*\b1\b/) + expect(result.output).toMatch(/timeout|timed out|deadline|cancel/i) + }, + async () => + (await fixtures()).deadlineAvailable + ? undefined + : "ALTIMATE_SQL_QUERY_TIMEOUT_MS is absent from the SQLite driver in this tree", +) + +scenario("4", "data-explorer child SQL trace bundle", async () => { + const result = await run( + "4", + "Use the task tool to delegate this sub-question to the data-explorer subagent: execute SELECT COUNT(*) AS sensor_count FROM sensor on sensors_db with sql_execute and report the count. Wait for its result, then answer with the count. The subagent must query the database itself.", + 8, + ) + common(result) + const task = tools(result, "task").find((part) => part.state.input.subagent_type === "data-explorer") + expect(task, "Expected delegation to data-explorer").toBeDefined() + expect(task!.state.status).toBe("completed") + const childId = task!.state.metadata.sessionId + expect(typeof childId).toBe("string") + const root = rootTrace(result) + expect( + root.metadata.run.sessions.some( + (session: Json) => session.sessionId === childId && session.parentSessionId === root.sessionId, + ), + ).toBe(true) + const child = result.traces.find((trace) => trace.sessionId === childId) + expect(child, "Trace bundle must include the actual child session").toBeDefined() + expect(child!.metadata.run.parentSessionId).toBe(root.sessionId) + expect( + child!.spans.some( + (span: Json) => span.kind === "tool" && span.name === "sql_execute" && span.attributes.sessionId === childId, + ), + ).toBe(true) + expect(result.output).toMatch(/\b300\b/) +}) + +scenario("5", "data-question skill body loads", async () => { + const result = await run( + "5", + "Use the data-question skill, then answer: How many sensors are in sensors_db.sensor? Load the skill using the skill tool before querying.", + 8, + ) + common(result) + const skill = tools(result, "skill").find((part) => part.state.input.name === "data-question") + expect(skill, "Expected skill tool invocation for data-question").toBeDefined() + expect(skill!.state.status).toBe("completed") + expect(skill!.state.output).toContain('') + const body = ( + await fs.readFile(path.join(result.directory, "project/.opencode/skills/data-question/SKILL.md"), "utf8") + ) + .replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n/, "") + .trim() + expect(skill!.state.output, "Tool must return the skill body, not only the catalogue entry").toContain(body) + expect(result.output).toMatch(/\b300\b/) +}) + +scenario("6", "budget-ending answer finalizes exactly once", async () => { + const result = await run( + "6", + "Perform these four SQL tool calls sequentially on sensors_db, one per turn and never combined or parallel: (1) SELECT count(*) FROM sensor (the table is named exactly `sensor`); (2) use the previous count in SELECT + 1 AS n; (3) use that returned n in SELECT + 1 AS n; (4) use that returned n in SELECT + 1 AS n. Do not give an answer until all four results are available. If interrupted, honestly state what remains undetermined.", + 2, + ) + common(result, 1) + expect(result.events.filter((event) => event.type === "budget_exhausted")).toHaveLength(1) + expect(result.events.filter((event) => event.type === "silent_turn_reply")).toHaveLength(1) + expect(result.events.find((event) => event.type === "termination")?.why_harness_stopped).toBe("budget-exhausted") + const spans: Json[] = rootTrace(result).spans + const prompts = spans.filter( + (span) => + span.name === "synthetic-prompt" && String(span.input).startsWith("The run's work budget has been exhausted."), + ) + expect(prompts, "Exactly one budget finalization prompt must run").toHaveLength(1) + const afterPrompt = spans.slice(spans.indexOf(prompts[0]) + 1) + expect( + afterPrompt.filter((span) => span.kind === "generation"), + "Exactly one finalization generation must run", + ).toHaveLength(1) + expect(result.output).toMatch( + /\*\*Answer:\*\*|unable|incomplete|undetermined|could not|couldn't|cannot|not completed/i, + ) +}) + +scenario("7", "JSON mode writes the answer to --output", async () => { + const result = await run("1", crossPrompt, 18) + common(result) + answer(result, (await fixtures()).expectedAverage) + expect(result.events.some((event) => event.type === "text" && event.part.text.includes("**Answer:**"))).toBe(true) +}) + +scenario("8", "no stray MCP discovery or startup", async () => { + const result = await run("1", crossPrompt, 18) + common(result) + const config = await readJson(path.join(result.directory, "project/opencode.json")) + expect(config.experimental.auto_mcp_discovery).toBe(false) + expect(result.log).not.toMatch(/Discovering MCP servers|mcp stderr/i) +}) + +scenario("9", "analyst denies writes without changing fixture", async () => { + const result = await run( + "9", + "Use sql_execute on sensors_db to run CREATE TABLE analyst_smoke_write_probe (id INTEGER). Report whether the operation was allowed or refused, and why. Do not try another tool or connection to work around a refusal.", + 5, + ) + common(result) + const evidence = result.output + "\n" + JSON.stringify(tools(result, "sql_execute")) + expect(evidence).toMatch( + /denied|read.only|not (?:allowed|permitted)|cannot.*(?:creat|writ)|refus|(?:don't|do not) have permission/i, + ) + expect(result.sensorsAfter, "Read-only sensors fixture changed").toBe(result.sensorsBefore) +}) + +afterAll(async () => { + if (enabled) { + await saveResults() + console.log(`Analyst smoke artifacts: ${artifacts}`) + } +}) diff --git a/packages/opencode/test/e2e-smoke/bunfig.toml b/packages/opencode/test/e2e-smoke/bunfig.toml new file mode 100644 index 0000000000..ff4d2a6896 --- /dev/null +++ b/packages/opencode/test/e2e-smoke/bunfig.toml @@ -0,0 +1,4 @@ +# Keep the smoke runner independent of the product unit-test preload. The real +# product is loaded only in the source CLI subprocess, whose failures are saved. +[test] +root = "." diff --git a/packages/opencode/test/e2e-smoke/fixtures.ts b/packages/opencode/test/e2e-smoke/fixtures.ts new file mode 100644 index 0000000000..2af1db609f --- /dev/null +++ b/packages/opencode/test/e2e-smoke/fixtures.ts @@ -0,0 +1,229 @@ +import { Database } from "bun:sqlite" +import { spawn } from "node:child_process" +import { existsSync, mkdirSync, writeFileSync } from "node:fs" +import { createRequire } from "node:module" +import path from "node:path" + +export const SLOW_SQL = + "WITH RECURSIVE c(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM c WHERE x < 4000000000) SELECT count(*) AS n FROM c" + +export interface Fixtures { + sensors: string + readings: string + wide?: string + wideSkip?: string + expectedAverage: number + northReadings: number + slowSql: string +} + +/** Seeded integer arithmetic keeps both the data and the independent oracle repeatable. */ +export async function createFixtures(dir: string): Promise { + mkdirSync(dir, { recursive: true }) + const sensors = path.resolve(dir, "sensors.db") + const readings = path.resolve(dir, "readings.db") + for (const file of [sensors, readings, path.resolve(dir, "wide.duckdb")]) { + if (existsSync(file)) throw new Error(`Refusing to overwrite existing fixture: ${file}`) + } + + const regions = ["north", "south", "east", "west"] + const sensorDb = new Database(sensors, { create: true }) + try { + sensorDb.exec("CREATE TABLE sensor(sensor_id TEXT, region TEXT)") + const insert = sensorDb.prepare("INSERT INTO sensor VALUES (?, ?)") + sensorDb.transaction(() => { + for (let i = 1; i <= 300; i++) insert.run(`S-${String(i).padStart(3, "0")}`, regions[(i - 1) % 4]!) + })() + } finally { + sensorDb.close() + } + + let seed = 0x51a7c0de + const next = () => (seed = (Math.imul(seed, 1664525) + 1013904223) >>> 0) + const readingDb = new Database(readings, { create: true }) + try { + readingDb.exec("CREATE TABLE reading(sid TEXT, temp REAL)") + const insert = readingDb.prepare("INSERT INTO reading VALUES (?, ?)") + readingDb.transaction(() => { + for (let i = 0; i < 200_000; i++) { + const sensor = (i % 300) + 1 + const cents = (next() % 6001) - 1000 + insert.run(`s${String(sensor).padStart(3, "0")}`, cents / 100) + } + })() + } finally { + readingDb.close() + } + + // Read the persisted files, normalize keys in code, and sum integer cents. The + // oracle does not share a SQL join or aggregation with the analyst's answer. + const normalize = (id: string) => id.toLowerCase().replaceAll("-", "") + const north = new Set() + const savedSensors = new Database(sensors, { readonly: true }) + try { + for (const row of savedSensors.query<{ sensor_id: string; region: string }, []>("SELECT * FROM sensor").iterate()) { + if (row.region === "north") north.add(normalize(row.sensor_id)) + } + } finally { + savedSensors.close() + } + let northReadings = 0 + let northCents = 0 + const savedReadings = new Database(readings, { readonly: true }) + try { + for (const row of savedReadings.query<{ sid: string; temp: number }, []>("SELECT * FROM reading").iterate()) { + if (!north.has(normalize(row.sid))) continue + northReadings++ + northCents += Math.round(row.temp * 100) + } + } finally { + savedReadings.close() + } + + const result: Fixtures = { + sensors, + readings, + expectedAverage: northCents / northReadings / 100, + northReadings, + slowSql: SLOW_SQL, + } + // Resolve from the dev driver's package, never a globally installed CLI. + const requireDriver = createRequire(new URL("../../../drivers/package.json", import.meta.url)) + let duckdb: any + try { + duckdb = requireDriver(requireDriver.resolve("duckdb")) + } catch (error) { + const code = (error as NodeJS.ErrnoException).code + const message = error instanceof Error ? error.message : String(error) + if ( + code === "MODULE_NOT_FOUND" || + code === "ERR_MODULE_NOT_FOUND" || + code === "ERR_DLOPEN_FAILED" || + /Could not locate the bindings file|dlopen\(|invalid ELF|incompatible architecture/i.test(message) + ) { + result.wideSkip = `DuckDB dev package/native binding unavailable: ${message}` + return result + } + throw error + } + + const wide = path.resolve(dir, "wide.duckdb") + let wideDb: any + try { + await new Promise((resolve, reject) => { + wideDb = new duckdb.Database(wide, (error: Error | null) => (error ? reject(error) : resolve())) + }) + const run = (sql: string, ...values: unknown[]) => + new Promise((resolve, reject) => { + wideDb.run(sql, ...values, (error: Error | null) => (error ? reject(error) : resolve())) + }) + await run("CREATE TABLE wide(payload TEXT)") + await run("INSERT INTO wide VALUES (?)", "w".repeat(100 * 1024)) + } finally { + if (wideDb) { + await new Promise((resolve, reject) => { + wideDb.close((error: Error | null) => (error ? reject(error) : resolve())) + }) + } + } + result.wide = wide + return result +} + +/** Prove the exact SQL is still running after two minutes without a deadline. */ +export async function verifySlowQuery(directory: string): Promise<{ verifiedMs: number; log: string }> { + mkdirSync(directory, { recursive: true }) + const log = path.resolve(directory, "slow-query-baseline.log") + const python = [ + "import sqlite3, sys, time", + "connection = sqlite3.connect(':memory:')", + "print('READY', flush=True)", + "started = time.monotonic()", + "result = connection.execute(sys.argv[1]).fetchone()", + "print('FINISHED', time.monotonic() - started, result, flush=True)", + "connection.close()", + ].join("\n") + const child = spawn("python3", ["-I", "-c", python, SLOW_SQL], { + cwd: directory, + stdio: ["ignore", "pipe", "pipe"], + }) + let output = "" + let ended = false + let readyAt = 0 + let verifiedMs = 0 + let failure: unknown + let resolveReady!: () => void + let rejectReady!: (error: Error) => void + const ready = new Promise((resolve, reject) => { + resolveReady = resolve + rejectReady = reject + }) + const exited = new Promise((resolve) => { + child.once("error", (error) => { + ended = true + rejectReady(error) + resolve() + }) + child.once("exit", () => { + ended = true + rejectReady(new Error("Slow-query baseline exited before readiness")) + resolve() + }) + }) + child.stdout.on("data", (chunk: Buffer) => { + output += chunk.toString() + if (!readyAt && output.includes("READY\n")) { + readyAt = performance.now() + resolveReady() + } + }) + child.stderr.on("data", (chunk: Buffer) => (output += chunk.toString())) + async function finishesWithin(ms: number): Promise { + let timer: ReturnType | undefined + try { + return await Promise.race([ + exited.then(() => true), + new Promise((resolve) => (timer = setTimeout(() => resolve(false), ms))), + ]) + } finally { + clearTimeout(timer) + } + } + let readinessTimer: ReturnType | undefined + try { + await Promise.race([ + ready, + new Promise((_, reject) => { + readinessTimer = setTimeout(() => reject(new Error("Slow-query baseline did not become ready in 10s")), 10_000) + }), + ]) + clearTimeout(readinessTimer) + if (await finishesWithin(121_000)) throw new Error("Slow-query fixture finished within two minutes") + verifiedMs = performance.now() - readyAt + } catch (error) { + failure = error + } finally { + clearTimeout(readinessTimer) + if (!ended) { + child.kill("SIGTERM") + if (!(await finishesWithin(2_000))) { + child.kill("SIGKILL") + if (!(await finishesWithin(2_000))) + failure = new Error("Slow-query baseline process did not exit after SIGKILL") + } + } + output += `\nVerified running for ${verifiedMs}ms; exit=${child.exitCode}; signal=${child.signalCode}\n` + if (failure) output += `ERROR: ${String(failure)}\n` + writeFileSync(log, output) + writeFileSync( + path.resolve(directory, "slow-query-baseline.json"), + JSON.stringify( + { sql: SLOW_SQL, verifiedMs, exited: ended, exitCode: child.exitCode, signal: child.signalCode, log }, + null, + 2, + ), + ) + } + if (failure) throw new Error(`${String(failure)}; log: ${log}`) + return { verifiedMs, log } +} diff --git a/packages/opencode/test/e2e-smoke/output-assertions.test.ts b/packages/opencode/test/e2e-smoke/output-assertions.test.ts new file mode 100644 index 0000000000..7ddfd3ac1c --- /dev/null +++ b/packages/opencode/test/e2e-smoke/output-assertions.test.ts @@ -0,0 +1,15 @@ +import { test } from "bun:test" +import { assertFinalOutput } from "./output-assertions" + +for (const acknowledgement of [false, true]) { + test(`smoke output accepts superseded narration${acknowledgement ? " followed by DONE" : ""}`, () => { + const events = [ + { type: "step_start" }, + { type: "text", part: { text: "Let me inspect the source." } }, + { type: "step_start" }, + { type: "text", part: { text: "**Answer:** 42" } }, + ...(acknowledgement ? [{ type: "step_start" }, { type: "text", part: { text: "DONE" } }] : []), + ] + assertFinalOutput(events, "**Answer:** 42") + }) +} diff --git a/packages/opencode/test/e2e-smoke/output-assertions.ts b/packages/opencode/test/e2e-smoke/output-assertions.ts new file mode 100644 index 0000000000..ae264482e9 --- /dev/null +++ b/packages/opencode/test/e2e-smoke/output-assertions.ts @@ -0,0 +1,18 @@ +import { expect } from "bun:test" +import { OutputCollector } from "../../src/cli/cmd/run-output" + +type Event = { type?: string; part?: { text?: string; synthetic?: boolean } } + +export function assertFinalOutput(events: Event[], output: string) { + const collected = new OutputCollector() + let textCount = 0 + for (const event of events) { + if (event.type === "step_start") collected.stepStart() + if (event.type === "text" && event.part?.text) { + textCount++ + collected.text(event.part.text, { synthetic: event.part.synthetic }) + } + } + expect(textCount, "At least one text event must be emitted").toBeGreaterThan(0) + expect(output).toContain(collected.content()) +} diff --git a/packages/opencode/test/mcp/lifecycle.test.ts b/packages/opencode/test/mcp/lifecycle.test.ts index 77974ddd01..93eca27cac 100644 --- a/packages/opencode/test/mcp/lifecycle.test.ts +++ b/packages/opencode/test/mcp/lifecycle.test.ts @@ -1358,6 +1358,57 @@ it.instance( }, ) +// altimate_change start — external tools cannot inherit the native finalizer's permission. +for (const toggle of ["1", "0"]) { + it.instance(`MCP reserves answer_commit with ALTIMATE_ANSWER_COMMIT=${toggle}`, () => + MCP.Service.use((mcp: MCPNS.Interface) => + Effect.gen(function* () { + const previous = process.env.ALTIMATE_ANSWER_COMMIT + process.env.ALTIMATE_ANSWER_COMMIT = toggle + try { + lastCreatedClientName = "answer" + const state = getOrCreateClientState("answer") + state.tools = [ + { name: "commit", inputSchema: { type: "object", properties: {} } }, + { name: "lookup", inputSchema: { type: "object", properties: {} } }, + ] + yield* mcp.add("answer", { type: "local", command: ["echo", "test"] }) + expect(Object.keys(yield* mcp.tools())).toEqual(["answer_lookup"]) + expect(Object.keys((yield* mcp.snapshot("answer")).tools)).toEqual(["answer_lookup"]) + expect(state.requestCalls).toBe(0) + } finally { + if (previous === undefined) delete process.env.ALTIMATE_ANSWER_COMMIT + else process.env.ALTIMATE_ANSWER_COMMIT = previous + } + }), + ), + ) +} +// altimate_change end + +// altimate_change start — Windows permission matching treats tool IDs case-insensitively. +it.instance("MCP reserves case variants of answer_commit on Windows", () => + MCP.Service.use((mcp: MCPNS.Interface) => + Effect.gen(function* () { + lastCreatedClientName = "answer" + getOrCreateClientState("answer").tools = [ + { name: "Commit", inputSchema: { type: "object", properties: {} } }, + { name: "lookup", inputSchema: { type: "object", properties: {} } }, + ] + yield* mcp.add("answer", { type: "local", command: ["echo", "test"] }) + const platform = Object.getOwnPropertyDescriptor(process, "platform")! + Object.defineProperty(process, "platform", { ...platform, value: "win32" }) + try { + expect(Object.keys(yield* mcp.tools())).toEqual(["answer_lookup"]) + expect(Object.keys((yield* mcp.snapshot("answer")).tools)).toEqual(["answer_lookup"]) + } finally { + Object.defineProperty(process, "platform", platform) + } + }), + ), +) +// altimate_change end + // ======================================================================== // Test: transport leak — local stdio timeout (#19168) // ======================================================================== diff --git a/packages/opencode/test/provider/amazon-bedrock.test.ts b/packages/opencode/test/provider/amazon-bedrock.test.ts index bfbd6acc42..1f59845416 100644 --- a/packages/opencode/test/provider/amazon-bedrock.test.ts +++ b/packages/opencode/test/provider/amazon-bedrock.test.ts @@ -1,4 +1,7 @@ import { afterEach, describe, expect, test } from "bun:test" +// altimate_change start — capture public model requests for routing assertions +import { spyOn } from "bun:test" +// altimate_change end import { Effect, Layer } from "effect" import path from "path" import { unlink } from "fs/promises" @@ -45,6 +48,26 @@ const mantleModelConfig = { }, } +// altimate_change start — verify routing without relying on SDK instance internals +const captureModelRequests = () => + Effect.acquireRelease( + Effect.sync(() => { + const urls: string[] = [] + const original = globalThis.fetch + const fakeFetch = Object.assign( + async (input: RequestInfo | URL) => { + urls.push(input instanceof Request ? input.url : String(input)) + throw new Error("Intercepted model request") + }, + { preconnect: original.preconnect.bind(original) }, + ) + const fetch = spyOn(globalThis, "fetch").mockImplementation(fakeFetch) + return { urls, fetch } + }), + ({ fetch }) => Effect.sync(() => fetch.mockRestore()), + ) +// altimate_change end + const withAuthJson = (contents: string) => Effect.acquireRelease( Effect.promise(async () => { @@ -114,16 +137,17 @@ it.instance( yield* set("AWS_PROFILE", "") yield* set("AWS_ACCESS_KEY_ID", "") yield* set("AWS_BEARER_TOKEN_BEDROCK", "") + // altimate_change start — assert the outgoing request URL through the public model API + const requests = yield* captureModelRequests() const model = yield* Provider.use.getModel(BEDROCK, ModelID.make("openai.gpt-5.5")) const language = yield* Provider.use.getLanguage(model) expect((language as { provider: string }).provider).toBe("bedrock-mantle.responses") expect((language as { modelId: string }).modelId).toBe("openai.gpt-5.5") - expect( - (language as unknown as { config: { url: (input: { path: string; modelId: string }) => string } }).config.url({ - path: "/responses", - modelId: "openai.gpt-5.5", - }), - ).toBe("https://bedrock-mantle.us-east-2.api.aws/openai/v1/responses") + yield* Effect.promise(async () => { + await expect(language.doGenerate({ prompt: [], maxOutputTokens: 1 })).rejects.toThrow("Intercepted model request") + }) + expect(requests.urls).toEqual(["https://bedrock-mantle.us-east-2.api.aws/openai/v1/responses"]) + // altimate_change end }), { config: { @@ -150,6 +174,8 @@ it.instance( () => Effect.gen(function* () { yield* set("AWS_BEARER_TOKEN_BEDROCK", "test-bearer-token") + // altimate_change start — assert the outgoing request URL through the public model API + const requests = yield* captureModelRequests() const model = yield* Provider.use.getModel( BEDROCK, ModelID.make("openai.gpt-oss-safeguard-120b"), @@ -157,12 +183,11 @@ it.instance( const language = yield* Provider.use.getLanguage(model) expect((language as { provider: string }).provider).toBe("bedrock-mantle.chat") expect((language as { modelId: string }).modelId).toBe("openai.gpt-oss-safeguard-120b") - expect( - (language as unknown as { config: { url: (input: { path: string; modelId: string }) => string } }).config.url({ - path: "/chat/completions", - modelId: "openai.gpt-oss-safeguard-120b", - }), - ).toBe("https://bedrock-mantle.us-east-1.api.aws/v1/chat/completions") + yield* Effect.promise(async () => { + await expect(language.doGenerate({ prompt: [], maxOutputTokens: 1 })).rejects.toThrow("Intercepted model request") + }) + expect(requests.urls).toEqual(["https://bedrock-mantle.us-east-1.api.aws/v1/chat/completions"]) + // altimate_change end }), { config: { diff --git a/packages/opencode/test/provider/budget-effort.test.ts b/packages/opencode/test/provider/budget-effort.test.ts new file mode 100644 index 0000000000..8e50b8bedc --- /dev/null +++ b/packages/opencode/test/provider/budget-effort.test.ts @@ -0,0 +1,521 @@ +// altimate_change start — run budgets must override configured reasoning options with provider-supported minima +import { describe, expect, spyOn, test } from "bun:test" +import { createOpenAICompatible } from "@ai-sdk/openai-compatible" +import { createAnthropic } from "@ai-sdk/anthropic" +import { jsonSchema, tool, type ModelMessage } from "ai" +import { applyBudgetEffort, budgetMessages } from "@/altimate/session/budget-effort" +import { begin, downgradeEffort } from "@/altimate/session/run-budget-effort" +import { withBudgetControl } from "@/altimate/session/run-budget-control" +import { Provider } from "@/provider/provider" +import { ProviderTransform } from "@/provider/transform" +import { ModelID, ProviderID } from "@/provider/schema" +import { LLM } from "@/session/llm" +import { SessionID, MessageID } from "@/session/schema" +import { Session } from "@/session" +import { Config } from "@/config/config" +import { Plugin } from "@/plugin" +import { Auth } from "@/auth" +import { Bus } from "@/bus" + +function model(npm: string, id: string): Provider.Model { + return { + id: ModelID.make(id), + providerID: ProviderID.make("test"), + api: { npm, id, url: "https://example.invalid" }, + name: id, + capabilities: { + reasoning: true, + temperature: true, + attachment: false, + toolcall: true, + input: { text: true, audio: false, image: false, video: false, pdf: false }, + output: { text: true, audio: false, image: false, video: false, pdf: false }, + interleaved: false, + }, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 200_000, output: 32_000 }, + status: "active", + release_date: "2025-01-01", + options: {}, + headers: {}, + variants: { high: { reasoningEffort: "high" }, low: { reasoningEffort: "high" } }, + } +} + +describe("run budget reasoning effort", () => { + test.each(["finalization", "finalization-no-downgrade"])( + "%s removes executable and historical tools even when the provider emits a tool call", + async (control) => { + const resolved = model("@ai-sdk/openai-compatible", "o3") + const sessionID = SessionID.make("ses_budget_finalization_tools") + const requests: Record[] = [] + let executions = 0 + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + const chunk = { + id: "response", + choices: [ + { + index: 0, + delta: { + tool_calls: [ + { index: 0, id: "call_write", type: "function", function: { name: "write", arguments: "{}" } }, + ], + }, + finish_reason: "tool_calls", + }, + ], + } + return new Response(`data: ${JSON.stringify(chunk)}\n\ndata: [DONE]\n\n`, { + headers: { "Content-Type": "text/event-stream" }, + }) + }) as typeof fetch, + }).chatModel("o3") + const spies = [ + spyOn(Bus, "publish").mockResolvedValue(undefined), + spyOn(Provider, "getLanguage").mockResolvedValue(language), + spyOn(Provider, "getProvider").mockResolvedValue({ id: resolved.providerID, options: {} } as Provider.Info), + spyOn(Config, "get").mockResolvedValue({ tracing: { enabled: false } }), + spyOn(Auth, "get").mockResolvedValue(undefined), + spyOn(Plugin, "trigger").mockImplementation(async (_name, _input, output) => output), + ] + const request = async () => { + const stream = await LLM.stream({ + sessionID, + user: { + id: MessageID.make("msg_budget_finalization_tools"), + sessionID, + role: "user", + time: { created: Date.now() }, + agent: "test", + model: { providerID: resolved.providerID, modelID: resolved.id }, + }, + model: resolved, + agent: { name: "test", mode: "primary", options: {}, permission: [] }, + system: [], + abort: new AbortController().signal, + messages: [ + { role: "user", content: "Inspect the evidence." }, + { role: "assistant", content: [{ type: "tool-call", toolCallId: "history", toolName: "glob", input: {} }] }, + { + role: "tool", + content: [ + { + type: "tool-result", + toolCallId: "history", + toolName: "glob", + output: { type: "text", value: "orders.sql" }, + }, + ], + }, + { role: "user", content: "Finalize without tools." }, + ], + tools: { + write: tool({ + inputSchema: jsonSchema({ type: "object", properties: {} }), + execute: async () => { + executions++ + return "written" + }, + }), + }, + }) + for await (const _event of stream.fullStream) { + /* drain real SDK tool dispatch */ + } + } + try { + await withBudgetControl({ sessionID, control }, request) + expect(executions).toBe(0) + expect(requests[0]!.tools ?? []).toEqual([]) + await withBudgetControl({ sessionID, control: "work" }, request) + expect(executions).toBe(1) + expect(requests[1]!.tools).toEqual( + expect.arrayContaining([expect.objectContaining({ function: expect.objectContaining({ name: "write" }) })]), + ) + } finally { + for (const spy of spies) spy.mockRestore() + } + }, + ) + + test.each([ + ["@ai-sdk/openai", "o3", "low"], + ["@ai-sdk/openai", "gpt-5", "minimal"], + ["@ai-sdk/openai", "gpt-5.2", "low"], + ["@ai-sdk/openai", "gpt-5.2-pro", "medium"], + ["@ai-sdk/openai", "gpt-5-pro", "high"], + ["@ai-sdk/azure", "o3", "low"], + ["@ai-sdk/amazon-bedrock/mantle", "gpt-5", "minimal"], + ])("%s / %s uses accepted effort %s independently of custom variants", (npm, id, effort) => { + const configured = { reasoningEffort: "high", store: false } + expect(applyBudgetEffort(model(npm, id), configured)).toMatchObject({ reasoningEffort: effort, store: false }) + expect(configured).toEqual({ reasoningEffort: "high", store: false }) + }) + + test("OpenRouter replaces an existing token budget as well as high effort", () => { + const resolved = model("@openrouter/ai-sdk-provider", "openai/gpt-5") + const options = applyBudgetEffort(resolved, { reasoning: { effort: "high", max_tokens: 16_000 } }) + expect(ProviderTransform.providerOptions(resolved, options)).toEqual({ + openrouter: { reasoning: { effort: "minimal" } }, + }) + }) + + test.each(["claude-sonnet-4-5", "claude-opus-4-6"])( + "Anthropic %s disables thinking without retaining its old budget", + (id) => { + const resolved = model("@ai-sdk/anthropic", id) + const options = applyBudgetEffort(resolved, { + thinking: { type: "enabled", budgetTokens: 16_000 }, + effort: "high", + }) + expect(options.thinking).toEqual({ type: "disabled" }) + expect(options.effort).toBe(id.includes("4-6") ? "low" : undefined) + }, + ) + + test("Bedrock Claude disables raw thinking overrides as well as reasoningConfig", () => { + const resolved = model("@ai-sdk/amazon-bedrock", "us.anthropic.claude-opus-4-6-v1:0") + expect( + applyBudgetEffort(resolved, { + reasoningConfig: { type: "adaptive", maxReasoningEffort: "high", budgetTokens: 16_000 }, + additionalModelRequestFields: { + thinking: { type: "enabled", budget_tokens: 16_000 }, + output_config: { effort: "high" }, + keep: true, + }, + }), + ).toEqual({ + reasoningConfig: { type: "disabled", maxReasoningEffort: "low" }, + additionalModelRequestFields: { thinking: { type: "disabled" }, output_config: { effort: "low" }, keep: true }, + }) + }) + + test.each(["claude-opus-4-7", "claude-opus-5-5", "claude-fable-5-1"])( + "Anthropic %s keeps adaptive thinking at the lowest effort because it rejects disabled thinking", + (id) => { + const resolved = model("@ai-sdk/anthropic", id) + const options = applyBudgetEffort(resolved, { + thinking: { type: "adaptive", budgetTokens: 16_000 }, + effort: "high", + keep: true, + }) + expect(options).toEqual({ + thinking: { type: "adaptive", display: "summarized" }, + effort: "low", + keep: true, + }) + }, + ) + + test.each(["global.anthropic.claude-opus-5-5", "us.anthropic.claude-opus-4-7-v1:0"])( + "Bedrock %s keeps adaptive thinking at the lowest effort in reasoningConfig and raw fields", + (id) => { + const resolved = model("@ai-sdk/amazon-bedrock", id) + expect( + applyBudgetEffort(resolved, { + reasoningConfig: { type: "adaptive", maxReasoningEffort: "high", budgetTokens: 16_000 }, + additionalModelRequestFields: { + thinking: { type: "enabled", budget_tokens: 16_000 }, + output_config: { effort: "high", other: 1 }, + keep: true, + }, + }), + ).toEqual({ + reasoningConfig: { type: "adaptive", maxReasoningEffort: "low", display: "summarized" }, + additionalModelRequestFields: { + thinking: { type: "adaptive", display: "summarized" }, + output_config: { effort: "low", other: 1 }, + keep: true, + }, + }) + }, + ) + + test.each([ + ["anthropic--claude-opus-4-7", { thinking: { type: "adaptive", display: "summarized" }, output_config: { effort: "low" } }], + ["anthropic--claude-sonnet-4-6", { thinking: { type: "disabled" }, output_config: { effort: "low" } }], + ])("SAP %s keeps unrelated model parameters and uses the lowest accepted thinking setting", (id, expected) => { + const resolved = model("@jerome-benoit/sap-ai-provider-v2", id) + expect( + applyBudgetEffort(resolved, { + modelParams: { thinking: { type: "adaptive" }, output_config: { effort: "high" }, max_tokens: 4096 }, + }), + ).toEqual({ modelParams: { ...expected, max_tokens: 4096 } }) + }) + + test("Bedrock Nova lowers effort and removes an old fixed budget", () => { + expect( + applyBudgetEffort(model("@ai-sdk/amazon-bedrock", "amazon.nova-2-lite-v1:0"), { + reasoningConfig: { type: "enabled", maxReasoningEffort: "high", budgetTokens: 16_000 }, + }), + ).toEqual({ reasoningConfig: { type: "enabled", maxReasoningEffort: "low" } }) + }) + + test.each([ + ["gemini-2.5-pro", { thinkingBudget: 128 }], + ["gemini-2.5-flash", { thinkingBudget: 0 }], + ["gemini-3-pro", { includeThoughts: true, thinkingLevel: "low" }], + ["gemini-3-flash", { includeThoughts: true, thinkingLevel: "minimal" }], + ])("Google %s uses its lowest supported thinking setting", (id, expected) => { + expect( + applyBudgetEffort(model("@ai-sdk/google", id), { + thinkingConfig: { thinkingBudget: 16_000, thinkingLevel: "high" }, + }).thinkingConfig, + ).toEqual(expected) + }) + + test("models without a reasoning control preserve their options", () => { + const resolved = model("@ai-sdk/cohere", "command-r") + const options = { unrelated: true } + expect(applyBudgetEffort(resolved, options)).toBe(options) + resolved.capabilities.reasoning = false + expect(applyBudgetEffort(resolved, options)).toBe(options) + }) + + test("Mistral adjustable reasoning can be disabled even though its only configured variant is high", () => { + const resolved = model("@ai-sdk/mistral", "mistral-medium-3.5") + expect(applyBudgetEffort(resolved, { reasoningEffort: "high" })).toEqual({ reasoningEffort: "none" }) + }) + + test("the actual SDK request overrides the plugin effort until the run ends", async () => { + const resolved = model("@ai-sdk/openai-compatible", "o3") + const requests: Record[] = [] + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + const chunk = { + id: "response", + choices: [{ index: 0, delta: { content: "Final answer" }, finish_reason: "stop" }], + } + return new Response(`data: ${JSON.stringify(chunk)}\n\ndata: [DONE]\n\n`, { + headers: { "Content-Type": "text/event-stream" }, + }) + }) as typeof fetch, + }).chatModel("o3") + const sessionID = SessionID.make("ses_budget_effort_provider_test") + const childID = SessionID.make("ses_budget_effort_provider_child_test") + const spies = [ + spyOn(Provider, "getLanguage").mockResolvedValue(language), + spyOn(Provider, "getProvider").mockResolvedValue({ id: resolved.providerID, options: {} } as Provider.Info), + spyOn(Config, "get").mockResolvedValue({ tracing: { enabled: false } }), + spyOn(Auth, "get").mockResolvedValue(undefined), + spyOn(Session, "get").mockImplementation( + (async (id) => + ({ id, parentID: id === childID ? sessionID : undefined }) as Session.Info) as typeof Session.get, + ), + spyOn(Plugin, "trigger").mockImplementation(async (name, _input, output) => { + if (name === "chat.params") (output as { options: Record }).options.reasoningEffort = "high" + return output + }), + ] + const end = begin(sessionID) + const request = async (sessionID = SessionID.make("ses_budget_effort_provider_test")) => { + const stream = await LLM.stream({ + sessionID, + user: { + id: MessageID.make("msg_budget_effort_provider_test"), + sessionID, + role: "user", + time: { created: Date.now() }, + agent: "test", + model: { providerID: resolved.providerID, modelID: resolved.id }, + variant: "high", + }, + model: resolved, + agent: { name: "test", mode: "primary", options: {}, permission: [] }, + system: [], + abort: new AbortController().signal, + messages: [{ role: "user", content: "Answer now." }], + tools: {}, + }) + for await (const _event of stream.fullStream) { + /* drain the actual SDK stream */ + } + } + try { + await request() + downgradeEffort(sessionID) + await request() + await request() // finalization uses the same session override + await request(childID) + await request(SessionID.make("ses_budget_effort_unrelated_test")) + end() + await request() + await request(childID) + expect(requests.map((body) => body.reasoning_effort)).toEqual([ + "high", + "low", + "low", + "low", + "high", + "high", + "high", + ]) + expect(resolved.variants?.high).toEqual({ reasoningEffort: "high" }) + } finally { + end() + for (const spy of spies) spy.mockRestore() + } + }) + + test("SAP Claude Opus 4.7 removes unsigned reasoning and drops an assistant left empty", () => { + const resolved = model("@jerome-benoit/sap-ai-provider-v2", "anthropic--claude-opus-4-7") + resolved.providerID = ProviderID.make("sap-ai-core") + const messages: ModelMessage[] = [ + { role: "user", content: "Investigate." }, + { role: "assistant", content: [{ type: "reasoning", text: "An unfinished thought" }] }, + { + role: "assistant", + content: [ + { type: "reasoning", text: "Another unfinished thought" }, + { type: "text", text: "Evidence collected." }, + ], + }, + { role: "user", content: "Answer now." }, + ] + const original = structuredClone(messages) + expect(budgetMessages(messages, resolved, { modelParams: { thinking: { type: "adaptive" } } })).toEqual([ + messages[0]!, + { role: "assistant", content: [{ type: "text", text: "Evidence collected." }] }, + messages[3]!, + ]) + expect(messages).toEqual(original) + }) + + test("SAP Claude removes reasoning with signature metadata its SDK cannot round-trip", () => { + const resolved = model("@jerome-benoit/sap-ai-provider-v2", "anthropic--claude-opus-4-7") + resolved.providerID = ProviderID.make("sap-ai-core") + const messages: ModelMessage[] = [ + { + role: "assistant", + content: [ + { + type: "reasoning", + text: "Previously completed thought", + providerOptions: { + "sap-ai-core": { signature: "signature" }, + "sap-ai": { signature: "signature" }, + anthropic: { signature: "signature" }, + }, + }, + { type: "reasoning", text: "", providerOptions: { "sap-ai": { redactedData: "redacted" } } }, + { type: "text", text: "Evidence collected." }, + ], + }, + ] + expect(budgetMessages(messages, resolved, {})).toEqual([ + { role: "assistant", content: [{ type: "text", text: "Evidence collected." }] }, + ]) + }) + + test("non-Anthropic SAP models preserve reasoning history", () => { + const resolved = model("@jerome-benoit/sap-ai-provider-v2", "gpt-5") + const messages: ModelMessage[] = [ + { role: "assistant", content: [{ type: "reasoning", text: "An unfinished thought" }] }, + ] + expect(budgetMessages(messages, resolved, {})).toBe(messages) + }) + + test.each(["downgraded", "active", "none"] as const)( + "Anthropic interrupted reasoning resumes without empty assistant content (%s budget)", + async (budget) => { + const downgrade = budget === "downgraded" + const resolved = model("@ai-sdk/anthropic", "claude-opus-4-6") + resolved.variants = ProviderTransform.variants(resolved) + const requests: Record[] = [] + const language = createAnthropic({ + apiKey: "test-key", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + const chunks = [ + { + type: "message_start", + message: { + id: "msg_answer", + type: "message", + role: "assistant", + model: resolved.api.id, + content: [], + stop_reason: null, + stop_sequence: null, + usage: { input_tokens: 10, output_tokens: 0 }, + }, + }, + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "Final answer" } }, + { type: "content_block_stop", index: 0 }, + { + type: "message_delta", + delta: { stop_reason: "end_turn", stop_sequence: null }, + usage: { output_tokens: 2 }, + }, + { type: "message_stop" }, + ] + return new Response( + chunks.map((chunk) => `event: ${chunk.type}\ndata: ${JSON.stringify(chunk)}\n\n`).join(""), + { + headers: { "Content-Type": "text/event-stream" }, + }, + ) + }) as typeof fetch, + })(resolved.api.id) + const spies = [ + spyOn(Provider, "getLanguage").mockResolvedValue(language), + spyOn(Provider, "getProvider").mockResolvedValue({ id: resolved.providerID, options: {} } as Provider.Info), + spyOn(Config, "get").mockResolvedValue({ tracing: { enabled: false } }), + spyOn(Auth, "get").mockResolvedValue(undefined), + spyOn(Session, "get").mockImplementation((async (id) => ({ id }) as Session.Info) as typeof Session.get), + spyOn(Plugin, "trigger").mockImplementation(async (_name, _input, output) => output), + ] + const sessionID = SessionID.make("ses_budget_effort_anthropic_test") + const end = budget === "none" ? undefined : begin(sessionID) + if (downgrade) downgradeEffort(sessionID) + const messages: ModelMessage[] = [ + { role: "user", content: "Investigate." }, + { role: "assistant", content: [{ type: "reasoning", text: "An unfinished thought" }] }, + { role: "user", content: "Answer now." }, + ] + try { + const stream = await LLM.stream({ + sessionID, + user: { + id: MessageID.make("msg_budget_effort_anthropic_test"), + sessionID, + role: "user", + time: { created: Date.now() }, + agent: "test", + model: { providerID: resolved.providerID, modelID: resolved.id }, + variant: "high", + }, + model: resolved, + agent: { name: "test", mode: "primary", options: {}, permission: [] }, + system: [], + abort: new AbortController().signal, + messages, + tools: {}, + }) + for await (const _event of stream.fullStream) { + /* drain the actual SDK stream */ + } + expect(requests).toHaveLength(1) + if (downgrade) expect(requests[0]!.thinking).toBeUndefined() + else expect(requests[0]!.thinking).toEqual({ type: "adaptive" }) + expect(requests[0]!.output_config.effort).toBe(downgrade ? "low" : "high") + expect( + requests[0]!.messages.some((message: any) => message.role === "assistant" && message.content.length === 0), + ).toBe(false) + expect(messages[1]!.content).toEqual([{ type: "reasoning", text: "An unfinished thought" }]) + } finally { + end?.() + for (const spy of spies) spy.mockRestore() + } + }, + ) +}) +// altimate_change end diff --git a/packages/opencode/test/provider/fixtures/private-field-provider.ts b/packages/opencode/test/provider/fixtures/private-field-provider.ts new file mode 100644 index 0000000000..2507ba4b7b --- /dev/null +++ b/packages/opencode/test/provider/fixtures/private-field-provider.ts @@ -0,0 +1,58 @@ +import type { LanguageModelV3, LanguageModelV3GenerateResult, LanguageModelV3StreamPart } from "@ai-sdk/provider" + +class PrivateFieldModel implements LanguageModelV3 { + readonly specificationVersion = "v3" + #modelId: string + #provider = "private-field" + #text = "private state" + #supportedUrls = { "image/*": [/^https:\/\/private-field\.test\//] } + + constructor(modelId: string) { + this.#modelId = modelId + } + + get provider() { + return this.#provider + } + + get modelId() { + return this.#modelId + } + + get supportedUrls() { + return this.#supportedUrls + } + + async doGenerate(): Promise { + return { + content: [{ type: "text", text: this.#text }], + finishReason: { unified: "stop", raw: "stop" }, + usage: { + inputTokens: { total: 1, noCache: 1, cacheRead: 0, cacheWrite: 0 }, + outputTokens: { total: 1, text: 1, reasoning: 0 }, + }, + warnings: [], + } + } + + async doStream() { + const text = this.#text + const result = await this.doGenerate() + return { + stream: new ReadableStream({ + start(controller) { + controller.enqueue({ type: "stream-start", warnings: [] }) + controller.enqueue({ type: "text-start", id: "text" }) + controller.enqueue({ type: "text-delta", id: "text", delta: text }) + controller.enqueue({ type: "text-end", id: "text" }) + controller.enqueue({ type: "finish", finishReason: result.finishReason, usage: result.usage }) + controller.close() + }, + }), + } + } +} + +export function createPrivateFieldProvider() { + return { languageModel: (modelId: string) => new PrivateFieldModel(modelId) } +} diff --git a/packages/opencode/test/provider/header-timeout.test.ts b/packages/opencode/test/provider/header-timeout.test.ts index 6f0e74f694..7bf75a7c3f 100644 --- a/packages/opencode/test/provider/header-timeout.test.ts +++ b/packages/opencode/test/provider/header-timeout.test.ts @@ -1,6 +1,7 @@ -import { afterEach, expect } from "bun:test" +import { afterEach, expect, spyOn } from "bun:test" import { createServer, type Server } from "node:http" -import { streamText } from "ai" +import { generateObject, streamText } from "ai" +import z from "zod" import { Effect, Layer } from "effect" import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" // Provider.Service.getModel/getProvider expect the fork's ProviderID/ModelID brands. @@ -111,29 +112,102 @@ it.live("headerTimeout aborts when response headers do not arrive", () => }), ) -it.live("headerTimeout is opt-in for non-OpenAI providers", () => +// altimate_change start — custom fetch cancellation is enforced even for hooks that ignore signals +it.live("header timeout bounds a fetch hook that ignores its abort signal", () => Effect.gen(function* () { - const server = yield* Effect.acquireRelease( - Effect.promise(() => delayedHeaderServer(100)), - (server) => Effect.sync(() => server.server.close()), - ) + let hookResolved = false + const original = globalThis.fetch + const fakeFetch = Object.assign(async (input: RequestInfo | URL, init?: RequestInit) => { + if (!String(input).startsWith("https://stalled-hook.test")) return original(input, init) + await new Promise((resolve) => setTimeout(resolve, 250)) + hookResolved = true + return new Response('data: {"choices":[{"delta":{"content":"too late"}}]}\n\ndata: [DONE]\n\n', { + headers: { "content-type": "text/event-stream" }, + }) + }, { preconnect: original.preconnect.bind(original) }) + yield* Effect.acquireRelease(Effect.sync(() => { globalThis.fetch = fakeFetch }), () => Effect.sync(() => { globalThis.fetch = original })) + yield* provideTmpdirInstance(() => Effect.gen(function* () { + const provider = yield* Provider.Service + const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) + const language = yield* provider.getLanguage(model) + const result = streamText({ model: language, maxRetries: 0, prompt: "hello", onError() {} }) + const errors = yield* Effect.promise(async () => { + const errors: unknown[] = [] + try { + for await (const part of result.fullStream) if (part.type === "error") errors.push(part.error) + } catch (error) { errors.push(error) } + return errors + }) + expect(hookResolved).toBe(false) + expect(errors).toHaveLength(1) + expect(errors[0]).toBeInstanceOf(ProviderError.HeaderTimeoutError) + }), { config: providerConfig("https://stalled-hook.test", { headerTimeout: 30 }) }) + }), +) - yield* provideTmpdirInstance( - () => - Effect.gen(function* () { - const provider = yield* Provider.Service - const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) - const result = streamText({ - model: yield* provider.getLanguage(model), - messages: [{ role: "user", content: "hello" }], - }) +// altimate_change end - expect(yield* Effect.promise(() => result.text)).toBe("ok") +for (const operation of ["streamText", "generateObject"] as const) { + it.live(`non-OpenAI ${operation} schedules no header watchdog unless configured`, () => + Effect.gen(function* () { + yield* Effect.acquireRelease( + Effect.sync(() => { + const originalFetch = globalThis.fetch + const originalIdleTimeout = process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + // Isolate the first-byte deadline from the independent stream watchdog. + process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = "0" + const fakeFetch = async (input: RequestInfo | URL, init?: RequestInit) => { + const url = input instanceof Request ? input.url : String(input) + if (!url.startsWith("https://header-timeout.test/")) return originalFetch(input, init) + if (JSON.parse(String(init?.body)).stream) { + return new Response('data: {"choices":[{"delta":{"content":"ok"}}]}\n\ndata: [DONE]\n\n', { + headers: { "content-type": "text/event-stream" }, + }) + } + return Response.json({ + choices: [{ message: { role: "assistant", content: '{"value":"ok"}' }, finish_reason: "stop" }], + usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, + }) + } + globalThis.fetch = Object.assign(fakeFetch, { preconnect: originalFetch.preconnect.bind(originalFetch) }) + return { originalFetch, originalIdleTimeout } }), - { config: providerConfig(server.url) }, - ) - }), -) + ({ originalFetch, originalIdleTimeout }) => Effect.sync(() => { + globalThis.fetch = originalFetch + if (originalIdleTimeout === undefined) delete process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + else process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = originalIdleTimeout + }), + ) + + for (const headerTimeout of [undefined, 12_345]) { + yield* provideTmpdirInstance( + () => Effect.gen(function* () { + const provider = yield* Provider.Service + const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) + const language = yield* provider.getLanguage(model) + const timer = yield* Effect.acquireRelease( + Effect.sync(() => spyOn(globalThis, "setTimeout")), + (timer) => Effect.sync(() => timer.mockRestore()), + ) + if (operation === "streamText") { + const result = streamText({ model: language, maxRetries: 0, prompt: "hello" }) + expect(yield* Effect.promise(() => result.text)).toBe("ok") + } else { + const result = yield* Effect.promise(() => generateObject({ + model: language, maxRetries: 0, prompt: "hello", schema: z.object({ value: z.string() }), + })) + expect(result.object).toEqual({ value: "ok" }) + } + const deadlines = timer.mock.calls.map(([, ms]) => ms) + expect(deadlines).not.toContain(300_000) + if (headerTimeout !== undefined) expect(deadlines).toContain(headerTimeout) + }), + { config: providerConfig("https://header-timeout.test", { headerTimeout }) }, + ) + } + }), + ) +} it.live("OpenAI Codex headerTimeout default can be disabled by config", () => Effect.gen(function* () { diff --git a/packages/opencode/test/provider/stream-idle-timeout.test.ts b/packages/opencode/test/provider/stream-idle-timeout.test.ts new file mode 100644 index 0000000000..be33256da0 --- /dev/null +++ b/packages/opencode/test/provider/stream-idle-timeout.test.ts @@ -0,0 +1,797 @@ +// altimate_change start — stream watchdog deadlines, overrides, content types, and cancellation +import { afterEach, expect, spyOn } from "bun:test" +import { generateText, jsonSchema, streamText } from "ai" +import { Effect, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { Env } from "@/env" +import { Plugin } from "@/plugin" +import { Provider } from "@/provider/provider" +import { ProviderError } from "@/provider/error" +import { ProviderID, ModelID } from "@/provider/schema" +import { MessageV2 } from "@/session/message-v2" +import { SessionRetry } from "@/session/retry" +import { disposeAllInstances, provideTmpdirInstance } from "../fixture/fixture" +import { testEffect } from "../lib/effect" +import { testProviderConfig } from "../lib/test-provider" + +afterEach(disposeAllInstances) + +const it = testEffect( + Layer.mergeAll(Provider.defaultLayer, Env.defaultLayer, Plugin.defaultLayer, CrossSpawnSpawner.defaultLayer), +) + +it.live("the stream wrapper delegates class models with private fields", () => + provideTmpdirInstance( + () => + Effect.gen(function* () { + const provider = yield* Provider.Service + const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) + const language = yield* provider.getLanguage(model) + const streamed = streamText({ model: language, maxRetries: 0, prompt: "hello" }) + + expect(yield* Effect.promise(() => streamed.text)).toBe("private state") + expect(language.provider).toBe("private-field") + expect(language.modelId).toBe("test-model") + const urls = yield* Effect.promise(() => Promise.resolve(language.supportedUrls)) + expect(urls["image/*"][0].test("https://private-field.test/image.png")).toBe(true) + const generated = yield* Effect.promise(() => generateText({ model: language, prompt: "hello" })) + expect(generated.text).toBe("private state") + expect(yield* provider.getLanguage(model)).toBe(language) + }), + { + config: () => { + const config = testProviderConfig("https://private-field.test") + config.provider.test.npm = new URL("./fixtures/private-field-provider.ts", import.meta.url).href + return config + }, + }, + ), +) + +for (const contentType of ["text/event-stream", "application/vnd.amazon.eventstream"]) { + it.live(`idle model body is aborted without retry after partial output with ${contentType}`, () => + Effect.gen(function* () { + const result = yield* request({ contentType, delays: [0, 180], idleTimeout: 50 }) + + expect(result.text).toBe("chunk") + expect(result.signal?.aborted).toBe(true) + expect(result.aborts).toBe(1) + expect(result.requests).toBe(1) + expect(result.error).toBeInstanceOf(ProviderError.ResponseStreamError) + const classified = MessageV2.fromError(result.error, { providerID: ProviderID.make("test") }) + expect(classified.name).toBe("APIError") + const data = classified.data as MessageV2.APIError["data"] + expect(data.isRetryable).toBe(false) + expect(data.message).toContain(ProviderError.MODEL_STOPPED_RESPONDING) + expect(SessionRetry.retryable(classified)).toBeUndefined() + }), + ) +} + +for (const contentType of ["application/json", "application/octet-stream", undefined]) { + it.live(`the watchdog leaves ${contentType ?? "missing content type"} bodies unwrapped`, () => + Effect.gen(function* () { + const result = yield* request({ contentType, delays: [0, 180], idleTimeout: 50 }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunkchunk") + expect(result.signal?.aborted ?? false).toBe(false) + expect(result.aborts).toBe(0) + }), + ) +} + +it.live("a first chunk delayed past the idle timeout aborts the stream", () => + Effect.gen(function* () { + const result = yield* request({ contentType: "text/event-stream", delays: [180], idleTimeout: 50 }) + + expect(result.text).toBe("") + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.signal?.aborted).toBe(true) + expect(result.aborts).toBe(1) + }), +) + +it.live("a stall before the first chunk retries the request", () => + Effect.gen(function* () { + const result = yield* request({ contentType: "text/event-stream", delays: [180], idleTimeout: 50, retry: true }) + + expect(result.requests).toBe(2) + expect(result.text).toBe("chunk") + expect(result.error).toBeUndefined() + }), +) + +it.live("SSE heartbeats and metadata before a stall remain safe to retry", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 180], + idleTimeout: 50, + retry: true, + chunks: [': heartbeat\n\ndata: {"choices":[{"delta":{"role":"assistant"}}]}\n\n'], + }) + expect(result.requests).toBe(2) + expect(result.text).toBe("chunk") + expect(result.error).toBeUndefined() + }), +) + +it.live("a stall after text does not replay the request", () => + Effect.gen(function* () { + const result = yield* request({ contentType: "text/event-stream", delays: [0, 180], idleTimeout: 50, retry: true }) + + expect(result.requests).toBe(1) + expect(result.text).toBe("chunk") + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + }), +) + +it.live("a stall after a tool call does not execute the tool twice", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 180], + chunks: [ + 'data: {"choices":[{"delta":{"tool_calls":[{"index":0,"id":"call_mutate","type":"function","function":{"name":"mutate","arguments":"{}"}}]},"finish_reason":"tool_calls"}]}\n\n', + ], + idleTimeout: 50, + retry: true, + }) + + expect(result.executions).toBe(1) + expect(result.requests).toBe(1) + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + }), +) + +it.live("a first chunk arriving before the idle timeout by a margin completes", () => + Effect.gen(function* () { + const result = yield* request({ contentType: "text/event-stream", delays: [70], idleTimeout: 100 }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunk") + expect(result.signal?.aborted ?? false).toBe(false) + expect(result.aborts).toBe(0) + }), +) + +it.live("steady model chunks reset the idle deadline", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 20, 40, 60, 80, 100], + idleTimeout: 60, + }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunk".repeat(6)) + expect(result.signal?.aborted ?? false).toBe(false) + expect(result.aborts).toBe(0) + }), +) + +it.live("SSE keepalives every 10ms time out at the 50ms model-output deadline", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: Array.from({ length: 15 }, (_, i) => i * 10), + chunks: Array(15).fill(": keepalive\n\n"), + idleTimeout: 50, + }) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.text).toBe("") + expect(result.aborts).toBe(1) + }), +) + +it.live("SSE data every 10ms resets the 50ms model-output deadline", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: Array.from({ length: 15 }, (_, i) => i * 10), + idleTimeout: 50, + }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunk".repeat(15)) + expect(result.aborts).toBe(0) + }), +) + +for (const eventType of ["ping", "keepalive", "heartbeat"]) { + it.live(`SSE event: ${eventType} with data every 10ms times out at the 50ms deadline`, () => + Effect.gen(function* () { + const frame = new TextEncoder().encode(`event: ${eventType}\ndata: {"type":"ping"}\n\n`) + const result = yield* requestBody("text/event-stream", Array(15).fill(frame)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(15) + expect(result.signal?.aborted).toBe(true) + expect(result.cancelled).toBe(true) + }), + ) +} + +it.live("SSE ping data without an event field every 10ms times out at the 50ms deadline", () => + Effect.gen(function* () { + const frame = new TextEncoder().encode('data: {"type":"ping"}\n\n') + const result = yield* requestBody("text/event-stream", Array(15).fill(frame)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(15) + expect(result.signal?.aborted).toBe(true) + }), +) + +for (const padding of ["leading", "trailing"]) { + it.live(`SSE ping data with long ${padding} whitespace does not reset the deadline`, () => + Effect.gen(function* () { + const spaces = " ".repeat(100) + const payload = padding === "leading" ? `${spaces}{"type":"ping"}` : `{"type":"ping"}${spaces}` + const frame = new TextEncoder().encode(`data: ${payload}\n\n`) + const result = yield* requestBody("text/event-stream", Array(15).fill(frame)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(15) + }), + ) +} + +it.live("SSE data after a split UTF-8 BOM resets the deadline", () => + Effect.gen(function* () { + const frame = new TextEncoder().encode('\uFEFFdata: {"text":"hello"}\n\n') + const chunks = [frame.slice(0, 1), frame.slice(1), new TextEncoder().encode(": keepalive\n\n")] + const result = yield* requestBody("text/event-stream", chunks, [0, 30, 65]) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + }), +) + +it.live("SSE content_block_delta events reset the deadline", () => + Effect.gen(function* () { + const frame = new TextEncoder().encode('event: content_block_delta\ndata: {"text":"hello"}\n\n') + const chunks = Array(15).fill(frame) + const result = yield* requestBody("text/event-stream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), +) + +it.live("SSE real data lines longer than 64 bytes reset the deadline", () => + Effect.gen(function* () { + const frame = new TextEncoder().encode(`data: {"text":"${"x".repeat(256)}"}\n\n`) + const chunks = Array(15).fill(frame) + const result = yield* requestBody("text/event-stream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), +) + +it.live("SSE event fields after split data lines apply until the CRLF block boundary", () => + Effect.gen(function* () { + const chunks = Array.from({ length: 8 }, () => ['data: {"text":"hello"}\r', "\nevent: ping\r\n\r\n"]) + .flat() + .map((value) => new TextEncoder().encode(value)) + const result = yield* requestBody("text/event-stream", chunks) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(chunks.length) + }), +) + +it.live("SSE event fields reset at blank lines before subsequent data blocks", () => + Effect.gen(function* () { + const chunks = ['event: ping\ndata: {"type":"ping"}\n\n', ...Array(14).fill('data: {"text":"hello"}\n\n')].map( + (value) => new TextEncoder().encode(value), + ) + const result = yield* requestBody("text/event-stream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + }), +) + +for (const chunk of [": keepalive\n\n", "\n\r\n", "event: ping\nid: 1\nretry: 10\n\n"]) { + it.live(`SSE protocol-only bytes ${JSON.stringify(chunk)} are forwarded without resetting the deadline`, () => + Effect.gen(function* () { + const bytes = new TextEncoder().encode(chunk) + const result = yield* requestBody("text/event-stream", Array(15).fill(bytes)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect((result.error as ProviderError.StreamIdleTimeoutError).emitted).toBe(true) + expect(result.chunks.length).toBeGreaterThan(0) + expect(result.chunks.length).toBeLessThan(15) + for (const value of result.chunks) expect(value).toEqual(bytes) + expect(result.signal?.aborted).toBe(true) + expect(result.cancelled).toBe(true) + }), + ) +} + +it.live("an SSE data line split across chunks resets the deadline once complete", () => + Effect.gen(function* () { + const chunks = ["da", 'ta: {"text":"hello"}\r\n\r', '\ndata: {"text":"world"}\n\n'].map((value) => + new TextEncoder().encode(value), + ) + const result = yield* requestBody("text/event-stream", chunks, [0, 30, 65]) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), +) + +it.live("an incomplete SSE data line does not reset the deadline", () => + Effect.gen(function* () { + const chunks = ["data:", ...Array(14).fill(" ")].map((value) => new TextEncoder().encode(value)) + const result = yield* requestBody("text/event-stream", chunks) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(chunks.length) + }), +) + +for (const eventType of ["heartbeat", "ping", "keepalive", "metadata"]) { + it.live(`Amazon event-stream ${eventType} frames do not reset the deadline`, () => + Effect.gen(function* () { + const frame = eventFrame(eventType) + const result = yield* requestBody("application/vnd.amazon.eventstream", Array(15).fill(frame)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect((result.error as ProviderError.StreamIdleTimeoutError).emitted).toBe(true) + expect(result.chunks.length).toBeGreaterThan(0) + expect(result.chunks.length).toBeLessThan(15) + for (const value of result.chunks) expect(value).toEqual(frame) + expect(result.signal?.aborted).toBe(true) + }), + ) +} + +it.live("Amazon event-stream chunk frames reset the deadline", () => + Effect.gen(function* () { + const chunks = Array(15).fill(eventFrame("chunk")) + const result = yield* requestBody("application/vnd.amazon.eventstream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), +) + +it.live("Amazon event-stream chunk headers and slow payload pieces keep resetting the deadline", () => + Effect.gen(function* () { + const headers = eventFrame("chunk").slice(0, -4) + const pieces = Array.from({ length: 8 }, () => new Uint8Array(1024)) + new DataView(headers.buffer).setUint32(0, headers.length + 8 * 1024 + 4) + const chunks = [headers.slice(0, 12), headers.slice(12), ...pieces, new Uint8Array(4)] + const result = yield* requestBody( + "application/vnd.amazon.eventstream", + chunks, + chunks.map((_, i) => i * 30), + ) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), +) + +it.live("Amazon event-stream heartbeat frames with typed headers do not reset the deadline", () => + Effect.gen(function* () { + const headers = Uint8Array.from( + [0, 0, 1, 2, 4, 8, 2, 2, 8, 16].flatMap((length, type) => [1, 97 + type, type, ...Array(length).fill(0)]), + ) + const frame = eventFrame("heartbeat", headers) + const result = yield* requestBody("application/vnd.amazon.eventstream", Array(15).fill(frame)) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(15) + }), +) + +it.live("a malformed header after an Amazon event-stream heartbeat counts as output", () => + Effect.gen(function* () { + const frame = eventFrame("heartbeat", new Uint8Array(), new Uint8Array([1, 120, 255])) + const chunks = Array(15).fill(frame) + const result = yield* requestBody("application/vnd.amazon.eventstream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + }), +) + +it.live("split and coalesced Amazon event-stream frames reset only for model output", () => + Effect.gen(function* () { + const heartbeat = eventFrame("heartbeat") + const chunk = eventFrame("chunk") + const combined = new Uint8Array(heartbeat.length + chunk.length) + combined.set(heartbeat) + combined.set(chunk, heartbeat.length) + const chunks = [chunk.slice(0, 6), chunk.slice(6), combined] + const result = yield* requestBody("application/vnd.amazon.eventstream", chunks, [0, 30, 65]) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + }), +) + +it.live("split Amazon event-stream heartbeat frames do not reset the deadline", () => + Effect.gen(function* () { + const frame = eventFrame("heartbeat") + const chunks = Array.from({ length: 8 }, () => [frame.slice(0, 6), frame.slice(6)]).flat() + const result = yield* requestBody("application/vnd.amazon.eventstream", chunks) + + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.chunks.length).toBeLessThan(chunks.length) + }), +) + +for (const invalid of ["prelude", "header"] as const) { + it.live(`an unparseable Amazon event-stream ${invalid} counts as output`, () => + Effect.gen(function* () { + const frame = eventFrame("heartbeat") + if (invalid === "prelude") new DataView(frame.buffer).setUint32(0, 1) + else frame[12] = 255 + const chunks = Array(15).fill(frame) + const result = yield* requestBody("application/vnd.amazon.eventstream", chunks) + + expect(result.error).toBeUndefined() + expect(result.chunks).toEqual(chunks) + expect(result.signal?.aborted).toBe(false) + }), + ) +} + +it.live("zero idle timeout disables the watchdog including a configured chunk timeout", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "application/vnd.amazon.eventstream", + delays: [0, 180], + idleTimeout: 0, + chunkTimeout: 30, + }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunkchunk") + expect(result.signal?.aborted ?? false).toBe(false) + expect(result.aborts).toBe(0) + }), +) + +it.live("the environment idle timeout takes precedence over the provider chunk timeout", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 100], + idleTimeout: 200, + chunkTimeout: 30, + }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunkchunk") + expect(result.aborts).toBe(0) + }), +) + +it.live("the provider chunk timeout applies when the environment override is unset", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 180], + chunkTimeout: 50, + }) + + expect(result.text).toBe("chunk") + expect(result.error).toBeInstanceOf(ProviderError.StreamIdleTimeoutError) + expect(result.signal?.aborted).toBe(true) + expect(result.aborts).toBe(1) + }), +) + +it.live("the idle watchdog defaults to 300000ms when environment and provider overrides are absent", () => + Effect.gen(function* () { + const timeout = yield* Effect.acquireRelease( + Effect.sync(() => spyOn(globalThis, "setTimeout")), + (timeout) => Effect.sync(() => timeout.mockRestore()), + ) + const result = yield* request({ contentType: "text/event-stream", delays: [0], headerTimeout: false }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunk") + // Disable the header watchdog above so only the stream watchdog can schedule this deadline. + expect(timeout.mock.calls.map(([, ms]) => ms)).toContain(300_000) + }), +) + +it.live("a completed model stream has no idle watchdog during subsequent tool work", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0], + idleTimeout: 50, + afterCompletion: 150, + }) + + expect(result.error).toBeUndefined() + expect(result.text).toBe("chunk") + expect(result.signal?.aborted ?? false).toBe(false) + expect(result.aborts).toBe(0) + }), +) + +it.live("caller cancellation clears the pending idle watchdog", () => + Effect.gen(function* () { + const result = yield* request({ + contentType: "text/event-stream", + delays: [0, 300], + idleTimeout: 50, + afterCompletion: 150, + cancelAfter: 20, + }) + + expect(result.signal?.aborted).toBe(true) + expect(result.signal?.reason.message).toBe("Cancelled by user") + expect(result.aborts).toBe(1) + expect(result.error).toBeUndefined() + }), +) + +// Capture the real fetch wrapper through a temporary provider so binary frames reach +// the watchdog without an unrelated SDK decoder consuming or rejecting them first. +function requestBody(contentType: string, chunks: Uint8Array[], delays = chunks.map((_, i) => i * 10)) { + return provideTmpdirInstance((directory) => + Effect.gen(function* () { + const moduleURL = new URL(`file://${directory}/capture-provider.mjs`).href + yield* Effect.promise(async () => { + await Bun.write( + new URL(moduleURL), + "export let fetch; export function createProvider(options) { fetch = options.fetch; return { languageModel: () => ({}) } }", + ) + const config = testProviderConfig("https://idle-timeout.test") + config.provider.test.npm = moduleURL + await Bun.write(`${directory}/opencode.json`, JSON.stringify(config)) + }) + const state = { signal: undefined as AbortSignal | undefined, cancelled: false } + const timers = new Set>() + const clearTimers = () => { + for (const timer of timers) clearTimeout(timer) + } + yield* Effect.acquireRelease( + Effect.sync(() => { + const originalFetch = globalThis.fetch + const originalTimeout = process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = "50" + const fakeFetch = async (_input: RequestInfo | URL, init?: RequestInit) => { + state.signal = init?.signal ?? undefined + return new Response( + new ReadableStream({ + start(controller) { + for (const [index, delay] of delays.entries()) { + timers.add( + setTimeout(() => { + controller.enqueue(chunks[index]) + if (index === chunks.length - 1) controller.close() + }, delay), + ) + } + }, + cancel() { + state.cancelled = true + clearTimers() + }, + }), + { headers: { "content-type": contentType } }, + ) + } + globalThis.fetch = Object.assign(fakeFetch, { preconnect: originalFetch.preconnect.bind(originalFetch) }) + return { originalFetch, originalTimeout } + }), + ({ originalFetch, originalTimeout }) => + Effect.sync(() => { + clearTimers() + globalThis.fetch = originalFetch + if (originalTimeout === undefined) delete process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + else process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = originalTimeout + }), + ) + const provider = yield* Provider.Service + const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) + yield* provider.getLanguage(model) + return yield* Effect.promise(async () => { + const sdk = await import(moduleURL) + const response: Response = await sdk.fetch("https://idle-timeout.test/stream") + const reader = response.body!.getReader() + const received: Uint8Array[] = [] + let error: unknown + try { + while (true) { + const part = await reader.read() + if (part.done) break + received.push(part.value) + } + } catch (cause) { + error = cause + } finally { + reader.releaseLock() + } + return { ...state, chunks: received, error } + }) + }), + ) +} + +function eventFrame(eventType: string, before = new Uint8Array(), after = new Uint8Array()) { + const name = new TextEncoder().encode(":event-type") + const value = new TextEncoder().encode(eventType) + const headersLength = before.length + 1 + name.length + 1 + 2 + value.length + after.length + // CRCs and payload are opaque to the watchdog; only framing and headers matter. + const frame = new Uint8Array(16 + headersLength) + const view = new DataView(frame.buffer) + view.setUint32(0, frame.length) + view.setUint32(4, headersLength) + frame.set(before, 12) + const start = 12 + before.length + frame[start] = name.length + frame.set(name, start + 1) + frame[start + 1 + name.length] = 7 // string header + view.setUint16(start + 2 + name.length, value.length) + frame.set(value, start + 4 + name.length) + frame.set(after, start + 4 + name.length + value.length) + return frame +} + +function request(options: { + contentType?: string + delays: number[] + chunks?: string[] + retry?: boolean + idleTimeout?: number + chunkTimeout?: number + headerTimeout?: number | false + afterCompletion?: number + cancelAfter?: number +}) { + return Effect.gen(function* () { + const caller = new AbortController() + const state = { signal: undefined as AbortSignal | undefined, aborts: 0, requests: 0, executions: 0 } + const timers = new Set>() + const clearTimers = () => { + for (const timer of timers) clearTimeout(timer) + timers.clear() + } + yield* Effect.acquireRelease( + Effect.sync(() => { + const originalFetch = globalThis.fetch + const originalTimeout = process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + if (options.idleTimeout === undefined) delete process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + else process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = String(options.idleTimeout) + const fakeFetch = async (input: RequestInfo | URL, init?: RequestInit) => { + const url = input instanceof Request ? input.url : String(input) + if (!url.startsWith("https://idle-timeout.test/")) return originalFetch(input, init) + state.requests++ + state.signal = init?.signal ?? undefined + const body = new ReadableStream({ + start(controller) { + const abort = () => { + state.aborts++ + clearTimers() + if (caller.signal.aborted) controller.error(caller.signal.reason) + } + state.signal?.addEventListener("abort", abort, { once: true }) + if (options.cancelAfter !== undefined) { + timers.add( + setTimeout( + () => caller.abort(new DOMException("Cancelled by user", "AbortError")), + options.cancelAfter, + ), + ) + } + const delays = state.requests > 1 ? [0] : options.delays + for (const [index, delay] of delays.entries()) { + timers.add( + setTimeout(() => { + controller.enqueue( + new TextEncoder().encode( + (state.requests === 1 ? options.chunks?.[index] : undefined) ?? 'data: {"choices":[{"delta":{"content":"chunk"}}]}\n\n', + ), + ) + if (index !== delays.length - 1) return + controller.enqueue(new TextEncoder().encode("data: [DONE]\n\n")) + controller.close() + // Count late aborts too: the request must stay un-aborted during tool work. + state.signal?.removeEventListener("abort", abort) + state.signal?.addEventListener("abort", () => state.aborts++, { once: true }) + }, delay), + ) + } + }, + cancel: clearTimers, + }) + return new Response(body, { + headers: options.contentType ? { "content-type": options.contentType } : undefined, + }) + } + globalThis.fetch = Object.assign(fakeFetch, { preconnect: originalFetch.preconnect.bind(originalFetch) }) + return { originalFetch, originalTimeout } + }), + ({ originalFetch, originalTimeout }) => + Effect.sync(() => { + clearTimers() + globalThis.fetch = originalFetch + if (originalTimeout === undefined) delete process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS + else process.env.ALTIMATE_STREAM_IDLE_TIMEOUT_MS = originalTimeout + }), + ) + + return yield* provideTmpdirInstance( + () => + Effect.gen(function* () { + const provider = yield* Provider.Service + const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model")) + const language = yield* provider.getLanguage(model) + const output = yield* Effect.promise(async () => { + let text = "" + let error: unknown + for (let attempt = 0; attempt < (options.retry ? 2 : 1); attempt++) { + error = undefined + const result = streamText({ + model: language, + maxRetries: 0, + abortSignal: caller.signal, + onError() {}, + messages: [{ role: "user", content: "hello" }], + tools: { + mutate: { + inputSchema: jsonSchema>({ type: "object", properties: {} }), + execute: async () => { + state.executions++ + return "done" + }, + }, + }, + }) + try { + for await (const part of result.fullStream) { + if (part.type === "text-delta") text += part.text + if (part.type === "error") error = part.error + } + } catch (cause) { + error = cause + } + if (!error || !SessionRetry.retryable(MessageV2.fromError(error, { providerID: ProviderID.make("test") }))) + break + } + if (options.afterCompletion) await new Promise((resolve) => setTimeout(resolve, options.afterCompletion)) + return { text, error } + }) + return { ...state, ...output } + }), + { + config: () => { + const config = testProviderConfig("https://idle-timeout.test") + return { + ...config, + provider: { + test: { + ...config.provider.test, + options: { + ...config.provider.test.options, + chunkTimeout: options.chunkTimeout, + headerTimeout: options.headerTimeout, + }, + }, + }, + } + }, + }, + ) + }) +} +// altimate_change end diff --git a/packages/opencode/test/release-validation/chunk-timeout-844.test.ts b/packages/opencode/test/release-validation/chunk-timeout-844.test.ts index d962718e37..58547fe0e6 100644 --- a/packages/opencode/test/release-validation/chunk-timeout-844.test.ts +++ b/packages/opencode/test/release-validation/chunk-timeout-844.test.ts @@ -1,4 +1,4 @@ -import { beforeAll, describe, test, expect } from "bun:test" +import { beforeAll, describe, test, expect, mock, spyOn } from "bun:test" import { readFileSync } from "fs" import path from "path" @@ -12,11 +12,11 @@ import { prepareReleaseValidationDatabase } from "./db-prepare" // The watchdog lives in `getSDK` (provider.ts): a per-request fetch wrapper builds a // `chunkAbortCtl` AbortController, combines it with any per-request and per-provider // timeout signals via `AbortSignal.any`, then routes the fetched Response through the -// module-private `wrapSSE(res, ms, ctl)`. `wrapSSE` arms a `setTimeout(ms)` that aborts -// the controller + cancels the reader and rejects with "SSE read timed out" if no chunk +// module-private `wrapModelStream(res, ms, ctl, signal)`. `wrapModelStream` arms a `setTimeout(ms)` that aborts +// the controller + cancels the reader and rejects with "Response stream timed out after 50ms without a chunk" if no chunk // arrives within `ms`. // -// `DEFAULT_CHUNK_TIMEOUT`, `wrapSSE`, and `getSDK` are all module-private. We do NOT edit +// `DEFAULT_CHUNK_TIMEOUT`, `wrapModelStream`, and `getSDK` are all module-private. We do NOT edit // source to export them. Instead we reach the EXACT source-built fetch wrapper through a // supported public path: a provider configured with `npm: "file://"` makes // `getSDK` import our local module and call its `create*` factory with the assembled @@ -65,10 +65,15 @@ async function writeCapturingProvider(dir: string, options: Record { +async function captureWrapper(chunkTimeout?: number): Promise { delete (globalThis as any)[FETCH_KEY] const parsed = Provider.parseModel("fakeprov/m1") const model = await Provider.getModel(parsed.providerID, parsed.modelID) + // The config schema requires a positive timeout; in-memory SDK options can still contain zero. + if (chunkTimeout !== undefined) { + const provider = await Provider.getProvider(parsed.providerID) + provider.options.chunkTimeout = chunkTimeout + } await Provider.getLanguage(model) const wrapper = (globalThis as any)[FETCH_KEY] expect(typeof wrapper).toBe("function") @@ -93,19 +98,21 @@ function sseResponse(chunks: string[], close = false): Response { describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { beforeAll(() => prepareReleaseValidationDatabase()) - // Gap 1: default falls back to 300_000 (NOT the old 120_000) when no chunkTimeout is configured. - test("default_chunk_timeout_value_is_5min: wrapSSE arms setTimeout(300000) when chunkTimeout omitted", async () => { - await using tmp = await tmpdir({ init: (dir) => writeCapturingProvider(dir, { apiKey: "x" }) }) + // Gap 1: default falls back to 300_000 (NOT the old 120_000) when chunkTimeout is omitted or zero. + test.each([undefined, 0])("chunkTimeout=%s defaults to 5min", async (chunkTimeout) => { + await using tmp = await tmpdir({ + init: (dir) => writeCapturingProvider(dir, { apiKey: "x", headerTimeout: false }), + }) await Instance.provide({ directory: tmp.path, fn: async () => { - const wrapper = await captureWrapper() + const wrapper = await captureWrapper(chunkTimeout) const origFetch = globalThis.fetch const origSetTimeout = globalThis.setTimeout const delays: number[] = [] // Stub global fetch (no custom fetch configured → wrapper calls global fetch) to return SSE. globalThis.fetch = (async () => sseResponse(["data: hi\n\n"])) as any - // Stub setTimeout to record the delay wrapSSE arms, then delegate so timers still work. + // Stub setTimeout to record the delay wrapModelStream arms, then delegate so timers still work. globalThis.setTimeout = ((fn: any, ms?: any, ...rest: any[]) => { if (typeof ms === "number") delays.push(ms) return origSetTimeout(fn, ms, ...rest) @@ -113,7 +120,7 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { try { const res = await wrapper("http://x/v1/chat", { method: "POST" }) const reader = res.body!.getReader() - await reader.read() // first pull arms the wrapSSE watchdog timer + await reader.read() // first pull arms the wrapModelStream watchdog timer await reader.cancel() // stop the stream so the test exits cleanly // The watchdog delay must be the new 5-minute default, not the old 2-minute value. expect(delays).toContain(300_000) @@ -126,8 +133,8 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { }) }) - // Gap 2: wrapSSE aborts after a chunk gap — one chunk then stall → second read rejects + ctl aborts. - test("wrapSSE_aborts_after_chunk_gap: rejects with 'SSE read timed out' and aborts the request signal", async () => { + // Gap 2: wrapModelStream aborts after a chunk gap — one chunk then stall → second read rejects + ctl aborts. + test("wrapModelStream aborts a stalled chunk gap with a stream idle timeout", async () => { await using tmp = await tmpdir({ init: (dir) => writeCapturingProvider(dir, { apiKey: "x", chunkTimeout: 50 }) }) await Instance.provide({ directory: tmp.path, @@ -153,7 +160,7 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { err = e } expect(err).toBeInstanceOf(Error) - expect(err.message).toBe("SSE read timed out") + expect(err.message).toBe("Response stream timed out after 50ms without a chunk") // ctl.abort(err) propagated into the combined request signal. expect(seenSignal?.aborted).toBe(true) } finally { @@ -163,8 +170,82 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { }) }) - // Gap 3: wrapSSE passthrough — non-SSE content-type and null body are returned unwrapped (by reference). - describe("wrapSSE_passthrough_for_non_sse", () => { + // altimate_change start — cover wrapper-owned cancellation when fetch ignores the request signal + test.each(["caller", "reader", "already aborted caller"])( + "request cancellation clears watchdogs or skips fetch for %s cancellation", + async (mode) => { + await using tmp = await tmpdir({ + init: (dir) => writeCapturingProvider(dir, { apiKey: "x", chunkTimeout: 50, headerTimeout: false }), + }) + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const wrapper = await captureWrapper() + const originalFetch = globalThis.fetch + const caller = new AbortController() + const reason = new DOMException("Cancelled by user", "AbortError") + const cancel = mock(() => {}) + let seenSignal: AbortSignal | undefined + // This source never settles reads or reacts to abort: only wrapModelStream can unblock it. + globalThis.fetch = (async (_input: any, init?: any) => { + seenSignal = init?.signal + return new Response(new ReadableStream({ cancel }), { + headers: { "content-type": "text/event-stream" }, + }) + }) as any + const timeout = spyOn(globalThis, "setTimeout") + const clear = spyOn(globalThis, "clearTimeout") + try { + if (mode === "already aborted caller") { + caller.abort(reason) + // The fetch boundary now rejects before an ignored-signal hook can allocate a body. + const listen = spyOn(AbortSignal.prototype, "addEventListener") + try { + await expect(wrapper("http://x/v1/chat", { method: "POST", signal: caller.signal })).rejects.toBe( + reason, + ) + expect(listen).not.toHaveBeenCalled() + } finally { + listen.mockRestore() + } + expect(seenSignal).toBeUndefined() + expect(cancel).not.toHaveBeenCalled() + expect(timeout.mock.calls.some(([, ms]) => ms === 50)).toBe(false) + return + } + const res = await wrapper("http://x/v1/chat", { method: "POST", signal: caller.signal }) + const reader = res.body!.getReader() + const pending = reader.read() + const index = timeout.mock.calls.findLastIndex(([, ms]) => ms === 50) + expect(index).toBeGreaterThanOrEqual(0) + const watchdog = timeout.mock.results[index].value + + if (mode === "reader") { + await reader.cancel(reason) + expect(await pending).toEqual({ done: true, value: undefined }) + } else { + if (mode === "caller") caller.abort(reason) + await expect(pending).rejects.toBe(reason) + } + + expect(cancel).toHaveBeenCalledTimes(1) + expect(cancel).toHaveBeenCalledWith(reason) + expect(seenSignal?.aborted).toBe(true) + expect(seenSignal?.reason).toBe(reason) + expect(clear).toHaveBeenCalledWith(watchdog) + } finally { + timeout.mockRestore() + clear.mockRestore() + globalThis.fetch = originalFetch + } + }, + }) + }, + ) + // altimate_change end + + // Gap 3: wrapModelStream passthrough — non-SSE content-type and null body are returned unwrapped (by reference). + describe("wrapModelStream_passthrough_for_non_sse", () => { test("non-SSE content-type (application/json) is returned unchanged", async () => { await using tmp = await tmpdir({ init: (dir) => writeCapturingProvider(dir, { apiKey: "x" }) }) await Instance.provide({ @@ -197,7 +278,7 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { globalThis.fetch = (async () => nullBodyRes) as any try { const out = await wrapper("http://x/v1/chat", { method: "POST" }) - expect(out).toBe(nullBodyRes) // same reference — null body short-circuits wrapSSE + expect(out).toBe(nullBodyRes) // same reference — null body short-circuits wrapModelStream } finally { globalThis.fetch = origFetch } @@ -205,30 +286,33 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { }) }) - // `ms <= 0` passthrough (provider.ts:71) is the disable guard inside wrapSSE. The config - // schema (.positive()) and the `chunkTimeout > 0` guard in getSDK prevent ms<=0 from ever - // reaching wrapSSE through the public wrapper, so this case is asserted at the source level. - test("source: wrapSSE returns res unchanged when ms <= 0 (disable guard present)", () => { + // `ms <= 0` is the disable guard inside wrapModelStream. The public fetch wrapper skips + // wrapping when ALTIMATE_STREAM_IDLE_TIMEOUT_MS=0, so assert this defensive guard in source. + test("source: wrapModelStream returns res unchanged when ms <= 0 (disable guard present)", () => { const normalized = PROVIDER_SOURCE.replace(/\s+/g, " ") - expect(normalized).toContain("function wrapSSE(res: Response, ms: number, ctl: AbortController)") - expect(normalized).toContain('if (typeof ms !== "number" || ms <= 0) return res') - expect(normalized).toContain("if (!res.body) return res") - expect(normalized).toContain('if (!res.headers.get("content-type")?.includes("text/event-stream")) return res') + expect(normalized).toContain( + "function wrapModelStream(res: Response, ms: number, ctl: AbortController, signal: AbortSignal | null)", + ) + expect(normalized).toContain('if (typeof ms !== "number" || ms <= 0 || !res.body) return res') + // SSE and Bedrock's binary event-stream are watched; every other content type passes through + expect(normalized).toContain('const contentType = (res.headers.get("content-type") ?? "").toLowerCase()') + expect(normalized).toContain( + '!contentType.includes("text/event-stream") && !contentType.includes("application/vnd.amazon.eventstream")', + ) }) }) - // Gap 4: the watchdog can be fully disabled — chunkAbortCtl is undefined for non-positive - // chunkTimeout, and the fetch wrapper returns the raw res without wrapSSE in that case. - // The config schema blocks chunkTimeout<=0, so the disable path is asserted at the source level. + // Gap 4: ALTIMATE_STREAM_IDLE_TIMEOUT_MS=0 disables the watchdog; chunkAbortCtl is then + // undefined and the fetch wrapper returns the raw response without wrapModelStream. test("chunk_abort_controller_disabled_when_timeout_non_positive: source guards present", () => { const normalized = PROVIDER_SOURCE.replace(/\s+/g, " ") // chunkAbortCtl only constructed for a positive numeric chunkTimeout. expect(normalized).toContain( 'const chunkAbortCtl = typeof chunkTimeout === "number" && chunkTimeout > 0 ? new AbortController() : undefined', ) - // When no chunkAbortCtl, the raw response is returned without wrapSSE. + // When no chunkAbortCtl, the raw response is returned without wrapModelStream. expect(normalized).toContain("if (!chunkAbortCtl) return res") - expect(normalized).toContain("return wrapSSE(res, chunkTimeout, chunkAbortCtl)") + expect(normalized).toContain("return wrapModelStream(res, chunkTimeout, chunkAbortCtl, combined)") // The default itself is the new 5-minute value. expect(normalized).toContain("const DEFAULT_CHUNK_TIMEOUT = 300_000") expect(normalized).not.toContain("const DEFAULT_CHUNK_TIMEOUT = 120_000") @@ -244,7 +328,7 @@ describe("PR #844 — DEFAULT_CHUNK_TIMEOUT 2min→5min", () => { const wrapper = await captureWrapper() const origFetch = globalThis.fetch let seenSignal: AbortSignal | undefined - // Non-SSE response so wrapSSE passes it through; we only care about the combined signal. + // Non-SSE response so wrapModelStream passes it through; we only care about the combined signal. globalThis.fetch = (async (_input: any, init?: any) => { seenSignal = init?.signal return new Response(JSON.stringify({ ok: true }), { headers: { "content-type": "application/json" } }) diff --git a/packages/opencode/test/server/altimate-trace-routes.test.ts b/packages/opencode/test/server/altimate-trace-routes.test.ts index 19c68fe912..3e39e14161 100644 --- a/packages/opencode/test/server/altimate-trace-routes.test.ts +++ b/packages/opencode/test/server/altimate-trace-routes.test.ts @@ -163,3 +163,62 @@ describe("GET /altimate/trace/:sessionID/view", () => { expect(response.status).toBe(403) }) }) + +// altimate_change start — live prompt snapshots share the trace origin guard +test("trace event channel rejects browser-origin subscriptions", async () => { + const response = await get("/altimate/trace/event", { origin: "http://localhost:3000" }) + expect(response.status).toBe(403) +}) +// altimate_change end + +// altimate_change start — generic local/browser event streams never transport prompt snapshots +import { Bus } from "../../src/bus" +import { BusEvent } from "../../src/bus/bus-event" +import { Instance } from "../../src/project/instance" +import { LLMRequestEvent } from "../../src/altimate/observability/tracing" +import z from "zod" + +for (const route of ["/event", "/global/event", "/altimate/trace/event"]) { + test(`${route} ${route.includes("trace") ? "delivers" : "excludes"} private request snapshots`, async () => { + const controller = new AbortController() + const response = await Server.Default().request(`${route}?directory=${encodeURIComponent(process.cwd())}`, { + signal: controller.signal, + headers: route.includes("trace") ? {} : { origin: "http://localhost:3000" }, + }) + expect(response.status).toBe(200) + const reader = response.body!.getReader() + await reader.read() // connected handshake + const sentinel = BusEvent.define("test.trace.public", z.object({ ok: z.boolean() })) + try { + await Instance.provide({ + directory: process.cwd(), + fn: async () => { + await Bus.publish(LLMRequestEvent, { + requestID: "request_sse", + sessionID: "ses_sse", + messageID: "msg_sse", + userMessageID: "msg_user", + agent: "analyst", + providerID: "test", + modelID: "test", + startTime: 1, + system: "private instructions", + tools: [], + }) + await Bus.publish(sentinel, { ok: true }) + }, + }) + const next = await reader.read() + const body = new TextDecoder().decode(next.value) + if (route.includes("trace")) expect(body).toContain("private instructions") + else { + expect(body).toContain("test.trace.public") + expect(body).not.toContain("private instructions") + } + } finally { + controller.abort() + await reader.cancel() + } + }) +} +// altimate_change end diff --git a/packages/opencode/test/session/abortable-stream.test.ts b/packages/opencode/test/session/abortable-stream.test.ts new file mode 100644 index 0000000000..88b82c64a6 --- /dev/null +++ b/packages/opencode/test/session/abortable-stream.test.ts @@ -0,0 +1,92 @@ +import { expect, mock, spyOn, test } from "bun:test" +import { abortableStream } from "../../src/session/abortable-stream" + +test("abort ends a pending read even when iterator cleanup stalls", async () => { + const controller = new AbortController() + const remove = spyOn(controller.signal, "removeEventListener") + const reading = Promise.withResolvers() + const close = mock(() => new Promise>(() => {})) + const stream: AsyncIterable = { + [Symbol.asyncIterator]: () => ({ + next: () => { + reading.resolve() + return new Promise>(() => {}) + }, + return: close, + }), + } + try { + const pending = abortableStream(async () => stream, controller.signal).next() + await reading.promise + const reason = new Error("Generation cancelled") + controller.abort(reason) + await expect(pending).rejects.toBe(reason) + expect(close).toHaveBeenCalledTimes(1) + expect(remove).toHaveBeenCalledWith("abort", expect.any(Function)) + } finally { + remove.mockRestore() + } +}, 1_000) + +test("breaking consumption closes the iterator and removes the abort listener", async () => { + const controller = new AbortController() + const remove = spyOn(controller.signal, "removeEventListener") + const closed = Promise.withResolvers() + async function* source() { + try { + yield "first" + throw new Error("Consumption should have stopped") + } finally { + closed.resolve() + } + } + try { + for await (const value of abortableStream(async () => source(), controller.signal)) { + expect(value).toBe("first") + break + } + await closed.promise + expect(controller.signal.aborted).toBe(false) + expect(remove).toHaveBeenCalledWith("abort", expect.any(Function)) + } finally { + remove.mockRestore() + } +}, 1_000) + +test("abort during opening closes a late iterator without reading from it", async () => { + const controller = new AbortController() + const opened = Promise.withResolvers() + const opening = Promise.withResolvers>() + const closed = Promise.withResolvers() + const next = mock(async () => ({ done: false as const, value: "late output" })) + const pending = abortableStream(() => { + opened.resolve() + return opening.promise + }, controller.signal).next() + await opened.promise + const reason = new Error("Opening cancelled") + controller.abort(reason) + await expect(pending).rejects.toBe(reason) + opening.resolve({ + [Symbol.asyncIterator]: () => ({ + next, + return: async () => { + closed.resolve() + return { done: true as const, value: undefined } + }, + }), + }) + await closed.promise + expect(next).not.toHaveBeenCalled() +}, 1_000) + +test("an already aborted signal never opens the provider", async () => { + const controller = new AbortController() + const reason = new Error("Already cancelled") + controller.abort(reason) + const open = mock(async function* () { + yield "unused" + }) + await expect(abortableStream(async () => open(), controller.signal).next()).rejects.toBe(reason) + expect(open).not.toHaveBeenCalled() +}) diff --git a/packages/opencode/test/session/message-v2.test.ts b/packages/opencode/test/session/message-v2.test.ts index ca87e6fb29..802e1aac51 100644 --- a/packages/opencode/test/session/message-v2.test.ts +++ b/packages/opencode/test/session/message-v2.test.ts @@ -1,7 +1,9 @@ import { describe, expect, test } from "bun:test" import { SessionV1 } from "@opencode-ai/core/v1/session" import { APICallError } from "ai" -import { MessageV2 } from "../../src/session/message-v2" +import { MessageV2, isEchoTransportError } from "../../src/session/message-v2" +import { SessionRetry } from "../../src/session/retry" +import { ProviderError } from "../../src/provider/error" import { ProviderTransform } from "@/provider/transform" import type { Provider } from "@/provider/provider" @@ -1437,6 +1439,29 @@ describe("session.message-v2.fromError", () => { }) }) + // A first-byte (response headers) timeout used to fall through to UnknownError, which the + // session never retries — one slow provider accept ended an otherwise healthy run. + test("classifies a header timeout as a retryable APIError naming the deadline", () => { + const cause = new ProviderError.HeaderTimeoutError(10_000) + const result = MessageV2.fromError(cause, { providerID }) + + expect(result.name).toBe("APIError") + const data = result.data as MessageV2.APIError["data"] + expect(data.isRetryable).toBe(true) + // "timed out" keeps run accounting attributing an exhausted retry to a timeout. + expect(data.message).toBe("The model stopped responding: response headers timed out after 10s") + expect(data.metadata).toStrictEqual({ code: "ProviderHeaderTimeoutError", timeoutMs: "10000" }) + expect(SessionRetry.retryable(result)).toBe(data.message) + }) + + test("still treats other provider stream errors as non-retryable unknown errors", () => { + const cause = new ProviderError.ResponseStreamError("websocket closed") + const result = MessageV2.fromError(cause, { providerID }) + + expect(result.name).toBe("UnknownError") + expect(SessionRetry.retryable(result)).toBeUndefined() + }) + // BUG: REGRESSION: OpenAI Responses API server_error stream chunks should become retryable APIError. test("serializes OpenAI response server_error stream chunks as retryable APIError", () => { const body = { @@ -1506,6 +1531,132 @@ describe("session.message-v2.fromError", () => { expect(SessionV1.ContextOverflowError.isInstance(result)).toBe(true) }) + for (const statusCode of [400, 503]) { + for (const code of [ + "guardrail_intervened", "content_filter", "content_policy", "content_policy_violation", + "content_policy_blocked", "policy_violation", "safety_rejection", "moderation_blocked", + ]) { + test(`HTTP ${statusCode} structured ${code} overrides overflow text`, () => { + const result = MessageV2.fromError(new APICallError({ + message: "maximum context length exceeded", + url: "https://example.com", + requestBodyValues: {}, + statusCode, + isRetryable: statusCode === 503, + responseBody: JSON.stringify({ error: { code, message: "maximum context length exceeded" } }), + }), { providerID }) + + expect(result.name).toBe("APIError") + expect((result.data as MessageV2.APIError["data"]).metadata?.code).toBe(code) + expect(isEchoTransportError(result)).toBe(false) + }) + } + + test(`HTTP ${statusCode} nested orchestration guardrail overrides overflow text`, () => { + const result = MessageV2.fromError(new APICallError({ + message: "maximum context length exceeded", + url: "https://example.com", + requestBodyValues: {}, + statusCode, + isRetryable: statusCode === 503, + responseBody: JSON.stringify({ + error: { message: "maximum context length exceeded" }, + details: { orchestrationError: { code: "guardrail_intervened" } }, + }), + }), { providerID }) + + expect(result.name).toBe("APIError") + expect((result.data as MessageV2.APIError["data"]).metadata?.code).toBe("guardrail_intervened") + expect(isEchoTransportError(result)).toBe(false) + }) + } + + for (const code of ["context_length_exceeded", "content_length_exceeded"]) { + test(`an upstream ${code} wrapped by the gateway under provider_specific_fields is still an overflow`, () => { + const result = MessageV2.fromError(new APICallError({ + message: "Request failed", + url: "https://example.com", + requestBodyValues: {}, + statusCode: 400, + isRetryable: false, + responseBody: JSON.stringify({ + error: { + code: "invalid_request_error", + message: "upstream request failed", + provider_specific_fields: { error: { code, message: "maximum context length exceeded" } }, + }, + }), + }), { providerID }) + + expect(result.name).toBe("ContextOverflowError") + }) + } + + for (const code of ["context_length_exceeded", "content_length_exceeded"]) { + test(`a nested diagnostic ${code} never masks a top-level policy denial`, () => { + const result = MessageV2.fromError(new APICallError({ + message: "Request failed", + url: "https://example.com", + requestBodyValues: {}, + statusCode: 400, + isRetryable: false, + responseBody: JSON.stringify({ + error: { code: "policy_violation", message: "maximum context length exceeded" }, + details: { request: { code } }, + }), + }), { providerID }) + + expect(result.name).toBe("APIError") + expect(isEchoTransportError(result)).toBe(false) + expect((result as any).data.metadata.code).toBe("policy_violation") + }) + } + + for (const code of ["context_length_exceeded", "content_length_exceeded"]) { + test(`explicit ${code} remains overflow despite a nested policy code`, () => { + const result = MessageV2.fromError(new APICallError({ + message: "Request failed", + url: "https://example.com", + requestBodyValues: {}, + statusCode: 400, + isRetryable: false, + responseBody: JSON.stringify({ + error: { code }, + orchestrationError: { code: "guardrail_intervened" }, + }), + }), { providerID }) + + expect(result.name).toBe("ContextOverflowError") + }) + } + + test("an explicit policy code on HTTP 413 stays a policy error, not an overflow", () => { + const result = MessageV2.fromError(new APICallError({ + message: "Request failed", + url: "https://example.com", + requestBodyValues: {}, + statusCode: 413, + isRetryable: false, + responseBody: JSON.stringify({ error: { code: "policy_violation" } }), + }), { providerID }) + + expect(result.name).toBe("APIError") + expect(result).toHaveProperty("data.metadata.code", "policy_violation") + }) + + test("HTTP 413 without a policy code is still an overflow", () => { + const result = MessageV2.fromError(new APICallError({ + message: "Request failed", + url: "https://example.com", + requestBodyValues: {}, + statusCode: 413, + isRetryable: false, + responseBody: JSON.stringify({ error: { message: "request entity too large" } }), + }), { providerID }) + + expect(result.name).toBe("ContextOverflowError") + }) + test("does not classify 429 no body as context overflow", () => { const result = MessageV2.fromError( new APICallError({ diff --git a/packages/opencode/test/session/processor-effect.test.ts b/packages/opencode/test/session/processor-effect.test.ts index bb68e31364..3af5cf283a 100644 --- a/packages/opencode/test/session/processor-effect.test.ts +++ b/packages/opencode/test/session/processor-effect.test.ts @@ -2,7 +2,7 @@ import { SessionV1 } from "@opencode-ai/core/v1/session" import { Database } from "@opencode-ai/core/database/database" import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { EventV2Bridge } from "@/event-v2-bridge" -import { expect } from "bun:test" +import { expect, spyOn } from "bun:test" import { tool } from "ai" import { Cause, Effect, Exit, Fiber, Layer, Stream } from "effect" import path from "path" @@ -28,6 +28,12 @@ import { SessionEvent } from "@opencode-ai/core/session/event" import { SessionProjector } from "@opencode-ai/core/session/projector" import { LLMEvent } from "@opencode-ai/llm" import { provideTmpdirInstanceLegacy, provideTmpdirServerLegacy } from "./legacy-instance" +// altimate_change start — exercise real provider serialization without a listening socket +import { createOpenAICompatible } from "@ai-sdk/openai-compatible" +// altimate_change end +// altimate_change start — request-only run budget interruption regressions +import { RunBudget } from "@/altimate/run-budget" +// altimate_change end const summary = Layer.succeed( SessionSummary.Service, @@ -271,6 +277,520 @@ const runProcess = ( // Tests // --------------------------------------------------------------------------- +const streamGuard = testEffect(LayerNode.buildLayer(root, { replacements })) + +for (const deadline of ["soft", "hard"] as const) { + for (const stall of ["opening", "after tool result"] as const) { + streamGuard.live(`${deadline} deadline ends an unresponsive provider ${stall}`, () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "Summarize the lookup.") + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, model: mdl, abort: controller.signal, + }) + const stalled = defer() + const release = defer() + let requestSignal: AbortSignal | undefined + let idleBeforeCleanup = false + const setStatus = SessionStatus.set + const status = spyOn(SessionStatus, "set").mockImplementation(async (sessionID, value) => { + if (sessionID === chat.id && value.type === "idle" && stall === "after tool result") { + idleBeforeCleanup ||= !MessageV2.parts(msg.id).some((part) => part.type === "text" && part.time?.end) + } + return setStatus(sessionID, value) + }) + const stream = spyOn(LLM, "stream").mockImplementation(async (request) => { + requestSignal = request.abort + if (stall === "opening") { + stalled.resolve() + await release.promise + } + async function* fullStream() { + yield { type: "start-step" } + yield { type: "text-start", id: "reply" } + yield { type: "text-delta", id: "reply", text: "A partial finding." } + const execution = handle.beginToolExecution("lookup-1") + yield { type: "tool-input-start", id: "lookup-1", toolName: "lookup" } + yield { type: "tool-call", toolCallId: "lookup-1", toolName: "lookup", input: {} } + handle.finishToolExecution(execution) + yield { + type: "tool-result", toolCallId: "lookup-1", toolName: "lookup", input: {}, + output: { output: "A completed lookup.", title: "lookup", metadata: {} }, + } + stalled.resolve() + // Neither the pending read nor iterator.return() cooperates with cancellation. + await release.promise + } + return { fullStream: fullStream() } as unknown as Awaited> + }) + const fiber = yield* Effect.forkChild(runProcess(handle, controller, { + user: userInput(parent, chat.id), sessionID: chat.id, model: mdl, agent: agent(), + system: [], messages: [{ role: "user", content: "Summarize the lookup." }], tools: {}, + })) + try { + yield* Effect.promise(() => stalled.promise) + if (deadline === "soft") RunBudget.interruptGeneration(chat.id) + else controller.abort() + expect(yield* Fiber.join(fiber).pipe(Effect.timeout("1 second"))).toBe( + deadline === "soft" ? "continue" : "stop", + ) + expect(requestSignal?.aborted).toBe(true) + expect(controller.signal.aborted).toBe(deadline === "hard") + expect(handle.message.time.completed).toBeNumber() + expect(handle.message.error?.name).toBe(deadline === "hard" ? "MessageAbortedError" : undefined) + expect(idleBeforeCleanup).toBe(false) + if (stall === "after tool result") { + expect(MessageV2.parts(msg.id)).toContainEqual(expect.objectContaining({ + type: "tool", state: expect.objectContaining({ status: "completed", output: "A completed lookup." }), + })) + expect(MessageV2.parts(msg.id)).toContainEqual(expect.objectContaining({ + type: "text", text: "A partial finding.", time: expect.objectContaining({ end: expect.any(Number) }), + })) + } + } finally { + controller.abort() + release.resolve() + stream.mockRestore() + status.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), + ) + } +} + +streamGuard.live("parent abort preserves committed findings from a still-running child task", () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "Delegate a lookup.") + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const child = yield* session.create({ parentID: chat.id }) + const childUser = yield* user(child.id, "Look up the items.") + const childReply = yield* assistant(child.id, childUser.id, path.resolve(dir)) + yield* session.updatePart({ + id: PartID.ascending(), sessionID: child.id, messageID: childReply.id, + type: "text", text: "Found three matching items.", + }) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, model: mdl, abort: controller.signal, + }) + const stalled = defer() + const release = defer() + const stream = spyOn(LLM, "stream").mockImplementation(async () => { + async function* fullStream() { + yield { type: "start-step" } + handle.beginToolExecution("task-1") + yield { type: "tool-input-start", id: "task-1", toolName: "task" } + yield { type: "tool-call", toolCallId: "task-1", toolName: "task", input: {} } + stalled.resolve() + await release.promise + } + return { fullStream: fullStream() } as unknown as Awaited> + }) + try { + const fiber = yield* Effect.forkChild(runProcess(handle, controller, { + user: userInput(parent, chat.id), sessionID: chat.id, model: mdl, agent: agent(), + system: [], messages: [{ role: "user", content: "Delegate a lookup." }], tools: {}, + })) + yield* Effect.promise(() => stalled.promise) + const part = handle.partFromToolCall("task-1")! + if (part.state.status !== "running") throw new Error("task was not running") + yield* session.updatePart({ + ...part, state: { ...part.state, title: "Lookup", metadata: { sessionId: child.id, messageID: childUser.id } }, + }) + controller.abort() + expect(yield* Fiber.join(fiber).pipe(Effect.timeout("1 second"))).toBe("stop") + expect(MessageV2.parts(msg.id)).toContainEqual(expect.objectContaining({ + type: "tool", tool: "task", state: expect.objectContaining({ + status: "completed", metadata: expect.objectContaining({ interrupted: true, sessionId: child.id }), + output: expect.stringContaining("Found three matching items."), + }), + })) + } finally { + controller.abort() + release.resolve() + stream.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), +) + +// altimate_change start — soft deadlines retain partial output and settle tools before interrupting +for (const toolState of ["none", "running", "result queued"] as const) { + const withTool = toolState !== "none" + streamGuard.live(`soft budget interrupts only the provider request (tool: ${toolState})`, () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "Finish before the time budget.") + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, + model: mdl, + abort: controller.signal, + }) + let interrupted = false + const stream = spyOn(LLM, "stream").mockImplementation(async (request) => { + async function* fullStream() { + yield { type: "start" } + yield { type: "start-step" } + yield { type: "reasoning-start", id: "thought" } + yield { type: "reasoning-delta", id: "thought", text: "Keep this reasoning" } + yield { type: "text-start", id: "reply" } + yield { type: "text-delta", id: "reply", text: "Keep this partial answer" } + const execution = withTool ? handle.beginToolExecution("lookup-1") : undefined + if (toolState === "result queued") { + handle.finishToolExecution(execution!) + RunBudget.interruptGeneration(chat.id) + expect(request.abort.aborted).toBe(false) + } + if (withTool) { + yield { type: "tool-input-start", id: "lookup-1", toolName: "lookup" } + yield { type: "tool-call", toolCallId: "lookup-1", toolName: "lookup", input: {} } + } + RunBudget.interruptGeneration(chat.id) + if (withTool) { + expect(request.abort.aborted).toBe(false) + if (toolState !== "result queued") handle.finishToolExecution(execution!) + yield { + type: "tool-result", toolCallId: "lookup-1", toolName: "lookup", input: {}, + output: { output: "Keep the completed tool result", title: "lookup", metadata: {} }, + } + } + expect(request.abort.aborted).toBe(true) + expect(controller.signal.aborted).toBe(false) + interrupted = true + throw request.abort.reason + } + return { fullStream: fullStream() } as unknown as Awaited> + }) + try { + const result = yield* runProcess(handle, controller, { + user: userInput(parent, chat.id), sessionID: chat.id, model: mdl, agent: agent(), + system: [], messages: [{ role: "user", content: "Finish before the time budget." }], tools: {}, + }) + expect(interrupted).toBe(true) + expect(result).toBe("continue") + expect(handle.message.error).toBeUndefined() + expect(handle.message.finish).toBeUndefined() + expect(controller.signal.aborted).toBe(false) + expect(stream).toHaveBeenCalledTimes(1) + const parts = MessageV2.parts(msg.id) + expect(parts).toContainEqual(expect.objectContaining({ + type: "reasoning", text: "Keep this reasoning", time: expect.objectContaining({ end: expect.any(Number) }), + })) + expect(parts).toContainEqual(expect.objectContaining({ + type: "text", text: "Keep this partial answer", time: expect.objectContaining({ end: expect.any(Number) }), + })) + if (withTool) expect(parts).toContainEqual(expect.objectContaining({ + type: "tool", state: expect.objectContaining({ status: "completed", output: "Keep the completed tool result" }), + })) + } finally { + stream.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), + ) +} +// altimate_change end + +// altimate_change start — use the real SDK stream with a transport that only ends on abort +streamGuard.live("soft budget drains an executing tool before aborting the hanging SDK provider", () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "Finish before the time budget.") + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, model: mdl, abort: controller.signal, + }) + const started = defer() + const release = defer() + let transportSignal: AbortSignal | undefined + let requests = 0 + const response = reply().text("Preserve partial text.").tool("lookup", {}).hang().item() + if (response.type !== "sse") throw new Error("expected SSE response") + const language = createOpenAICompatible({ + name: "test", baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests++ + transportSignal = init?.signal ?? undefined + return new Response(new ReadableStream({ + start(stream) { + for (const chunk of [...response.head, ...response.tail]) { + stream.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(chunk)}\n\n`)) + } + transportSignal!.addEventListener("abort", () => stream.error(transportSignal!.reason), { once: true }) + }, + }), { headers: { "Content-Type": "text/event-stream" } }) + }) as typeof fetch, + }).chatModel("test-model") + const getLanguage = spyOn(Provider, "getLanguage").mockResolvedValue(language) + try { + const fiber = yield* Effect.forkChild(runProcess(handle, controller, { + user: userInput(parent, chat.id), sessionID: chat.id, model: mdl, agent: agent(), + system: [], messages: [{ role: "user", content: "Finish before the time budget." }], + tools: { + lookup: tool({ + inputSchema: z.object({}), + execute: async (_input, options) => { + const execution = handle.beginToolExecution(options.toolCallId) + started.resolve() + try { + await release.promise + expect(options.abortSignal?.aborted).toBe(false) + return { output: "The completed lookup result", title: "lookup", metadata: {} } + } finally { + handle.finishToolExecution(execution) + } + }, + }), + }, + })) + yield* Effect.promise(() => started.promise) + RunBudget.interruptGeneration(chat.id) + expect(transportSignal?.aborted).toBe(false) + release.resolve() + expect(yield* Fiber.join(fiber)).toBe("continue") + expect(transportSignal?.aborted).toBe(true) + expect(controller.signal.aborted).toBe(false) + expect(handle.message.error).toBeUndefined() + expect(requests).toBe(1) + const parts = MessageV2.parts(msg.id) + expect(parts).toContainEqual(expect.objectContaining({ type: "text", text: "Preserve partial text." })) + expect(parts).toContainEqual(expect.objectContaining({ + type: "tool", state: expect.objectContaining({ status: "completed", output: "The completed lookup result" }), + })) + } finally { + release.resolve() + getLanguage.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), +) +// altimate_change end + +for (const finishReason of ["other", "stop"] as const) { + for (const content of ["none", "text", "tool", "reasoning", "prior-step"] as const) { + for (const usageCase of ["zero", "undefined", "nonzero", "details-only"] as const) { + streamGuard.live(`empty stream guard: ${finishReason}, ${content}, usage ${usageCase}`, () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "hi") + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, + model: mdl, + abort: controller.signal, + }) + const tokens = usageCase === "zero" ? 0 : usageCase === "nonzero" ? 1 : undefined + const usage = { + inputTokens: tokens, + outputTokens: tokens, + totalTokens: tokens, + ...(usageCase === "details-only" && { inputTokenDetails: { cacheWriteTokens: 1 } }), + } + const stream = spyOn(LLM, "stream").mockImplementation(async () => { + async function* fullStream() { + yield { type: "start" } + yield { type: "start-step" } + if (content === "text" || content === "prior-step") { + yield { type: "text-start", id: "reply" } + yield { type: "text-delta", id: "reply", text: "Hello" } + yield { type: "text-end", id: "reply" } + } + if (content === "reasoning") { + yield { type: "reasoning-start", id: "thought" } + yield { type: "reasoning-delta", id: "thought", text: "Thinking" } + yield { type: "reasoning-end", id: "thought" } + } + if (content === "tool") { + yield { type: "tool-input-start", id: "call-1", toolName: "lookup" } + yield { type: "tool-call", toolCallId: "call-1", toolName: "lookup", input: {} } + yield { + type: "tool-result", + toolCallId: "call-1", + toolName: "lookup", + input: {}, + output: { output: "ok", title: "lookup", metadata: {} }, + } + } + if (content === "prior-step") { + yield { + type: "finish-step", + finishReason: "stop", + usage: { inputTokens: 1, outputTokens: 1, totalTokens: 2 }, + } + yield { type: "start-step" } + } + yield { type: "finish-step", finishReason, usage } + yield { type: "finish", finishReason, totalUsage: usage } + } + return { fullStream: fullStream() } as unknown as Awaited> + }) + try { + const result = yield* runProcess(handle, controller, { + user: userInput(parent, chat.id), + sessionID: chat.id, + model: mdl, + agent: agent(), + system: [], + messages: [{ role: "user", content: "hi" }], + tools: {}, + }) + const empty = content === "none" || content === "prior-step" + if (finishReason === "other" && empty && (usageCase === "zero" || usageCase === "undefined")) { + expect(result).toBe("stop") + expect(handle.message.error?.data).toMatchObject({ + message: expect.stringContaining("the response likely could not be decoded"), + }) + } else { + expect(handle.message.error).toBeUndefined() + expect(result).toBe("continue") + } + if (content === "text" || content === "reasoning" || content === "tool") { + expect(MessageV2.parts(msg.id).some((part) => part.type === content)).toBe(true) + } + } finally { + stream.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), + ) + } + } +} + +// altimate_change start — a tool result must survive the next request's estimator and transport +streamGuard.live("session.processor continues after a BigInt tool result", () => + provideTmpdirInstanceLegacy( + (dir) => + Effect.gen(function* () { + const { processors, session, provider } = yield* boot() + const chat = yield* session.create({}) + const parent = yield* user(chat.id, "Count the qualifying projects.") + const previous = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const msg = yield* assistant(chat.id, parent.id, path.resolve(dir)) + const mdl = yield* refModel(provider) + const controller = new AbortController() + const handle = yield* processors.create({ + assistantMessage: msg as unknown as MessageV2.Assistant, + sessionID: chat.id, + model: mdl, + abort: controller.signal, + }) + // Inject at the completed-tool replay boundary, before conversion to the + // AI SDK messages. Ordinary SQL tools format output as text; external + // tools can still return native values despite the declared string type. + const fakeTool = async () => ({ + output: 9223372036854775807n, + metadata: { qualifying_projects: 9223372036854775807n, lint_rules: ["null_propagating_concat"] }, + title: "COUNT", + }) + const result = yield* Effect.promise(fakeTool) + const history = [ + { + info: previous, + parts: [ + { + id: PartID.ascending(), + messageID: previous.id, + sessionID: chat.id, + type: "tool", + tool: "count_projects", + callID: "call_count", + state: { status: "completed", input: {}, ...result, time: { start: 1, end: 2 } }, + }, + ], + }, + ] as unknown as MessageV2.WithParts[] + const messages = yield* MessageV2.toModelMessagesEffect(history, mdl) + const requests: unknown[] = [] + const response = reply().text("There are 9223372036854775807 qualifying projects.").stop().item() + if (response.type !== "sse") throw new Error("expected SSE response") + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + return new Response( + [...response.head, ...response.tail].map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + + "data: [DONE]\n\n", + { + headers: { "Content-Type": "text/event-stream" }, + }, + ) + }) as typeof fetch, + }).chatModel("test-model") + const getLanguage = spyOn(Provider, "getLanguage").mockResolvedValue(language) + try { + const value = yield* runProcess(handle, controller, { + user: userInput(parent, chat.id), + sessionID: chat.id, + model: mdl, + agent: agent(), + system: [], + messages, + tools: { count_projects: tool({ inputSchema: z.object({}) }) }, + }) + + // Before the fix this is UnknownError: JSON.stringify cannot serialize + // BigInt, with zero tokens and no HTTP call or llm.request trace event. + expect(handle.message.error).toBeUndefined() + expect(value).toBe("continue") + expect(requests).toHaveLength(1) + expect(JSON.stringify(requests)).toContain("9223372036854775807") + expect(MessageV2.parts(msg.id)).toContainEqual( + expect.objectContaining({ + type: "text", + text: "There are 9223372036854775807 qualifying projects.", + }), + ) + expect(result.output).toBe(9223372036854775807n) + expect(result.metadata.qualifying_projects).toBe(9223372036854775807n) + } finally { + getLanguage.mockRestore() + } + }), + { config: { ...cfg, snapshot: false } }, + ), +) +// altimate_change end + it.live("session.processor effect tests capture llm input cleanly", () => provideTmpdirServerLegacy( ({ dir, llm }) => diff --git a/packages/opencode/test/session/prompt.test.ts b/packages/opencode/test/session/prompt.test.ts index 4cae5cb3ea..f250e5f098 100644 --- a/packages/opencode/test/session/prompt.test.ts +++ b/packages/opencode/test/session/prompt.test.ts @@ -64,6 +64,13 @@ import { ProviderID, ModelID } from "@/provider/schema" import { ProviderV2 } from "@opencode-ai/core/provider" import { ModelV2 } from "@opencode-ai/core/model" import { withLegacyInstanceRunner } from "./legacy-instance" +// altimate_change start — run budget prompt integration without a listening socket +import { createOpenAICompatible } from "@ai-sdk/openai-compatible" +import { withBudgetControl } from "@/altimate/session/run-budget-control" +import { SessionTermination } from "@/session/termination" +import * as RunBudgetEffort from "@/altimate/session/run-budget-effort" +import { Bus } from "@/bus" +// altimate_change end const summary = Layer.succeed( SessionSummary.Service, @@ -477,6 +484,96 @@ const boot = Effect.fn("test.boot")(function* (input?: { title?: string }) { return { prompt, run, sessions, chat } }) +// altimate_change start — the saved noReply nudge resumes the actual loop with low provider effort +for (const downgrade of [true, false]) { + noLLMServer.instance(`soft budget resumes a hanging provider with the persisted nudge (downgrade: ${downgrade})`, () => + Effect.gen(function* () { + const { chat, prompt } = yield* boot() + const context = yield* Effect.context() + const previousDowngrade = process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE + process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE = downgrade ? "1" : "0" + const published = spyOn(Bus, "publish") + const requests: Record[] = [] + let interrupted = false + const partial = reply().reason("Keep the prior reasoning.").text("Partial work.").hang().item() + const complete = reply().text("Final budget answer.\nDONE").stop().item() + if (partial.type !== "sse" || complete.type !== "sse") throw new Error("expected SSE responses") + const language = createOpenAICompatible({ + name: "test", baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + if (requests.length !== 1) { + return new Response([...complete.head, ...complete.tail] + .map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + "data: [DONE]\n\n", + { headers: { "Content-Type": "text/event-stream" } }) + } + return new Response(new ReadableStream({ + start(stream) { + for (const chunk of [...partial.head, ...partial.tail]) { + stream.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(chunk)}\n\n`)) + } + init!.signal!.addEventListener("abort", () => { + interrupted = true + stream.error(init!.signal!.reason) + }, { once: true }) + }, + }), { headers: { "Content-Type": "text/event-stream" } }) + }) as typeof fetch, + }).chatModel("test-model") + const getLanguage = spyOn(ProviderSvc, "getLanguage").mockResolvedValue(language) + const registryTools = spyOn(ToolRegistry, "tools").mockResolvedValue([]) + const mcpTools = spyOn(MCP, "tools").mockResolvedValue({}) + const post = (control: string, body: Pick) => + withBudgetControl({ sessionID: chat.id, control, noReply: body.noReply }, () => + Effect.runPromise(prompt.prompt({ sessionID: chat.id, agent: "build", model: promptRef, variant: "high", ...body }).pipe(Effect.provide(context))), + ) + try { + const work = yield* Effect.sync(() => post("work", { parts: [{ type: "text", text: "Finish before the budget." }] })) + yield* pollWithTimeout( + Effect.sync(() => published.mock.calls.some(([event, properties]) => { + const delta = properties as { sessionID?: string; delta?: string } + return event === MessageV2.Event.PartDelta && delta.sessionID === chat.id && delta.delta === "Partial work." + }) ? true : undefined), + "provider did not emit the partial answer", + "20 seconds", + ) + yield* Effect.promise(() => post("soft", { + noReply: true, + parts: [{ type: "text", text: SessionTermination.REPLY_BEFORE_TIME_BUDGET, synthetic: true }], + })) + const result = yield* Effect.promise(() => work) + expect(interrupted).toBe(true) + expect(result.info).not.toHaveProperty("error") + expect(result.parts).toContainEqual(expect.objectContaining({ type: "text", text: "Final budget answer.\nDONE" })) + expect(requests).toHaveLength(2) + expect(requests[0].reasoning_effort).toBe("high") + expect(requests[1].reasoning_effort).toBe(downgrade ? "low" : "high") + expect(JSON.stringify(requests[1].messages)).toContain("Partial work.") + expect(JSON.stringify(requests[1].messages)).toContain(SessionTermination.REPLY_BEFORE_TIME_BUDGET) + expect(RunBudgetEffort.effortOverride(chat.id)).toBe(false) + } finally { + getLanguage.mockRestore() + registryTools.mockRestore() + mcpTools.mockRestore() + published.mockRestore() + if (previousDowngrade === undefined) delete process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE + else process.env.ALTIMATE_RUN_BUDGET_EFFORT_DOWNGRADE = previousDowngrade + } + }), + { + config: { + ...cfg, snapshot: false, learn: { enabled: false }, + provider: { test: { ...cfg.provider.test, models: { "test-model": { + ...cfg.provider.test.models["test-model"], reasoning: true, variants: { high: { reasoningEffort: "high" } }, + } } } }, + }, + }, + 30_000, + ) +} +// altimate_change end + +// altimate_change start - ambient environment stays outside the cached prompt prefix noLLMServer.instance( "prompt loop separates ambient environment from cached instructions and user content", () => Effect.gen(function* () { @@ -525,6 +622,7 @@ noLLMServer.instance( { config: { ...cfg, snapshot: false, learn: { enabled: false } } }, 30_000, ) +// altimate_change end // altimate_change start - approved lessons are harness-delivered without changing cached prefixes for (const change of ["lower budget", "replacement", "disabled config", "disabled env"] as const) { @@ -933,6 +1031,204 @@ it.instance("learn file hooks append glob and anchor matches once and respect th // Loop semantics +// altimate_change start - an answer committed before the step limit must still be echoed +for (const mode of [ + "committed", + "failed", + "structured", + "compacted", + "compacted-usage", + "compacted-unlimited", + "compacted-new-request", + "compacted-synthetic-request", + "compacted-overflow", +] as const) { + const compacts = mode.startsWith("compacted") + const newRequest = mode === "compacted-new-request" || mode === "compacted-synthetic-request" + const scenario = { + committed: "the exact final echo", + failed: "the failed-call limit", + structured: "the user output schema", + compacted: "the exact rows after automatic compaction", + "compacted-usage": "the exact rows after usage-triggered compaction", + "compacted-unlimited": "the exact rows after compaction without a step limit", + "compacted-new-request": "the newer user request after compaction", + "compacted-synthetic-request": "the newer synthetic user request after compaction", + "compacted-overflow": "the exact rows after compaction and directly recovers an echo overflow", + }[mode] + noLLMServer.instance( + `answer_commit preserves ${scenario}`, + () => + Effect.gen(function* () { + const { prompt, chat, sessions } = yield* boot() + const requests: Record[] = [] + const requestCount = compacts ? 3 : 2 + const rows = Array.from({ length: 60 }, (_, index) => [`${index}: ${"x".repeat(500)}`]) + const answer = compacts ? ["| value |", "|---|", ...rows.map(([value]) => `| ${value} |`)].join("\n") : "42" + const args = + mode === "failed" + ? {} + : compacts + ? { + rows: { columns: ["value"], values: rows }, + answer_only: true, + basis: "Selected all records at record grain using records.value.", + } + : { + fields: [{ name: "", value: 42 }], + answer_only: true, + basis: "Counted all records at record grain using records.id.", + } + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: Object.assign( + async (_url: string | URL | Request, init?: RequestInit) => { + if (typeof init?.body !== "string") throw new Error("expected a JSON request body") + const request = JSON.parse(init.body) + requests.push(request) + if (requests.length > requestCount) throw new Error("answer_commit exceeded its generation budget") + if (mode === "compacted-overflow" && requests.length === 3) { + return new Response(JSON.stringify({ error: { message: "request entity too large" } }), { + status: 413, + headers: { "Content-Type": "application/json" }, + }) + } + if (newRequest && requests.length === 2) { + const userID = MessageID.ascending() + await LegacySession.updateMessage({ + id: userID, + sessionID: chat.id, + role: "user", + agent: "analyst", + model: promptRef, + time: { created: Date.now() }, + }) + await LegacySession.updatePart({ + id: PartID.ascending(), + messageID: userID, + sessionID: chat.id, + type: "text", + synthetic: mode === "compacted-synthetic-request", + text: "A new question arrived during compaction; do not repeat the previous answer.", + }) + } + const limited = JSON.stringify(request.messages).includes("CRITICAL - MAXIMUM STEPS REACHED") + const response = + requests.length === 1 + ? reply() + .tool( + mode === "structured" ? "tool_lookup" : "answer_commit", + mode === "structured" ? { tool_name: "__missing_tool" } : args, + ) + .usage({ input: mode === "compacted-usage" ? 80_000 : compacts ? 70_000 : 1, output: 1 }) + .item() + : compacts && requests.length === 2 + ? reply().text("The rows were committed. Continue with the final reply.").stop().item() + : mode === "structured" + ? reply().tool("StructuredOutput", { count: 42 }).item() + : reply() + .text(limited ? "Maximum steps reached." : compacts ? "The rows were compacted away." : answer) + .stop() + .item() + if (response.type !== "sse") throw new Error("expected SSE response") + return new Response( + [...response.head, ...response.tail].map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + + "data: [DONE]\n\n", + { headers: { "Content-Type": "text/event-stream" } }, + ) + }, + { preconnect: () => undefined }, + ), + }).chatModel("test-model") + const languageSpy = spyOn(ProviderSvc, "getLanguage").mockResolvedValue(language) + try { + const result = yield* prompt.prompt({ + sessionID: chat.id, + agent: "analyst", + model: promptRef, + parts: [{ type: "text", text: "How many rows? Reply with only the count." }], + ...(mode === "structured" + ? { + format: { + type: "json_schema" as const, + retryCount: 0, + schema: { + type: "object", + properties: { count: { type: "number" } }, + required: ["count"], + additionalProperties: false, + }, + }, + } + : {}), + }) + expect(result.info).not.toHaveProperty("error") + expect(requests).toHaveLength(requestCount) + const messages = yield* sessions.messages({ sessionID: chat.id }) + if (mode === "compacted-overflow") { + expect(result.info).toHaveProperty("finish", "stop") + expect(result.info).toHaveProperty("metadata.answer_commit_echo_error.name", "ContextOverflowError") + const persisted = messages.find((message) => message.info.id === result.info.id) + expect(persisted?.info).not.toHaveProperty("error") + expect(persisted?.info).toHaveProperty("metadata.answer_commit_echo_error.name", "ContextOverflowError") + expect(messages.filter((message) => message.info.role === "assistant" && message.info.summary)).toHaveLength(1) + } + const commit = messages + .flatMap((message) => message.parts) + .find((part): part is MessageV2.ToolPart => part.type === "tool" && part.tool === "answer_commit") + expect(commit?.state.status).toBe(mode === "structured" ? undefined : mode === "failed" ? "error" : "completed") + if (mode === "committed" || (compacts && !newRequest)) { + const finalRequest = requests.at(-1)! + expect(JSON.stringify(finalRequest.messages)).not.toContain("CRITICAL - MAXIMUM STEPS REACHED") + expect(finalRequest.tools ?? []).toHaveLength(0) + expect(requestText(requestMessages(finalRequest).at(-1)!.content)).toBe( + "Tools are disabled. Reply with exactly the text returned by answer_commit and nothing else.", + ) + if (compacts) { + expect(messages.some((message) => message.info.role === "assistant" && message.info.summary)).toBe(true) + expect( + requestMessages(finalRequest).some((message) => requestText(message.content).includes(answer)), + ).toBe(false) + expect(commit?.state.status === "completed" && commit.state.metadata.truncated).toBe(false) + } + expect( + result.parts + .filter((part) => part.type === "text") + .map((part) => part.text) + .join(""), + ).toBe(answer) + } else if (mode === "failed" || newRequest) { + expect(JSON.stringify(requests.at(-1)!.messages)).toContain("CRITICAL - MAXIMUM STEPS REACHED") + expect(result.parts).toContainEqual( + expect.objectContaining({ type: "text", text: "Maximum steps reached." }), + ) + } else { + for (const request of requests) { + expect(JSON.stringify(request.tools)).not.toContain('"name":"answer_commit"') + } + expect(requests[1].tool_choice).toBe("required") + expect(result.info).toHaveProperty("structured", { count: 42 }) + } + } finally { + languageSpy.mockRestore() + } + }), + { + config: { + ...cfg, + snapshot: false, + learn: { enabled: false }, + agent: { + analyst: { steps: mode === "compacted-unlimited" ? undefined : 2, permission: { StructuredOutput: "allow" } }, + }, + }, + }, + 30_000, + ) +} +// altimate_change end + noLLMServer.instance( "loop exits immediately when last assistant has stop finish", () => @@ -1051,6 +1347,72 @@ it.instance("loop surfaces content-filter finishes as session errors", () => ) }), ) +// altimate_change start - provider length codes must retain the automatic compaction path +noLLMServer.instance( + "HTTP 413 content_length_exceeded stays a context overflow and runs compaction without a commit", + () => + Effect.gen(function* () { + const { prompt, chat, sessions } = yield* boot() + const requests: Record[] = [] + const summaryText = "The user requested a count. Continue after compacting the conversation." + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: Object.assign( + async (_url: string | URL | Request, init?: RequestInit) => { + if (typeof init?.body !== "string") throw new Error("expected a JSON request body") + requests.push(JSON.parse(init.body)) + if (requests.length > 3) throw new Error("unexpected request after overflow recovery") + if (requests.length === 1) { + return new Response( + JSON.stringify({ error: { code: "content_length_exceeded", message: "request entity too large" } }), + { status: 413, headers: { "Content-Type": "application/json" } }, + ) + } + const response = reply().text(requests.length === 2 ? summaryText : "42").stop().item() + if (response.type !== "sse") throw new Error("expected SSE response") + return new Response( + [...response.head, ...response.tail].map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + + "data: [DONE]\n\n", + { headers: { "Content-Type": "text/event-stream" } }, + ) + }, + { preconnect: () => undefined }, + ), + }).chatModel("test-model") + const languageSpy = spyOn(ProviderSvc, "getLanguage").mockResolvedValue(language) + const classify = spyOn(MessageV2, "fromError") + try { + const result = yield* prompt.prompt({ + sessionID: chat.id, + agent: "build", + model: promptRef, + parts: [{ type: "text", text: "How many rows?" }], + }) + expect(classify.mock.results.map((result) => result.value)).toContainEqual( + expect.objectContaining({ name: "ContextOverflowError" }), + ) + expect(result.info).not.toHaveProperty("error") + expect(result.info).toHaveProperty("finish", "stop") + expect(result.parts.filter((part) => part.type === "text").map((part) => part.text).join("")).toBe("42") + expect(requests).toHaveLength(3) + expect(JSON.stringify(requests[2].messages)).toContain(summaryText) + const messages = yield* sessions.messages({ sessionID: chat.id }) + expect(messages.filter((message) => message.info.role === "assistant" && message.info.summary)).toHaveLength(1) + expect(messages.flatMap((message) => message.parts)).toContainEqual( + expect.objectContaining({ type: "compaction", overflow: true }), + ) + expect(messages.flatMap((message) => message.parts).some((part) => part.type === "tool" && part.tool === "answer_commit")).toBe(false) + } finally { + classify.mockRestore() + languageSpy.mockRestore() + } + }), + { config: { ...cfg, snapshot: false, learn: { enabled: false }, compaction: { auto: true } } }, + 30_000, +) +// altimate_change end + it.instance("loop stops provider overflow instead of auto-compacting when disabled", () => Effect.gen(function* () { const { llm } = yield* useServerConfig((url) => ({ diff --git a/packages/opencode/test/session/session.test.ts b/packages/opencode/test/session/session.test.ts index a766420a52..2956fe54c8 100644 --- a/packages/opencode/test/session/session.test.ts +++ b/packages/opencode/test/session/session.test.ts @@ -15,6 +15,7 @@ import { RuntimeFlags } from "@/effect/runtime-flags" import { BackgroundJob } from "@/background/job" import { EventV2Bridge } from "@/event-v2-bridge" import { GlobalBus } from "@/bus/global" +import { closeScratch, getScratch, scratchOpened } from "@/altimate/native/connections/scratch" const it = testEffect( Layer.mergeAll( @@ -39,6 +40,19 @@ const awaitDeferred = (deferred: Deferred.Deferred, message: string) => const remove = (id: SessionID) => SessionNs.use.remove(id) +it.instance("removing a session closes only its scratch store", () => Effect.gen(function* () { + const sessions = yield* SessionNs.Service + const a = yield* sessions.create({}) + const b = yield* sessions.create({}) + yield* Effect.addFinalizer(() => Effect.promise(() => closeScratch())) + yield* Effect.promise(() => Promise.all([getScratch(a.id), getScratch(b.id)])) + yield* sessions.remove(a.id) + expect(scratchOpened(a.id)).toBe(false) + expect(scratchOpened(b.id)).toBe(true) + yield* sessions.remove(b.id) + expect(scratchOpened(b.id)).toBe(false) +})) + describe("session.created event", () => { it.instance("should emit session.created event when session is created", () => Effect.gen(function* () { @@ -201,6 +215,73 @@ describe("step-finish token propagation via event", () => { }) describe("Session", () => { + it.instance("normalizes BigInt tool progress and results before persistence and events", () => + Effect.gen(function* () { + const session = yield* SessionNs.Service + const events = yield* EventV2Bridge.Service + const info = yield* Effect.acquireRelease(session.create({}), (created) => + session.remove(created.id).pipe(Effect.orDie), + ) + const messageID = MessageID.ascending() + yield* session.updateMessage({ + id: messageID, + sessionID: info.id, + role: "user", + time: { created: Date.now() }, + agent: "user", + model: { providerID: "test", modelID: "test" }, + } as SessionV1.Info) + + const metadata = { + rows: [{ counts: [0n, 42n, -42n, 9007199254740991n, -9007199254740991n, 9007199254740992n, -9007199254740992n] }], + } + const expected = { + rows: [{ counts: [0, 42, -42, 9007199254740991, -9007199254740991, "9007199254740992", "-9007199254740992"] }], + } + const id = PartID.ascending() + const input = { warehouse: "scratch", query: "SELECT COUNT(*) AS count FROM items" } + const states: SessionV1.ToolState[] = [ + { status: "running", input, metadata, time: { start: 1 } }, + { status: "completed", input, metadata, title: "Count", output: "count\n42", time: { start: 1, end: 2 } }, + ] + + for (const state of states) { + const received = yield* Deferred.make() + const unsub = yield* events.listen((event) => { + if (event.type === MessageV2.Event.PartUpdated.type) { + const part = (event.data as { part: SessionV1.Part }).part + if (part.id === id && part.type === "tool" && part.state.status === state.status) + Deferred.doneUnsafe(received, Effect.succeed(part)) + } + return Effect.void + }) + yield* Effect.addFinalizer(() => unsub) + + const part: SessionV1.ToolPart = { + id, + messageID, + sessionID: info.id, + type: "tool", + tool: "sql_execute", + callID: "count-items", + state, + } + const updated = yield* session.updatePart(part) + const published = yield* awaitDeferred(received, "timed out waiting for normalized tool part") + const persisted = yield* session.getPart({ sessionID: info.id, messageID, partID: id }) + + for (const value of [updated, published, persisted]) { + expect(value).toMatchObject({ state: { status: state.status, metadata: expected } }) + expect(() => JSON.stringify(value)).not.toThrow() + } + expect(updated).not.toBe(part) + expect(metadata.rows[0].counts).toEqual([ + 0n, 42n, -42n, 9007199254740991n, -9007199254740991n, 9007199254740992n, -9007199254740992n, + ]) + } + }), + ) + it.live("remove works without an instance", () => Effect.gen(function* () { const session = yield* SessionNs.Service diff --git a/packages/opencode/test/session/tool-result-bigint.test.ts b/packages/opencode/test/session/tool-result-bigint.test.ts new file mode 100644 index 0000000000..4d45c00d0f --- /dev/null +++ b/packages/opencode/test/session/tool-result-bigint.test.ts @@ -0,0 +1,211 @@ +import { createOpenAICompatible } from "@ai-sdk/openai-compatible" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { SessionProjector } from "@opencode-ai/core/session/projector" +import { expect, spyOn } from "bun:test" +import { Effect } from "effect" +import { Bus } from "@/bus" +import { RuntimeFlags } from "@/effect/runtime-flags" +import { MCP } from "@/mcp" +import { Plugin } from "@/plugin" +import { Provider } from "@/provider/provider" +import { ModelID, ProviderID } from "@/provider/schema" +import { Session } from "@/session/session" +import { MessageV2 } from "@/session/message-v2" +import { SessionPrompt } from "@/session/prompt" +import { ToolRegistry } from "@/tool/registry" +import { registerAll as registerConnections } from "@/altimate/native/connections/register" +import { closeScratch } from "@/altimate/native/connections/scratch" +import { Trace, type TraceFile } from "@/altimate/observability/tracing" +import { SqlExecuteTool } from "@/altimate/tools/sql-execute" +import { toolInfo } from "../altimate/tool-fixture" +import { testEffect } from "../lib/effect" +import { provideTmpdirInstanceLegacy } from "./legacy-instance" + +const it = testEffect( + LayerNode.buildLayer( + LayerNode.group([Session.node, SessionProjector.node, SessionPrompt.node, CrossSpawnSpawner.node]), + { replacements: [LayerNode.replace(RuntimeFlags.node, RuntimeFlags.layer({ experimentalEventSystem: true }))] }, + ), +) + +const config = { + snapshot: false, + learn: { enabled: false }, + provider: { + test: { + name: "Test", + env: [], + npm: "@ai-sdk/openai-compatible", + models: { + "test-model": { + name: "Test Model", + tool_call: true, + limit: { context: 100000, output: 10000 }, + }, + }, + options: { apiKey: "test-key", baseURL: "https://unused.invalid/v1" }, + }, + }, +} + +it.live( + "four concurrent scratch tools persist BigInt metadata and complete the next model turn", + () => + provideTmpdirInstanceLegacy( + () => + Effect.gen(function* () { + // Dispatcher unit tests clear the process-wide handlers and lazy hook. + // Reinstall the real SQL handler even when native/index is already cached. + registerConnections() + const pluginList = spyOn(Plugin, "list").mockResolvedValue([]) + const pluginTrigger = spyOn(Plugin, "trigger").mockImplementation(async (_name, _input, output) => output) + const sessions = yield* Session.Service + const prompt = yield* SessionPrompt.Service + const chat = yield* sessions.create({ + title: "Scratch counts", + permission: [{ permission: "*", pattern: "*", action: "allow" }], + }) + const sql = yield* Effect.promise(async () => { + const info = await toolInfo(SqlExecuteTool) + return { id: info.id, ...(await Effect.runPromise(info.init())) } + }) + const counts = { small: 3n, negative: -3n, large: 9223372036854775807n, lower: -9223372036854775808n } + const normalized = { small: 3, negative: -3, large: "9223372036854775807", lower: "-9223372036854775808" } + let started = 0 + let release!: () => void + const allStarted = new Promise((resolve) => { + release = resolve + }) + const query = + "SELECT COUNT(*) AS small, -COUNT(*) AS negative, 9223372036854775807::BIGINT AS large, '-9223372036854775808'::BIGINT AS lower FROM range(3)" + const registry = spyOn(ToolRegistry, "tools").mockResolvedValue([ + { + ...sql, + registrySource: undefined, + execute: (args, ctx) => + Effect.gen(function* () { + started++ + if (started === 4) release() + yield* Effect.promise(() => allStarted) + const result = yield* sql.execute(args, ctx) + expect(result.metadata.error).toBeUndefined() + expect(result.output).toContain("9223372036854775807") + // SQL formats its rows as text already. A tool or plugin can still add + // native integers to metadata, which must be safe at the storage boundary. + return { ...result, metadata: { ...result.metadata, counts: [counts] } } + }), + }, + ]) + const mcp = spyOn(MCP, "tools").mockResolvedValue({}) + const published = spyOn(Bus, "publish") + const requests: Record[] = [] + const language = createOpenAICompatible({ + name: "test", + baseURL: "https://unused.invalid/v1", + fetch: (async (_url, init) => { + requests.push(JSON.parse(String(init?.body))) + const first = requests.length === 1 + const chunks = [ + { + choices: [ + { + delta: { + role: "assistant", + ...(first + ? { + tool_calls: ["alpha_count", "beta_count", "gamma_count", "delta_count"].map( + (column, index) => ({ + index, + id: `call_count_${index}`, + type: "function", + function: { + name: "sql_execute", + arguments: JSON.stringify({ + query: query.replace("AS small", `AS ${column}`), + warehouse: "scratch", + }), + }, + }), + ), + } + : { content: "All four counts are 3." }), + }, + }, + ], + }, + { + choices: [{ delta: {}, finish_reason: first ? "tool_calls" : "stop" }], + usage: { prompt_tokens: 10, completion_tokens: 5, total_tokens: 15 }, + }, + ] + return new Response( + chunks.map((chunk) => `data: ${JSON.stringify(chunk)}\n\n`).join("") + "data: [DONE]\n\n", + { + headers: { "Content-Type": "text/event-stream" }, + }, + ) + }) as typeof fetch, + }).chatModel("test-model") + const getLanguage = spyOn(Provider, "getLanguage").mockResolvedValue(language) + try { + const answer = yield* prompt.prompt({ + sessionID: chat.id, + agent: "build", + model: { providerID: ProviderID.make("test"), modelID: ModelID.make("test-model") }, + parts: [{ type: "text", text: "Run four scratch counts in parallel and report the result." }], + }) + expect(answer.info).not.toHaveProperty("error") + expect(answer.parts).toContainEqual( + expect.objectContaining({ type: "text", text: "All four counts are 3." }), + ) + expect(started).toBe(4) + expect(requests).toHaveLength(2) + expect(() => JSON.stringify(requests)).not.toThrow() + const messages = yield* sessions.messages({ sessionID: chat.id }) + const completed = messages.flatMap((message) => message.parts).filter((part) => part.type === "tool") + expect(completed).toHaveLength(4) + expect(() => JSON.stringify(messages)).not.toThrow() + for (const part of completed) { + expect(part.state).toMatchObject({ status: "completed" }) + if (part.state.status === "completed") expect(part.state.metadata.counts).toEqual([normalized]) + } + const events = published.mock.calls + .filter(([event]) => event === MessageV2.Event.PartUpdated) + .map(([, data]) => data as { part: MessageV2.Part }) + .filter( + ({ part }) => part.sessionID === chat.id && part.type === "tool" && part.state.status === "completed", + ) + expect(events).toHaveLength(4) + expect(() => JSON.stringify(events)).not.toThrow() + let file: TraceFile | undefined + const trace = Trace.withExporters([ + { + name: "memory", + export: async (value) => { + file = value + return undefined + }, + }, + ]) + trace.startTrace(chat.id, {}) + for (const { part } of events) trace.logToolCall(part as Parameters[0]) + yield* Effect.promise(() => trace.endTrace()) + expect(file!.spans.filter((span) => span.kind === "tool")).toHaveLength(4) + expect(() => JSON.stringify(file)).not.toThrow() + expect(counts.small).toBe(3n) + expect(counts.large).toBe(9223372036854775807n) + } finally { + getLanguage.mockRestore() + registry.mockRestore() + mcp.mockRestore() + published.mockRestore() + pluginList.mockRestore() + pluginTrigger.mockRestore() + yield* Effect.promise(() => closeScratch(chat.id)) + } + }), + { config }, + ), + 30_000, +) diff --git a/packages/opencode/test/session/tools-permissions.test.ts b/packages/opencode/test/session/tools-permissions.test.ts new file mode 100644 index 0000000000..5b624ab59a --- /dev/null +++ b/packages/opencode/test/session/tools-permissions.test.ts @@ -0,0 +1,91 @@ +// altimate_change start — exercise the session resolver's real tool context builder +import { expect } from "bun:test" +import { Effect, Layer, Schema } from "effect" +import { ProjectV2 } from "@opencode-ai/core/project" +import { PermissionV1 } from "@opencode-ai/core/v1/permission" +import { Agent } from "@/agent/agent" +import { MCP } from "@/mcp" +import { Permission } from "@/permission" +import { Plugin } from "@/plugin" +import type { Provider } from "@/provider/provider" +import { ModelID, ProviderID } from "@/provider/schema" +import { MessageID, SessionID } from "@/session/schema" +import { SessionTools } from "@/session/tools" +import { ToolRegistry } from "@/tool/registry" +import { Truncate } from "@/tool/truncate" +import { testEffect } from "../lib/effect" + +const model: Provider.Model = { + id: ModelID.make("test-model"), + providerID: ProviderID.make("test"), + api: { id: "test-model", url: "https://example.com", npm: "@ai-sdk/openai" }, + name: "Test model", + capabilities: { + temperature: true, reasoning: false, attachment: false, toolcall: true, interleaved: false, + input: { text: true, audio: false, image: false, video: false, pdf: false }, + output: { text: true, audio: false, image: false, video: false, pdf: false }, + }, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 128000, output: 4096 }, + status: "active", options: {}, headers: {}, release_date: "2026-01-01", +} +const agent: Agent.Info = { + name: "build", mode: "primary", options: {}, + permission: Permission.fromConfig({ "*": "allow", read: { "*": "allow", "private/**": "deny" } }), +} +const it = testEffect(Layer.mergeAll( + Layer.mock(Plugin.Service, { trigger: (_name, _input, output) => Effect.succeed(output) }), + Layer.mock(Permission.Service, {}), + Layer.mock(MCP.Service, { tools: () => Effect.succeed({}) }), + Layer.mock(Truncate.Service, {}), + Layer.mock(ToolRegistry.Service, { + tools: () => Effect.succeed([{ + id: "permission_probe", description: "Report the context passed into this tool", + parameters: Schema.Struct({}), registrySource: undefined, + execute: (_args, ctx) => Effect.succeed({ + title: "Permissions", output: JSON.stringify(ctx.permissions), metadata: {}, + }), + }]), + }), +)) + +for (const sessionRules of [undefined, Permission.fromConfig({ read: { "private/released.txt": "allow" } })]) { + it.live(`session/tools passes ${sessionRules ? "merged agent and session" : "agent-only"} permissions to tool calls`, () => + Effect.gen(function* () { + const sessionID = SessionID.make("ses_tools_permissions") + const messageID = MessageID.make("msg_tools_permissions") + const tools = yield* SessionTools.resolve({ + agent, model, bypassAgentCheck: false, messages: [], + session: { + id: sessionID, slug: "tools-permissions", projectID: ProjectV2.ID.make("project"), + directory: "/tmp", title: "Permissions", version: "1", time: { created: 0, updated: 0 }, + permission: sessionRules, + }, + processor: { + message: { + id: messageID, sessionID, role: "assistant", time: { created: 0 }, + parentID: MessageID.make("msg_user"), modelID: model.id, providerID: model.providerID, + mode: "build", agent: "build", path: { cwd: "/tmp", root: "/tmp" }, cost: 0, + tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, + }, + updateToolCall: () => Effect.succeed(undefined), + completeToolCall: () => Effect.void, + }, + promptOps: { + resolvePromptParts: () => Effect.succeed([]), + prompt: () => Effect.die("unexpected prompt"), + cancel: () => Effect.void, + }, + }) + const result = yield* Effect.promise(() => Promise.resolve(tools.permission_probe.execute!({}, { + toolCallId: "call_permissions", messages: [], abortSignal: AbortSignal.any([]), + }))) + const received: PermissionV1.Ruleset = JSON.parse((result as { output: string }).output) + expect(received).toEqual(Permission.merge(agent.permission, sessionRules ?? [])) + expect(Permission.evaluate("read", "private/hidden.txt", received).action).toBe("deny") + expect(Permission.evaluate("read", "private/released.txt", received).action) + .toBe(sessionRules ? "allow" : "deny") + }), + ) +} +// altimate_change end diff --git a/packages/opencode/test/skill/builtin-discovery.test.ts b/packages/opencode/test/skill/builtin-discovery.test.ts new file mode 100644 index 0000000000..c5d032b928 --- /dev/null +++ b/packages/opencode/test/skill/builtin-discovery.test.ts @@ -0,0 +1,149 @@ +import { afterEach, beforeEach, describe, expect } from "bun:test" +import { Effect, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Global } from "@opencode-ai/core/global" +import path from "path" +import { Config } from "../../src/config/config" +import { RuntimeFlags } from "../../src/effect/runtime-flags" +import { EventV2Bridge } from "../../src/event-v2-bridge" +import { Skill } from "../../src/skill" +import { Discovery } from "../../src/skill/discovery" +import { TestInstance, testInstanceStoreLayer, tmpdirScoped } from "../fixture/fixture" +import { testEffect } from "../lib/effect" + +const it = testEffect(Layer.mergeAll(CrossSpawnSpawner.defaultLayer, testInstanceStoreLayer)) +const markdown = (name: string, body: string) => `---\nname: ${name}\ndescription: ${name} description.\n---\n\n${body}\n` +const embedded = [ + { name: "existing-directory", content: markdown("existing-skill", "Embedded existing instructions.") }, + { name: "new-directory", content: markdown("new-skill", "New embedded instructions.") }, +] +const globals = globalThis as typeof globalThis & { OPENCODE_BUILTIN_SKILLS?: typeof embedded } +let previous: PropertyDescriptor | undefined + +beforeEach(() => { + previous = Object.getOwnPropertyDescriptor(globals, "OPENCODE_BUILTIN_SKILLS") + globals.OPENCODE_BUILTIN_SKILLS = embedded +}) + +afterEach(() => { + if (previous) Object.defineProperty(globals, "OPENCODE_BUILTIN_SKILLS", previous) + else delete globals.OPENCODE_BUILTIN_SKILLS +}) + +function fixture(disableExternalSkills = false) { + return Effect.gen(function* () { + // Give the builtin installer and external discovery their own empty home, + // separate from both the project and the test process's shared data root. + const home = yield* tmpdirScoped() + const layer = Skill.layer.pipe( + Layer.provide(Discovery.defaultLayer), + Layer.provide(Config.defaultLayer), + Layer.provide(EventV2Bridge.defaultLayer), + Layer.provide(FSUtil.defaultLayer), + Layer.provide(Global.layerWith({ home })), + Layer.provide(RuntimeFlags.layer({ disableExternalSkills })), + ) + return { home, layer } + }) +} + +describe("builtin skill discovery", () => { + it.instance("loads all embedded skills with a clean user-data root", () => + Effect.gen(function* () { + const { layer } = yield* fixture() + const skills = yield* Skill.Service.use((skill) => skill.all()).pipe(Effect.provide(layer)) + + expect(skills.map((skill) => skill.name).sort()).toEqual(["customize-opencode", "existing-skill", "new-skill"]) + for (const entry of embedded) { + const name = entry.name === "existing-directory" ? "existing-skill" : "new-skill" + expect(skills.find((skill) => skill.name === name)).toMatchObject({ + name, + description: `${name} description.`, + location: `builtin:${entry.name}/SKILL.md`, + source: "built-in", + }) + } + expect(skills.find((skill) => skill.name === "new-skill")?.content).toContain("New embedded instructions.") + }), + ) + + it.instance("merges a partial install with embedded skills while retaining same-name disk overrides", () => + Effect.gen(function* () { + const { home, layer } = yield* fixture() + const installed = path.join(home, ".altimate", "builtin", "old-directory", "SKILL.md") + yield* Effect.promise(() => Bun.write(installed, markdown("existing-skill", "Installed override instructions."))) + yield* Effect.promise(() => + Bun.write(path.join(home, ".altimate", "builtin", "disk-only", "SKILL.md"), markdown("disk-only", "Disk only.")), + ) + const skills = yield* Skill.Service.use((skill) => skill.all()).pipe(Effect.provide(layer)) + + expect(skills.map((skill) => skill.name).sort()).toEqual([ + "customize-opencode", + "disk-only", + "existing-skill", + "new-skill", + ]) + expect(skills.find((skill) => skill.name === "existing-skill")).toMatchObject({ + content: "\nInstalled override instructions.\n", + location: installed, + source: "built-in", + }) + expect(skills.find((skill) => skill.name === "new-skill")).toMatchObject({ + location: "builtin:new-directory/SKILL.md", + source: "built-in", + }) + }), + ) + + it.instance("lets same-name project skills override installed and embedded builtins", () => + Effect.gen(function* () { + const { home, layer } = yield* fixture() + const { directory } = yield* TestInstance + yield* Effect.promise(() => + Bun.write( + path.join(home, ".altimate", "builtin", "old-directory", "SKILL.md"), + markdown("existing-skill", "Installed instructions."), + ), + ) + for (const name of ["existing-skill", "new-skill"]) { + yield* Effect.promise(() => + Bun.write(path.join(directory, ".opencode", "skills", name, "SKILL.md"), markdown(name, "Project instructions.")), + ) + } + const skills = yield* Skill.Service.use((skill) => skill.all()).pipe(Effect.provide(layer)) + + for (const name of ["existing-skill", "new-skill"]) { + expect(skills.find((skill) => skill.name === name)).toMatchObject({ + content: "\nProject instructions.\n", + location: path.join(directory, ".opencode", "skills", name, "SKILL.md"), + source: "project", + }) + } + }), + ) + + it.instance("keeps installed and embedded builtins when external discovery is disabled", () => + Effect.gen(function* () { + const { home, layer } = yield* fixture(true) + const { directory } = yield* TestInstance + yield* Effect.promise(() => + Bun.write( + path.join(home, ".altimate", "builtin", "old-directory", "SKILL.md"), + markdown("existing-skill", "Installed instructions."), + ), + ) + for (const root of [home, directory]) { + yield* Effect.promise(() => + Bun.write(path.join(root, ".claude", "skills", "external", "SKILL.md"), markdown("external", "External.")), + ) + } + const skills = yield* Skill.Service.use((skill) => skill.all()).pipe(Effect.provide(layer)) + + expect(skills.map((skill) => skill.name).sort()).toEqual(["customize-opencode", "existing-skill", "new-skill"]) + expect(skills.every((skill) => skill.source === "built-in")).toBe(true) + expect(skills.find((skill) => skill.name === "existing-skill")?.location).toStartWith(home) + expect(skills.find((skill) => skill.name === "new-skill")?.location).toBe("builtin:new-directory/SKILL.md") + }), + ) +}) diff --git a/packages/opencode/test/tool/batch-read-permissions.test.ts b/packages/opencode/test/tool/batch-read-permissions.test.ts new file mode 100644 index 0000000000..5a9050c65d --- /dev/null +++ b/packages/opencode/test/tool/batch-read-permissions.test.ts @@ -0,0 +1,66 @@ +// altimate_change start — keep read permissions through both batch context adapters +import { expect, spyOn } from "bun:test" +import path from "path" +import { Effect, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Ripgrep } from "@opencode-ai/core/ripgrep" +import { Agent } from "@/agent/agent" +import { Git } from "@/git" +import { Permission } from "@/permission" +import { Session } from "@/session" +import { MessageID, SessionID } from "@/session/schema" +import { BatchTool } from "@/tool/batch" +import { GrepTool } from "@/tool/grep" +import { ToolRegistry } from "@/tool/registry" +import { Truncate } from "@/tool/truncate" +import { TestInstance } from "../fixture/fixture" +import { testEffect } from "../lib/effect" + +const it = testEffect(Layer.mergeAll( + CrossSpawnSpawner.defaultLayer, FSUtil.defaultLayer, Ripgrep.defaultLayer, + Truncate.defaultLayer, Agent.defaultLayer, Git.defaultLayer, +)) + +it.instance("batch forwards permissions through the legacy adapter into real grep", () => Effect.gen(function* () { + const instance = yield* TestInstance + const visible = path.join(instance.directory, "visible.txt") + const hidden = path.join(instance.directory, "hidden.txt") + yield* Effect.promise(() => Promise.all([ + Bun.write(visible, "needle visible"), Bun.write(hidden, "needle secret"), + ])) + const grep = yield* (yield* GrepTool).init() + const batch = yield* (yield* BatchTool).init() + const permissions = Permission.fromConfig({ "*": "allow", read: { "*": "allow", [hidden]: "deny" } }) + const registry = spyOn(ToolRegistry, "tools").mockResolvedValue([{ + id: "grep", registrySource: undefined, ...grep, + }]) + const updatePart = Object.assign(async (part: Parameters[0]) => part, Session.updatePart) + const updates = spyOn(Session, "updatePart").mockImplementation(updatePart) + try { + const result = yield* batch.execute({ tool_calls: [{ + tool: "grep", parameters: { pattern: "needle", path: instance.directory }, + }] }, { + sessionID: SessionID.make("ses_batch_permissions"), messageID: MessageID.make("msg_batch_permissions"), + agent: "build", abort: AbortSignal.any([]), messages: [], permissions, + metadata: () => Effect.void, + ask: (request) => Effect.sync(() => { + // Both files are decided by the inherited rules, so no read prompt is needed. + expect(request.permission).not.toBe("read") + }), + }) + expect(result.metadata.successful).toBe(1) + expect(result.metadata.failed).toBe(0) + const completed = updates.mock.calls.map(([part]) => part) + .find((part) => part.type === "tool" && part.state.status === "completed") + const output = completed?.type === "tool" && completed.state.status === "completed" ? completed.state.output : "" + expect(output).toContain(visible) + expect(output).toContain("needle visible") + expect(output).not.toContain(hidden) + expect(output).not.toContain("needle secret") + } finally { + updates.mockRestore() + registry.mockRestore() + } +})) +// altimate_change end diff --git a/packages/opencode/test/tool/filler-parameters.test.ts b/packages/opencode/test/tool/filler-parameters.test.ts new file mode 100644 index 0000000000..1bf7e1ed6d --- /dev/null +++ b/packages/opencode/test/tool/filler-parameters.test.ts @@ -0,0 +1,361 @@ +import { afterEach, describe, expect } from "bun:test" +import { Effect, Exit, Layer, Result, Schema } from "effect" +import z from "zod" +import type { JSONSchema7 } from "@ai-sdk/provider" +import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { Agent } from "@/agent/agent" +import { Config } from "@/config/config" +import { RuntimeFlags } from "@/effect/runtime-flags" +import { EffectBridge } from "@/effect/bridge" +import { Plugin } from "@/plugin" +import { Instance } from "@/project/instance" +import { MessageID, SessionID } from "@/session/schema" +import { ToolJsonSchema } from "@/tool/json-schema" +import { ToolRegistry } from "@/tool/registry" +import { Tool } from "@/tool/tool" +import { Truncate } from "@/tool/truncate" +import { disposeAllInstances, requireInstance } from "../fixture/fixture" +import { TestConfig } from "../fixture/config" +import { testEffect } from "../lib/effect" + +const fillers = [[], "", 0, null] +const pluginCalls: unknown[] = [] +const pluginLayer = Layer.succeed( + Plugin.Service, + Plugin.Service.of({ + init: () => Effect.void, + trigger: ((_name: unknown, _input: unknown, output: unknown) => + Effect.succeed(output)) as Plugin.Interface["trigger"], + list: () => + Effect.succeed([ + { + tool: { + optional_array_plugin: { + description: "Synthetic optional parameters", + args: { + labels: z.array(z.string()).min(1).optional(), + limit: z.number().optional().default(3), + }, + execute: async (args: unknown) => { + pluginCalls.push(args) + return "ok" + }, + }, + }, + }, + ]), + }), +) + +const it = testEffect( + LayerNode.buildLayer(LayerNode.group([ToolRegistry.node, Agent.node, Truncate.node]), { + replacements: [ + LayerNode.replace( + Config.node, + TestConfig.layer({ + get: () => Effect.succeed({ experimental: { batch_tool: true } }), + }), + ), + LayerNode.replace(RuntimeFlags.node, RuntimeFlags.layer()), + LayerNode.replace(Plugin.node, pluginLayer), + ], + }), +) + +afterEach(async () => { + pluginCalls.length = 0 + await disposeAllInstances() +}) + +function branches(schema: JSONSchema7): JSONSchema7[] { + const alternatives = schema.anyOf ?? schema.oneOf + if (!alternatives) return [schema] + const { anyOf: _, oneOf: __, ...base } = schema + return alternatives.flatMap((branch) => (typeof branch === "boolean" ? [] : branches({ ...base, ...branch }))) +} + +function fixture(definition: JSONSchema7 | boolean, root: JSONSchema7): unknown { + if (typeof definition === "boolean") return "value" + if (definition.$ref) { + const name = definition.$ref.replace(/^#\/(?:\$defs|definitions)\//, "") + const target = root.definitions?.[name] + if (!target) throw new Error(`Unresolved fixture reference: ${definition.$ref}`) + return fixture(target, root) + } + if (definition.const !== undefined) return definition.const + if (definition.enum) return definition.enum[0] + if (definition.default !== undefined) return definition.default + const alternative = definition.anyOf?.[0] ?? definition.oneOf?.[0] + if (alternative !== undefined) return fixture(alternative, root) + const type = Array.isArray(definition.type) ? definition.type[0] : definition.type + if (type === "object" || definition.properties) { + return Object.fromEntries( + (definition.required ?? []).map((name) => [name, fixture(definition.properties?.[name] ?? true, root)]), + ) + } + if (type === "array") { + const length = Math.max(definition.minItems ?? 0, Array.isArray(definition.items) ? definition.items.length : 0) + return Array.from({ length }, (_, index) => + fixture(Array.isArray(definition.items) ? definition.items[index] : (definition.items ?? true), root), + ) + } + if (type === "number" || type === "integer") { + const minimum = definition.minimum ?? 1 + const value = + typeof definition.exclusiveMinimum === "number" ? Math.max(minimum, definition.exclusiveMinimum + 1) : minimum + return definition.maximum === undefined ? value : Math.min(value, definition.maximum) + } + if (type === "boolean") return false + if (type === "null") return null + if (definition.format === "uri" || definition.format === "url") return "https://example.com" + return "value".padEnd(definition.minLength ?? 0, "x").slice(0, definition.maxLength) +} + +function context(): Tool.Context { + return { + sessionID: SessionID.make("ses_optional_parameters"), + messageID: MessageID.make("msg_optional_parameters"), + agent: "build", + abort: new AbortController().signal, + messages: [], + ask: () => Effect.void, + metadata: () => Effect.void, + } +} + +describe("optional tool parameter fillers", () => { + it.instance( + "every registered schema accepts optional fillers, either preserved as valid values or treated as omission", + () => + Effect.gen(function* () { + const registry = yield* ToolRegistry.Service + const instance = yield* requireInstance + const bridge = yield* EffectBridge.make() + const infos = yield* registry.allInfos() + expect(infos.some((info) => info.id === "optional_array_plugin")).toBe(true) + expect(infos.some((info) => info.id === "sql_execute")).toBe(true) + expect(infos.some((info) => info.id === "read")).toBe(true) + const failures: string[] = [] + let checked = 0 + for (const info of infos) { + const tool = yield* Effect.promise(() => Instance.restore(instance, () => bridge.promise(info.init()))) + const schema = ToolJsonSchema.fromTool({ ...tool, id: info.id }) + const decode = Schema.decodeUnknownResult(tool.parameters) + for (const [index, branch] of branches(schema).entries()) { + const input = fixture(branch, schema) as Record + const omitted = decode(input) + if (Result.isFailure(omitted)) { + failures.push(`${info.id}[${index}] invalid omission fixture: ${String(omitted.failure)}`) + continue + } + const optional = Object.keys(branch.properties ?? {}).filter((name) => !branch.required?.includes(name)) + for (const filler of fillers) { + for (const name of optional) { + const filled = decode({ ...input, [name]: filler }) + checked++ + if (Result.isFailure(filled)) { + failures.push(`${info.id}[${index}].${name} rejects ${JSON.stringify(filler)}`) + } else if ( + JSON.stringify(filled.success) !== JSON.stringify(omitted.success) && + (filled.success as Record)?.[name] !== filler && + JSON.stringify((filled.success as Record)?.[name]) !== JSON.stringify(filler) + ) { + failures.push(`${info.id}[${index}].${name} changes omission behavior for ${JSON.stringify(filler)}`) + } + } + const filled = decode({ ...input, ...Object.fromEntries(optional.map((name) => [name, filler])) }) + if (Result.isFailure(filled)) { + failures.push(`${info.id}[${index}] rejects all optionals set to ${JSON.stringify(filler)}`) + } + } + } + } + expect(checked).toBeGreaterThan(0) + expect(failures).toEqual([]) + }), + ) + + it.instance("legacy and native execution preserve defaults for fillers without relaxing required arrays", () => + Effect.gen(function* () { + const calls: unknown[] = [] + const legacyParameters = z.object({ + required: z.array(z.string()).min(1), + text: z.string(), + labels: z.array(z.string()).min(1).optional(), + limit: z.number().optional().default(3), + enabled: z.boolean().optional().default(true), + }) + const nativeParameters = Schema.Struct({ + required: Schema.NonEmptyArray(Schema.String), + text: Schema.String, + labels: Schema.optional(Schema.NonEmptyArray(Schema.String)), + limit: Schema.Number.pipe(Schema.optional, Schema.withDecodingDefaultType(Effect.succeed(3))), + enabled: Schema.Boolean.pipe(Schema.optional, Schema.withDecodingDefaultType(Effect.succeed(true))), + }) + expect(legacyParameters.safeParse({ required: ["kept"], text: "", labels: [] }).success).toBe(false) + expect( + Result.isFailure(Schema.decodeUnknownResult(nativeParameters)({ required: ["kept"], text: "", labels: [] })), + ).toBe(true) + const legacy = yield* Tool.define("optional_array_legacy", { + description: "Synthetic optional parameters", + parameters: legacyParameters, + execute: async (args) => { + calls.push(args) + return { title: "ok", output: "ok", metadata: { truncated: false } } + }, + }) + const native = yield* Tool.define( + "optional_array_native", + Effect.succeed({ + description: "Synthetic optional parameters", + parameters: nativeParameters, + execute: (args: typeof nativeParameters.Type) => + Effect.sync(() => { + calls.push(args) + return { title: "ok", output: "ok", metadata: { truncated: false } } + }), + }), + ) + for (const info of [legacy, native]) { + const tool = yield* info.init() + const execute = tool.execute as (args: unknown, ctx: Tool.Context) => ReturnType + for (const filler of fillers) { + const input = { required: ["kept"], text: "", labels: filler, limit: filler, enabled: filler } + // A numeric zero is a valid `limit` on its own, so it is kept; other fillers fall back to defaults. + const expected = { required: ["kept"], text: "", limit: filler === 0 ? 0 : 3, enabled: true } + expect(Schema.decodeUnknownSync(tool.parameters)(input)).toEqual(expected) + yield* execute(input, context()) + expect(calls.at(-1)).toEqual(expected) + expect(Result.isFailure(Schema.decodeUnknownResult(tool.parameters)({ required: filler, text: "" }))).toBe( + true, + ) + } + const supplied = { required: ["kept"], text: "", labels: ["selected"], limit: 7, enabled: false } + yield* execute(supplied, context()) + expect(calls.at(-1)).toEqual(supplied) + for (const invalid of [{}, { ...supplied, labels: [42] }, { ...supplied, limit: "invalid" }]) { + const before = calls.length + expect(Exit.isFailure(yield* execute(invalid, context()).pipe(Effect.exit))).toBe(true) + expect(calls).toHaveLength(before) + } + } + }), + ) + + it.instance("plugin execution receives the same decoded defaults as omitted arguments", () => + Effect.gen(function* () { + const registry = yield* ToolRegistry.Service + const info = (yield* registry.allInfos()).find((info) => info.id === "optional_array_plugin")! + const tool = yield* info.init() + const decode = Schema.decodeUnknownSync(tool.parameters) + for (const filler of fillers) { + const input = { labels: filler, limit: filler } + // Zero is a valid `limit` for this plugin, so it is kept; other fillers fall back to the default. + const expected = { limit: filler === 0 ? 0 : 3 } + expect(decode(input)).toEqual(expected) + yield* tool.execute(input, context()) + expect(pluginCalls.at(-1)).toEqual(expected) + } + // Arguments the schema does not list are kept, and a call the schema rejects still reaches the handler as sent. + yield* tool.execute({ extra: "kept", labels: [] }, context()) + expect(pluginCalls.at(-1)).toEqual({ extra: "kept", limit: 3 }) + const mismatched = { limit: "not-a-number", extra: 1 } + yield* tool.execute(mismatched, context()) + expect(pluginCalls.at(-1)).toEqual(mismatched) + }), + ) + + it.instance("optional enum fillers do not select discriminated union branches", () => + Effect.gen(function* () { + const legacy = yield* Tool.define("optional_union_legacy", { + description: "Synthetic discriminated parameters", + parameters: z.discriminatedUnion("kind", [ + z.object({ kind: z.literal("left"), mode: z.enum(["fast", "slow"]).optional() }), + z.object({ kind: z.literal("right"), text: z.string() }), + ]), + execute: async () => ({ title: "ok", output: "ok", metadata: { truncated: false } }), + }) + const native = yield* Tool.define( + "optional_union_native", + Effect.succeed({ + description: "Synthetic discriminated parameters", + parameters: Schema.Union([ + Schema.Struct({ kind: Schema.Literal("left"), mode: Schema.optional(Schema.Literals(["fast", "slow"])) }), + Schema.Struct({ kind: Schema.Literal("right"), text: Schema.String }), + ]), + execute: () => Effect.succeed({ title: "ok", output: "ok", metadata: { truncated: false } }), + }), + ) + const failures: string[] = [] + for (const info of [legacy, native]) { + const tool = yield* info.init() + const decode = Schema.decodeUnknownResult(tool.parameters) + const omitted = decode({ kind: "left" }) + expect(Result.isSuccess(omitted)).toBe(true) + for (const mode of fillers) { + const filled = decode({ kind: "left", mode }) + if (Result.isFailure(filled) || JSON.stringify(filled.success) !== JSON.stringify({ kind: "left" })) { + failures.push(`${info.id} rejects optional mode filler ${JSON.stringify(mode)}`) + } + } + expect(Schema.decodeUnknownSync(tool.parameters)({ kind: "right", text: "" })).toEqual({ + kind: "right", + text: "", + }) + expect(Schema.decodeUnknownSync(tool.parameters)({ kind: "left", mode: "fast" })).toEqual({ + kind: "left", + mode: "fast", + }) + } + expect(failures).toEqual([]) + }), + ) + it.instance("schema-valid empty and zero values are preserved; fillers are stripped only when validation fails", () => + Effect.gen(function* () { + const legacy = yield* Tool.define("optional_valid_legacy", { + description: "Synthetic intentional values", + parameters: z.object({ + max_entries: z.number().min(0).optional().default(20), + description: z.string().optional(), + integration_ids: z.array(z.string()).optional(), + labels: z.array(z.string()).min(1).optional(), + limit: z.number().min(1).optional().default(3), + }), + execute: async () => ({ title: "ok", output: "ok", metadata: { truncated: false } }), + }) + const native = yield* Tool.define( + "optional_valid_native", + Effect.succeed({ + description: "Synthetic intentional values", + parameters: Schema.Struct({ + max_entries: Schema.Number.pipe(Schema.optional, Schema.withDecodingDefaultType(Effect.succeed(20))), + description: Schema.optional(Schema.String), + integration_ids: Schema.optional(Schema.Array(Schema.String)), + labels: Schema.optional(Schema.NonEmptyArray(Schema.String)), + }), + execute: () => Effect.succeed({ title: "ok", output: "ok", metadata: { truncated: false } }), + }), + ) + for (const info of [legacy, native]) { + const tool = yield* info.init() + const decode = Schema.decodeUnknownSync(tool.parameters) as (input: unknown) => Record + // Valid as sent: intentional values survive. + expect(decode({ max_entries: 0, description: "", integration_ids: [] })).toMatchObject({ + max_entries: 0, + description: "", + integration_ids: [], + }) + // Invalid as sent (labels: []): only the rejected filler is removed. + const retried = decode({ max_entries: 0, description: "", integration_ids: [], labels: [] }) + expect(retried.max_entries).toBe(0) + // Fillers that are valid on their own are kept; only the rejected one is dropped. + expect(retried.description).toBe("") + expect(retried.integration_ids).toEqual([]) + expect(retried).not.toHaveProperty("labels") + } + // A filler the schema itself rejects (limit: 0) falls back to the default. + const legacyTool = yield* legacy.init() + expect(Schema.decodeUnknownSync(legacyTool.parameters)({ limit: 0 })).toMatchObject({ limit: 3 }) + }), + ) +}) diff --git a/packages/opencode/test/tool/grep.test.ts b/packages/opencode/test/tool/grep.test.ts index c6001e21be..0e83d0973c 100644 --- a/packages/opencode/test/tool/grep.test.ts +++ b/packages/opencode/test/tool/grep.test.ts @@ -225,4 +225,61 @@ describe("tool.grep", () => { expect(requests.find((req) => req.permission === "external_directory")).toBeUndefined() }), ) + // altimate_change start — retain relative read restrictions on symlinked search roots + + it.instance("enforces relative read deny on the real directory behind an allowed symlink alias", () => + Effect.gen(function* () { + if (process.platform === "win32") return + + const test = yield* TestInstance + const real = path.join(test.directory, "private") + const alias = path.join(test.directory, "alias") + yield* Effect.promise(() => fs.mkdir(real)) + yield* Effect.promise(() => fs.symlink(real, alias, "dir")) + yield* Effect.promise(() => Bun.write(path.join(real, "secret.txt"), "target-protected needle")) + + const info = yield* GrepTool + const grep = yield* info.init() + const result = yield* grep.execute({ pattern: "needle", path: alias }, { + ...ctx, + permissions: Permission.fromConfig({ read: { "*": "allow", "private/**": "deny" } }), + }) + expect(result.metadata.matches).toBe(0) + expect(result.output).toBe("No files found") + expect(result.output).not.toContain("target-protected needle") + }), + { git: true }, + ) + + it.instance("enforces relative read deny on a symlink alias while allowing the real directory", () => + Effect.gen(function* () { + if (process.platform === "win32") return + + const test = yield* TestInstance + const real = path.join(test.directory, "real") + const alias = path.join(test.directory, "alias") + yield* Effect.promise(() => fs.mkdir(real)) + yield* Effect.promise(() => fs.symlink(real, alias, "dir")) + yield* Effect.promise(() => Bun.write(path.join(real, "secret.txt"), "alias-protected needle")) + + const next: Tool.Context = { + ...ctx, + permissions: Permission.fromConfig({ + read: { "*": "allow", "alias/**": "deny" }, + }), + } + const info = yield* GrepTool + const grep = yield* info.init() + const denied = yield* grep.execute({ pattern: "needle", path: alias }, next) + expect(denied.metadata.matches).toBe(0) + expect(denied.output).toBe("No files found") + expect(denied.output).not.toContain("alias-protected needle") + + const allowed = yield* grep.execute({ pattern: "needle", path: real }, next) + expect(allowed.metadata.matches).toBe(1) + expect(allowed.output).toContain("alias-protected needle") + }), + { git: true }, + ) + // altimate_change end }) diff --git a/packages/opencode/test/tool/search-absolute-permissions.test.ts b/packages/opencode/test/tool/search-absolute-permissions.test.ts new file mode 100644 index 0000000000..a0fce42206 --- /dev/null +++ b/packages/opencode/test/tool/search-absolute-permissions.test.ts @@ -0,0 +1,18 @@ +import { expect, test } from "bun:test" +import { Permission } from "../../src/permission" +import { readableSearchResults } from "../../src/altimate/search-read-permissions" + +test("a later relative wildcard cannot hide an absolute read deny or ask", () => { + for (const action of ["deny", "ask"] as const) { + const permissions = Permission.fromConfig({ + read: { + "/workspace/private/**": action, + "*": "allow", + }, + }) + expect(readableSearchResults(["/workspace/private/key.txt"], "/workspace", permissions)).toEqual({ + allowed: new Set(action === "deny" ? [] : ["/workspace/private/key.txt"]), + patterns: action === "ask" ? ["/workspace/private/key.txt"] : [], + }) + } +}) diff --git a/packages/opencode/test/tool/search-read-permissions.test.ts b/packages/opencode/test/tool/search-read-permissions.test.ts new file mode 100644 index 0000000000..802ce9d79d --- /dev/null +++ b/packages/opencode/test/tool/search-read-permissions.test.ts @@ -0,0 +1,456 @@ +// altimate_change start — search result read-permission regressions +import { describe, expect } from "bun:test" +import path from "path" +import fs from "fs/promises" +import { Cause, Effect, Exit, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Ripgrep } from "@opencode-ai/core/ripgrep" +import { PermissionV1 } from "@opencode-ai/core/v1/permission" +import { Agent } from "@/agent/agent" +import { Git } from "@/git" +import { InstanceState } from "@/effect/instance-state" +import { Permission } from "@/permission" +import { EventV2Bridge } from "@/event-v2-bridge" +import { MessageID, SessionID } from "@/session/schema" +import { ListTool } from "@/tool/ls" +import { readableSearchResults } from "@/altimate/search-read-permissions" +import { GlobTool } from "@/tool/glob" +import { GrepTool } from "@/tool/grep" +import { Truncate } from "@/tool/truncate" +import { TestInstance } from "../fixture/fixture" +import { testEffect } from "../lib/effect" + +const it = testEffect(Layer.mergeAll( + CrossSpawnSpawner.defaultLayer, FSUtil.defaultLayer, Ripgrep.defaultLayer, + Truncate.defaultLayer, Agent.defaultLayer, Git.defaultLayer, + Permission.defaultLayer, EventV2Bridge.defaultLayer, +)) + +const baseContext = { + sessionID: SessionID.make("ses_test"), messageID: MessageID.make("msg_test"), + agent: "build", abort: AbortSignal.any([]), messages: [], + metadata: () => Effect.void, + ask: (req: Omit) => Effect.sync(() => { + if (req.permission === "read") throw new Error("Unexpected read approval") + }), +} + +it.effect("unresolved permissions fail closed without prompting", () => Effect.sync(() => { + expect(readableSearchResults(["/workspace/secret.txt"], "/workspace")).toEqual({ + allowed: new Set(), patterns: [], + }) +})) + +it.effect("an absolute allow cannot override the read tool's relative deny or ask", () => Effect.sync(() => { + for (const action of ["deny", "ask"] as const) { + const permissions = Permission.fromConfig({ read: { + "*": "allow", "*.env": action, "/Users/me/proj/*": "allow", + } }) + expect(Permission.evaluate("read", ".env", permissions).action).toBe(action) + expect(readableSearchResults(["/Users/me/proj/.env"], "/Users/me/proj", permissions)).toEqual({ + allowed: new Set(action === "deny" ? [] : ["/Users/me/proj/.env"]), + patterns: action === "ask" ? [".env"] : [], + }) + } +})) + +for (const reply of ["reject", "approve"] as const) { + it.instance(`grep ${reply === "reject" ? "never reads ask-scoped content when approval is rejected" : "reads ask-scoped content only after approval and returns the match"}`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const file = path.join(instance.directory, "private", "secret.txt") + yield* Effect.promise(() => Bun.write(file, "needle protected contents")) + const permissions = Permission.fromConfig({ "*": "allow", read: { + "*": "allow", [file]: "ask", + } }) + const ripgrep = yield* Ripgrep.Service + const approvalsAtContentRead: boolean[] = [] + let approved = false + let requests = 0 + const info = yield* GrepTool.pipe(Effect.provideService(Ripgrep.Service, { + ...ripgrep, + grep: (input) => Effect.suspend(() => { + approvalsAtContentRead.push(approved) + return ripgrep.grep(input) + }), + })) + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: "needle", path: instance.directory }, { + ...baseContext, permissions, + ask: (req) => Effect.sync(() => { + if (req.permission !== "read") return + requests++ + expect(req.patterns).toEqual([file]) + if (reply === "reject") throw new Error("Read approval rejected") + approved = true + }), + }).pipe(Effect.exit) + + expect(requests).toBe(1) + expect(approvalsAtContentRead).toEqual(reply === "reject" ? [] : [true]) + if (reply === "reject") { + expect(Exit.isFailure(result)).toBe(true) + if (Exit.isFailure(result)) expect(String(Cause.squash(result.cause))).toContain("Read approval rejected") + } else { + expect(Exit.isSuccess(result)).toBe(true) + if (Exit.isSuccess(result)) expect(result.value.output).toContain("needle protected contents") + } + })) +} + +it.instance("grep excludes candidates newly denied while read approval is open", () => Effect.gen(function* () { + const instance = yield* TestInstance + const protectedFile = path.join(instance.directory, "private.txt") + yield* Effect.promise(() => Promise.all([ + Bun.write(protectedFile, "needle protected contents"), + Bun.write(path.join(instance.directory, "public.txt"), "needle public contents"), + ])) + const permissions = Permission.fromConfig({ "*": "allow", read: { "*": "allow", [protectedFile]: "ask" } }) + const ripgrep = yield* Ripgrep.Service + let contentSearches = 0 + const info = yield* GrepTool.pipe(Effect.provideService(Ripgrep.Service, { + ...ripgrep, + grep: (input) => { + contentSearches++ + expect(input.include).toEqual(["/public.txt"]) + return ripgrep.grep(input) + }, + })) + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: "needle", path: instance.directory }, { + ...baseContext, permissions, + ask: (req) => Effect.sync(() => { + if (req.permission !== "read") return + permissions.push({ permission: "read", pattern: protectedFile, action: "deny" }) + }), + }) + expect(contentSearches).toBe(1) + expect(result.metadata.matches).toBe(1) + expect(result.output).toContain("needle public contents") + expect(result.output).not.toContain("protected") +})) + +for (const read of ["allow", "deny"] as const) { + it.instance(read === "allow" ? "grep bounds streamed filtering with 20,000 allow matches" : "grep excludes denied candidates before reading their 20,000 matches", () => Effect.gen(function* () { + const instance = yield* TestInstance + const file = path.join(instance.directory, "many.txt") + yield* Effect.promise(() => Bun.write(file, "needle\n".repeat(20_000))) + const ripgrep = yield* Ripgrep.Service + let filtered = 0 + const info = yield* GrepTool.pipe(Effect.provideService(Ripgrep.Service, { + ...ripgrep, + grep: (input) => { + expect(input.limit).toBe(100) + expect(input.scanLimit).toBe(10_000) + expect(input.filterPath).toBeDefined() + return ripgrep.grep({ + ...input, + filterPath: (relative) => { + filtered++ + return input.filterPath!(relative) + }, + }) + }, + })) + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: "needle", path: file }, { + ...baseContext, permissions: Permission.fromConfig({ "*": "allow", read }), + }) + expect(filtered).toBe(read === "allow" ? 101 : 0) + expect(result.metadata).toEqual({ matches: read === "allow" ? 100 : 0, truncated: read === "allow" }) + if (read === "allow") expect(result.output).toContain("Results truncated") + if (read === "deny") { + expect(result.output).toBe("No files found") + expect(result.output).not.toContain("many.txt") + expect(result.output).not.toContain("needle") + } + })) +} + +for (const name of ["grep", "glob", "list"] as const) { + describe(`${name} read permissions`, () => { + for (const reply of ["reject", "once"] as const) { + it.instance(`absolute read ask survives a trailing wildcard allow when the user replies ${reply}`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const file = path.join(instance.directory, "private", "secret.txt") + yield* Effect.promise(() => Bun.write(file, "needle private contents")) + const permissions = Permission.fromConfig({ "*": "allow", read: { + [path.join(instance.directory, "private", "**")]: "ask", "*": "allow", + } }) + expect(Permission.evaluate("read", file, permissions).action).toBe("allow") + const permission = yield* Permission.Service + const events = yield* EventV2Bridge.Service + const requested: PermissionV1.Request[] = [] + const unsubscribe = yield* events.listen((event) => { + if (event.type !== Permission.Event.Asked.type) return Effect.void + const request = event.data as PermissionV1.Request + requested.push(request) + return permission.reply({ requestID: request.id, reply }).pipe(Effect.orDie) + }) + yield* Effect.addFinalizer(() => unsubscribe) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "**/*.txt", path: instance.directory }, { + ...baseContext, permissions, + ask: (req: Omit & { ruleset?: PermissionV1.Ruleset }) => + permission.ask({ ...req, sessionID: baseContext.sessionID, ruleset: req.ruleset ?? permissions }).pipe(Effect.orDie), + }).pipe(Effect.exit) + expect(requested).toHaveLength(1) + expect(requested[0]).toMatchObject({ permission: "read", patterns: [file], always: [file] }) + if (reply === "reject") { + expect(Exit.isFailure(result)).toBe(true) + if (Exit.isFailure(result)) expect(Cause.squash(result.cause)).toBeInstanceOf(PermissionV1.RejectedError) + } else { + expect(Exit.isSuccess(result)).toBe(true) + if (Exit.isSuccess(result)) expect(result.value.output).toContain(name === "grep" ? "needle private contents" : "secret.txt") + } + })) + } + + for (const count of name === "grep" ? [2, 101] : [2]) { + it.instance(`allow-everything preserves the pre-filter output bytes (${count} results)`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const search = path.join(instance.directory, "matches") + const file = path.join(search, "visible.txt") + const other = path.join(search, "other.txt") + yield* Effect.promise(async () => { + await Bun.write(file, count === 2 ? "needle visible\nneedle second line" + : Array.from({ length: count }, (_, n) => `needle ${n + 1}`).join("\n")) + await Bun.write(other, "unmatched content") + // Distinct fixed mtimes make glob's newest-first ordering deterministic. + await fs.utimes(file, 1000, 1000) + await fs.utimes(other, 2000, 2000) + }) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: search }, { + ...baseContext, permissions: Permission.fromConfig({ "*": "allow" }), + }) + // Captured by executing the pre-v8 tools at f0f3c8ff8427 against this fixture + // and comparing their output bytes and metadata with the current tools. + // Ripgrep retains matched-line newlines, including the blank lines below. + const before = name === "grep" + ? count === 2 + ? `Found 2 matches\n${file}:\n Line 1: needle visible\n\n Line 2: needle second line` + : `Found 100 matches (more matches available)\n${file}:\n` + + Array.from({ length: 100 }, (_, n) => ` Line ${n + 1}: needle ${n + 1}`).join("\n\n") + + "\n\n\n(Results truncated. Consider using a more specific path or pattern.)" + : name === "glob" ? `${other}\n${file}` : `${search}/\n other.txt\n visible.txt\n` + expect(Buffer.from(result.output)).toEqual(Buffer.from(before)) + expect(result.metadata).toEqual(name === "grep" + ? { matches: Math.min(count, 100), truncated: count > 100 } + : { count: 2, truncated: false }) + expect(result.title).toBe(name === "grep" ? "Searching needle" : name === "glob" ? "Searching *.txt" : "Listing matches") + })) + } + + it.instance("over 100 denied results cannot starve allowed rows or reveal truncation", () => Effect.gen(function* () { + const instance = yield* TestInstance + const search = path.join(instance.directory, "matches") + yield* Effect.promise(() => Promise.all([ + ...Array.from({ length: 120 }, (_, n) => Bun.write(path.join(search, `denied-${n}.txt`), "needle secret")), + Bun.write(path.join(search, "visible.txt"), "needle visible\nneedle second line"), + ])) + const permissions = Permission.fromConfig({ "*": "allow", read: { + "*": "allow", [path.join(search, "denied-*")]: "deny", + } }) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: search }, { ...baseContext, permissions }) + expect(result.output).toContain("visible.txt") + expect(result.output).not.toContain("denied-") + expect(result.output).not.toContain("secret") + expect(result.output).not.toContain("more matches") + expect(result.output).not.toContain("truncated") + expect(result.metadata.truncated).toBe(false) + expect(result.metadata).toEqual(name === "grep" ? { matches: 2, truncated: false } : { count: 1, truncated: false }) + })) + + for (const count of [100, 101]) { + it.instance(`${count} allowed results determines the cap exactly`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const search = path.join(instance.directory, "matches") + yield* Effect.promise(() => Promise.all(Array.from({ length: count }, (_, n) => + Bun.write(path.join(search, `match-${n}.txt`), "needle"), + ))) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: search }, { + ...baseContext, permissions: Permission.fromConfig({ "*": "allow" }), + }) + expect(result.metadata.truncated).toBe(count > 100) + expect(result.metadata).toEqual(name === "grep" + ? { matches: 100, truncated: count > 100 } + : { count: 100, truncated: count > 100 }) + })) + } + + for (const permissions of [undefined, []]) { + for (const config of ["allow", "deny"] as const) { + it.instance(`${permissions ? "empty" : "undefined"} permissions use the agent's ${config} config`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const search = path.join(instance.directory, "matches") + yield* Effect.promise(() => Bun.write(path.join(search, "visible.txt"), "needle")) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: search }, { ...baseContext, permissions }) + expect(result.output.includes("visible.txt")).toBe(config === "allow") + }), { config: { permission: { "*": "allow", read: config } } }) + } + } + + it.instance("unknown agent and absent permissions fail closed", () => Effect.gen(function* () { + const instance = yield* TestInstance + yield* Effect.promise(() => Bun.write(path.join(instance.directory, "hidden.txt"), "needle")) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: instance.directory }, { ...baseContext, agent: "missing-agent" }) + expect(result.output).not.toContain("hidden.txt") + expect(result.metadata.truncated).toBe(false) + })) + + it.instance("batched approval contains only ask paths and persists those exact paths", () => Effect.gen(function* () { + const instance = yield* TestInstance + yield* Effect.promise(() => Promise.all(["allowed", "ask", "denied"].map((file) => + Bun.write(path.join(instance.directory, `${file}.txt`), "needle"), + ))) + const requested: PermissionV1.Request["patterns"][] = [] + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: instance.directory }, { + ...baseContext, + permissions: Permission.fromConfig({ "*": "allow", read: { + "*": "allow", [path.join(instance.directory, "ask.txt")]: "ask", [path.join(instance.directory, "denied.txt")]: "deny", + } }), + ask: (req) => Effect.sync(() => { + if (req.permission !== "read") return + expect(req.always).toEqual(req.patterns) + requested.push(req.patterns) + }), + }) + expect(requested).toEqual([[path.join(instance.directory, "ask.txt")]]) + expect(result.output).toContain("allowed.txt") + expect(result.output).toContain("ask.txt") + expect(result.output).not.toContain("denied.txt") + })) + + it.instance(name === "grep" ? "batched approval covers candidate paths before applying the result cap" : "batched approval excludes lookahead paths and rows beyond the result cap", () => Effect.gen(function* () { + const instance = yield* TestInstance + const search = path.join(instance.directory, "matches") + const files = Array.from({ length: 150 }, (_, n) => path.join(search, `match-${n}.txt`)) + yield* Effect.promise(() => Promise.all(files.map((file) => Bun.write(file, "needle")))) + const requested: PermissionV1.Request["patterns"][] = [] + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "*.txt", path: search }, { + ...baseContext, + permissions: Permission.fromConfig({ "*": "allow", read: { [path.join(search, "*")]: "ask" } }), + ask: (req) => Effect.sync(() => { + if (req.permission !== "read") return + expect(req.always).toEqual(req.patterns) + requested.push(req.patterns) + }), + }) + const returned = files.filter((file) => result.output.includes(name === "list" ? path.basename(file) : file)) + expect(returned).toHaveLength(100) + expect(result.metadata.truncated).toBe(true) + expect(requested).toHaveLength(1) + expect(requested[0]!.toSorted()).toEqual((name === "grep" ? files : returned).toSorted()) + })) + + for (const mode of ["deny", "relative-deny", "allow", "ask", "all-denied"] as const) { + it.instance(`${mode} applies to each result path`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const context = yield* InstanceState.context + const mine = path.join(instance.directory, "mine", "visible.txt") + const other = path.join(instance.directory, "other-run", "hidden.txt") + yield* Effect.promise(() => Promise.all([ + Bun.write(mine, "needle visible\nneedle second line"), + Bun.write(other, "needle secret"), + ])) + const permissions = Permission.fromConfig({ + "*": "allow", + read: mode === "allow" ? "allow" : mode === "all-denied" ? "deny" : { + "*": mode === "ask" ? "ask" : "allow", + [mode === "relative-deny" ? path.relative(context.worktree, path.join(instance.directory, "other-run", "**")) : path.join(instance.directory, "other-run", "**")]: "deny", + }, + }) + const requests: PermissionV1.Request["patterns"][] = [] + const ctx = { + sessionID: SessionID.make("ses_test"), messageID: MessageID.make("msg_test"), + agent: "build", abort: AbortSignal.any([]), messages: [], permissions, + metadata: () => Effect.void, + ask: (req: Omit) => Effect.sync(() => { + if (req.permission !== "read") return + expect(req.always).toEqual(req.patterns) + requests.push(req.patterns) + for (const pattern of req.patterns) { + expect(Permission.evaluate("read", pattern, permissions).action).toBe("ask") + } + }), + } + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "**/*.txt", path: instance.directory }, ctx) + if (mode === "all-denied") { + expect(result.output).toBe(name === "list" ? `${instance.directory}/\n` : "No files found") + expect(requests).toHaveLength(0) + return + } + expect(result.output).toContain(name === "list" ? "visible.txt" : mine) + if (mode === "allow") expect(result.output).toContain(name === "list" ? "hidden.txt" : other) + else { + expect(result.output).not.toContain(name === "list" ? "hidden.txt" : other) + expect(result.output).not.toContain("needle secret") + } + expect(requests).toHaveLength(mode === "ask" ? 1 : 0) + if (mode === "ask") { + expect(requests[0]).toEqual([path.relative(context.worktree, mine)]) + } + })) + } + + for (const allowForm of ["relative", "absolute"] as const) { + it.instance(`later ${allowForm} allow cannot override the other path form's deny`, () => Effect.gen(function* () { + const instance = yield* TestInstance + const context = yield* InstanceState.context + const visible = path.join(instance.directory, "restricted", "visible.txt") + const hidden = path.join(instance.directory, "restricted", "hidden.txt") + yield* Effect.promise(() => Promise.all([ + Bun.write(visible, "needle restored"), + Bun.write(hidden, "needle hidden"), + ])) + const absoluteDeny = path.join(instance.directory, "restricted", "**") + const denied = allowForm === "relative" ? absoluteDeny : path.relative(context.worktree, absoluteDeny) + const allowed = allowForm === "relative" ? path.relative(context.worktree, visible) : visible + const permissions = Permission.fromConfig({ + "*": "allow", + read: { "*": "allow", [denied]: "deny", [allowed]: "allow" }, + }) + const requests: PermissionV1.Request["patterns"][] = [] + const ctx = { + sessionID: SessionID.make("ses_test"), messageID: MessageID.make("msg_test"), + agent: "build", abort: AbortSignal.any([]), messages: [], permissions, + metadata: () => Effect.void, + ask: (req: Omit) => Effect.sync(() => { + if (req.permission !== "read") return + expect(req.always).toEqual(req.patterns) + requests.push(req.patterns) + for (const pattern of req.patterns) { + expect(Permission.evaluate("read", pattern, permissions).action).toBe("allow") + } + }), + } + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute({ pattern: name === "grep" ? "needle" : "**/*.txt", path: instance.directory }, ctx) + + expect(result.output).not.toContain(name === "list" ? "visible.txt" : visible) + expect(result.output).not.toContain(name === "list" ? "hidden.txt" : hidden) + expect(result.output).not.toContain("needle hidden") + expect(requests).toEqual([]) + })) + } + }) +} +// altimate_change end diff --git a/packages/opencode/test/tool/search-symlink-permissions.test.ts b/packages/opencode/test/tool/search-symlink-permissions.test.ts new file mode 100644 index 0000000000..fb03b19a18 --- /dev/null +++ b/packages/opencode/test/tool/search-symlink-permissions.test.ts @@ -0,0 +1,192 @@ +// altimate_change start — canonical read rules for symlinked search results +import { expect, spyOn, test } from "bun:test" +import { symlinkSync, unlinkSync } from "fs" +import fs from "fs/promises" +import path from "path" +import { Effect, Layer } from "effect" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { Ripgrep } from "@opencode-ai/core/ripgrep" +import { PermissionV1 } from "@opencode-ai/core/v1/permission" +import { Agent } from "@/agent/agent" +import { readableSearchResults } from "@/altimate/search-read-permissions" +import { Git } from "@/git" +import { Permission } from "@/permission" +import { MessageID, SessionID } from "@/session/schema" +import { GlobTool } from "@/tool/glob" +import { GrepTool } from "@/tool/grep" +import { ListTool } from "@/tool/ls" +import { Truncate } from "@/tool/truncate" +import { TestInstance, tmpdir, tmpdirScoped } from "../fixture/fixture" +import { testEffect } from "../lib/effect" + +const it = testEffect( + Layer.mergeAll( + CrossSpawnSpawner.defaultLayer, + FSUtil.defaultLayer, + Ripgrep.defaultLayer, + Truncate.defaultLayer, + Agent.defaultLayer, + Git.defaultLayer, + ), +) + +const isRoot = process.getuid?.() === 0 +if (isRoot) console.warn("Skipping directory-permission test: root bypasses 0o400 restrictions.") + +test.skipIf(process.platform === "win32" || isRoot)( + "unrelated absolute rules do not require resolving allowed search paths", + async () => { + await using project = await tmpdir() + const directory = path.join(project.path, "restricted") + const file = path.join(directory, "visible.txt") + await Bun.write(file, "needle public") + await fs.chmod(directory, 0o400) + try { + const permissions = Permission.fromConfig({ read: "allow", edit: { "/unrelated/**": "deny" } }) + expect(readableSearchResults([file], project.path, permissions)).toEqual({ + allowed: new Set([file]), + patterns: [], + }) + } finally { + await fs.chmod(directory, 0o700) + } + }, +) + +for (const action of ["deny", "ask"] as const) { + for (const kind of ["directory", "file"] as const) { + test(`absolute read ${action} resolves ${kind} symlink targets and preserves lexical rules`, async () => { + await using project = await tmpdir() + await using external = await tmpdir() + const target = path.join(external.path, "private.txt") + const link = path.join(project.path, "link") + const file = kind === "directory" ? path.join(link, "private.txt") : link + await Bun.write(target, "needle secret") + await fs.symlink(kind === "directory" ? external.path : target, link, kind === "directory" ? "junction" : "file") + + for (const permission of ["read", "*", "r*"]) { + const canonicalRules = [ + { permission: "read", pattern: "*", action: "allow" as const }, + { permission, pattern: target, action }, + ] + expect(readableSearchResults([file], project.path, canonicalRules)).toEqual({ + allowed: new Set(action === "deny" ? [] : [file]), + patterns: action === "ask" ? [target] : [], + }) + } + + for (const pattern of [file, path.relative(project.path, file)]) { + const lexicalRules = Permission.fromConfig({ read: { "*": "allow", [pattern]: action, [target]: "allow" } }) + expect(readableSearchResults([file], project.path, lexicalRules)).toEqual({ + allowed: new Set(action === "deny" ? [] : [file]), + patterns: action === "ask" ? [pattern] : [], + }) + } + }) + } + + for (const name of ["grep", "glob", "list"] as const) { + it.instance(`${name} applies absolute read ${action} after allowing an external symlink root`, () => + Effect.gen(function* () { + const instance = yield* TestInstance + const external = yield* tmpdirScoped() + const target = path.join(external, "private.txt") + const link = path.join(instance.directory, "link") + yield* Effect.promise(async () => { + await Bun.write(target, "needle secret") + await Bun.write(path.join(external, "public.txt"), "needle public") + await fs.symlink(external, link, "junction") + }) + const requests: PermissionV1.Request["patterns"][] = [] + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const result = yield* tool.execute( + { pattern: name === "grep" ? "needle" : "*.txt", path: link }, + { + sessionID: SessionID.make("ses_test"), + messageID: MessageID.make("msg_test"), + agent: "build", + abort: AbortSignal.any([]), + messages: [], + permissions: Permission.fromConfig({ "*": "allow", read: { "*": "allow", [target]: action } }), + metadata: () => Effect.void, + ask: (req) => + Effect.sync(() => { + if (req.permission === "read") { + expect(req.always).toEqual(req.patterns) + requests.push(req.patterns) + } + }), + }, + ) + expect(result.output).toContain("public.txt") + expect(result.metadata.truncated).toBe(false) + if (action === "deny") { + expect(result.output).not.toContain("private.txt") + expect(result.output).not.toContain("secret") + expect(requests).toEqual([]) + } else { + expect(result.output).toContain("private.txt") + expect(requests).toEqual([[target]]) + } + }), + ) + } +} +for (const name of ["grep", "glob", "list"] as const) { + it.instance(`${name} omits a candidate that becomes a symlink loop and returns ordinary files`, () => + Effect.gen(function* () { + const instance = yield* TestInstance + const bad = path.join(instance.directory, "loop.txt") + yield* Effect.promise(async () => { + await Bun.write(path.join(instance.directory, "first.txt"), "needle first") + await Bun.write(bad, "needle unavailable") + await Bun.write(path.join(instance.directory, "last.txt"), "needle last") + }) + const info = name === "grep" ? yield* GrepTool : name === "glob" ? yield* GlobTool : yield* ListTool + const tool = yield* info.init() + const resolve = FSUtil.resolve + let raced = false + yield* Effect.acquireRelease( + Effect.sync(() => + spyOn(FSUtil, "resolve").mockImplementation((file) => { + if (file === bad && !raced) { + // Change the discovered file before canonicalisation, as a filesystem race can. + unlinkSync(bad) + symlinkSync(bad, bad, "file") + raced = true + } + return resolve(file) + }), + ), + (spy) => Effect.sync(() => spy.mockRestore()), + ) + const requests: PermissionV1.Request["patterns"][] = [] + const result = yield* tool.execute( + { pattern: name === "grep" ? "needle" : "*.txt", path: instance.directory }, + { + sessionID: SessionID.make("ses_test"), + messageID: MessageID.make("msg_test"), + agent: "build", + abort: AbortSignal.any([]), + messages: [], + permissions: Permission.fromConfig({ "*": "allow", read: { "*": "allow", [bad]: "ask" } }), + metadata: () => Effect.void, + ask: (req) => + Effect.sync(() => { + if (req.permission === "read") requests.push(req.patterns) + }), + }, + ) + expect(raced).toBe(true) + expect(result.output).toContain("first.txt") + expect(result.output).toContain("last.txt") + expect(result.output).not.toContain("loop.txt") + expect(result.output).not.toContain("unavailable") + expect(result.metadata.truncated).toBe(false) + expect(requests).toEqual([]) + }), + ) +} +// altimate_change end diff --git a/packages/opencode/test/tool/task-query-budget.test.ts b/packages/opencode/test/tool/task-query-budget.test.ts new file mode 100644 index 0000000000..0000df5cb3 --- /dev/null +++ b/packages/opencode/test/tool/task-query-budget.test.ts @@ -0,0 +1,62 @@ +import { expect, spyOn, test } from "bun:test" +import { Effect } from "effect" +import { Agent } from "../../src/agent/agent" +import { Config } from "../../src/config/config" +import { Session } from "../../src/session" +import { MessageV2 } from "../../src/session/message-v2" +import { MessageID, SessionID } from "../../src/session/schema" +import { RunBudget } from "../../src/altimate/run-budget" +import { TaskTool, type TaskPromptOps } from "../../src/tool/task" +import { initTool } from "../altimate/tool-fixture" + +for (const fails of [false, true]) { + test(`task inherits the parent query cutoff and releases it after ${fails ? "failure" : "completion"}`, async () => { + const parentID = SessionID.make("ses_query_parent") + const childID = SessionID.make("ses_query_child") + const messageID = MessageID.make("msg_query_parent") + const agent = { name: "general", mode: "subagent", permission: [], options: {} } as unknown as Agent.Info + const list = spyOn(Agent, "list").mockResolvedValue([agent]) + const getAgent = spyOn(Agent, "get").mockResolvedValue(agent) + const config = spyOn(Config, "get").mockResolvedValue({}) + const getSession = spyOn(Session, "get").mockImplementation(Object.assign(async (id: SessionID) => ({ + id, + permission: [], + ...(id === childID ? { parentID, metadata: { taskAgent: "general" } } : {}), + }) as never, Session.get)) + const getMessage = spyOn(MessageV2, "get").mockResolvedValue({ + info: { role: "assistant", parentID: messageID, modelID: "test", providerID: "test" }, + parts: [], + } as never) + const release = RunBudget.registerQueryDeadline(parentID, 10_000) + const promptOps: TaskPromptOps = { + cancel: () => Effect.void, + resolvePromptParts: (text) => Effect.succeed([{ type: "text", text }]), + prompt: (input) => Effect.sync(() => { + expect(input.sessionID).toBe(childID) + expect(RunBudget.queryDeadline(childID)).toBe(10_000) + if (fails) throw new Error("Child stopped") + return { info: {}, parts: [{ type: "text", text: "Child answer" }] } as MessageV2.WithParts + }), + } + try { + const tool = await initTool(TaskTool) + const result = tool.execute({ + description: "Inspect records", prompt: "Summarize the records", subagent_type: "general", task_id: childID, + }, { + sessionID: parentID, messageID, agent: "build", abort: new AbortController().signal, + messages: [], extra: { promptOps, bypassAgentCheck: true }, + }) + if (fails) await expect(result).rejects.toThrow("Child stopped") + else expect((await result).output).toContain("Child answer") + expect(RunBudget.queryDeadline(childID)).toBeUndefined() + expect(RunBudget.queryDeadline(parentID)).toBe(10_000) + } finally { + release() + getMessage.mockRestore() + getSession.mockRestore() + config.mockRestore() + getAgent.mockRestore() + list.mockRestore() + } + }) +} diff --git a/packages/opencode/test/tool/task.test.ts b/packages/opencode/test/tool/task.test.ts index 66eafda0c6..e682febd21 100644 --- a/packages/opencode/test/tool/task.test.ts +++ b/packages/opencode/test/tool/task.test.ts @@ -15,6 +15,7 @@ import type { MessageV2 } from "../../src/session/message-v2" import { MessageID, PartID, SessionID } from "../../src/session/schema" import { SessionRunState } from "@/session/run-state" import { SessionStatus } from "@/session/status" +import { interruptedTaskOutput } from "@/session/task-output" import { TaskTool, type TaskPromptOps } from "../../src/tool/task" import { Truncate } from "@/tool/truncate" @@ -401,6 +402,78 @@ describe("tool.task", () => { }), ) + it.instance("task_id only resumes a child of the calling session", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const { chat, assistant } = yield* seed() + // A session that is NOT a child of `chat` and carries a blanket allow that would widen a child. + const foreign = yield* sessions.create({ + title: "foreign", + permission: [{ permission: "*", pattern: "*", action: "allow" }], + }) + const own = yield* sessions.create({ + parentID: chat.id, + title: "own child", + metadata: { taskAgent: "data-explorer" }, + }) + const tool = yield* TaskTool + const def = yield* tool.init() + const promptOps = stubOps() + const run = (taskId: string) => + def.execute( + { description: "explore", prompt: "count rows", subagent_type: "data-explorer", task_id: taskId }, + { + sessionID: chat.id, + messageID: assistant.id, + agent: "analyst", + abort: new AbortController().signal, + extra: { promptOps }, + messages: [], + metadata: () => Effect.void, + ask: () => Effect.void, + }, + ) + + const foreignResult = yield* run(foreign.id) + expect(foreignResult.metadata.sessionId).not.toBe(foreign.id) + const created = yield* sessions.get(foreignResult.metadata.sessionId) + expect(created.parentID).toBe(chat.id) + expect(created.permission ?? []).not.toContainEqual({ permission: "*", pattern: "*", action: "allow" }) + + const ownResult = yield* run(own.id) + expect(ownResult.metadata.sessionId).toBe(own.id) + }), + ) + + // altimate_change start — task resumptions retain the original subagent identity. + it.instance("task_id cannot resume a sibling created for a different subagent", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const { chat, assistant } = yield* seed() + const sibling = yield* sessions.create({ parentID: chat.id, metadata: { taskAgent: "general" } }) + const tool = yield* TaskTool + const def = yield* tool.init() + const result = yield* def.execute( + { description: "explore", prompt: "count rows", subagent_type: "data-explorer", task_id: sibling.id }, + { + sessionID: chat.id, + messageID: assistant.id, + agent: "analyst", + abort: new AbortController().signal, + extra: { promptOps: stubOps() }, + messages: [], + metadata: () => Effect.void, + ask: () => Effect.void, + }, + ) + expect(result.metadata.sessionId).not.toBe(sibling.id) + const created = yield* sessions.get(result.metadata.sessionId) + expect(created.metadata?.taskAgent).toBe("data-explorer") + expect(created.permission).toContainEqual({ permission: "task", pattern: "*", action: "deny" }) + }), + ) + // altimate_change end + it.instance( "execute inherits parent external-directory rules and preserves child denies", () => @@ -519,6 +592,170 @@ describe("tool.task", () => { }), ) + for (const rejects of [true, false]) { + it.instance(`returns partial child findings when an aborted prompt ${rejects ? "rejects" : "returns empty text"}`, () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const { chat, assistant } = yield* seed() + const tool = yield* TaskTool + const def = yield* tool.init() + const controller = new AbortController() + const ready = yield* Deferred.make() + const cancelled = yield* Deferred.make() + const promptOps: TaskPromptOps = { + ...stubOps(), + cancel: () => Deferred.succeed(cancelled, undefined).pipe(Effect.asVoid), + prompt: (input) => + Effect.gen(function* () { + const message = { + ...assistant, + id: MessageID.ascending(), + sessionID: input.sessionID, + parentID: input.messageID!, + } + yield* sessions.updateMessage(message) + yield* sessions.updatePart({ + id: PartID.ascending(), + messageID: message.id, + sessionID: input.sessionID, + type: "text", + text: "The archive contains three matching records.", + }) + yield* sessions.updateMessage({ ...message, id: MessageID.ascending() }) + yield* Deferred.succeed(ready, undefined) + yield* Deferred.await(cancelled) + if (rejects) return yield* Effect.die(new DOMException("Task cancelled", "AbortError")) + return reply(input, "") + }), + } + + const fiber = yield* def + .execute( + { description: "inspect archive", prompt: "count matching records", subagent_type: "general" }, + { + sessionID: chat.id, + messageID: assistant.id, + agent: "build", + abort: controller.signal, + extra: { promptOps }, + messages: [], + metadata: () => Effect.void, + ask: () => Effect.void, + }, + ) + .pipe(Effect.forkChild) + + yield* Deferred.await(ready).pipe(Effect.timeout("2 seconds")) + controller.abort() + const result = yield* Fiber.join(fiber).pipe(Effect.timeout("2 seconds")) + expect(result.output).toContain("The archive contains three matching records.") + expect(result.output).toContain("interrupted") + expect(result.metadata.interrupted).toBe(true) + }), + ) + } + + it.instance("partial task recovery excludes findings from an earlier prompt", () => + Effect.gen(function* () { + const sessions = yield* Session.Service + const { chat, assistant } = yield* seed() + yield* sessions.updatePart({ + id: PartID.ascending(), + messageID: assistant.id, + sessionID: chat.id, + type: "text", + text: "Earlier request findings.", + }) + const nextUserID = MessageID.ascending() + expect(yield* Effect.promise(() => interruptedTaskOutput(chat.id, nextUserID))).toBeUndefined() + yield* sessions.updateMessage({ + id: nextUserID, + role: "user", + sessionID: chat.id, + agent: "build", + model: coreRef, + time: { created: Date.now() }, + }) + yield* sessions.updateMessage({ ...assistant, id: MessageID.ascending(), parentID: nextUserID }) + expect(yield* Effect.promise(() => interruptedTaskOutput(chat.id))).toBeUndefined() + }), + ) + + it.instance("publishes the child session and prompt identity for interruption recovery", () => + Effect.gen(function* () { + const { chat, assistant } = yield* seed() + const tool = yield* TaskTool + const def = yield* tool.init() + const published = yield* Deferred.make>() + let promptInput: SessionPrompt.PromptInput | undefined + let metadataPublished = false + const result = yield* def.execute( + { description: "inspect archive", prompt: "count matching records", subagent_type: "general" }, + { + sessionID: chat.id, + messageID: assistant.id, + agent: "build", + abort: new AbortController().signal, + extra: { + promptOps: stubOps({ + onPrompt: (input) => { + expect(metadataPublished).toBe(true) + promptInput = input + }, + }), + }, + messages: [], + metadata: (input) => + Effect.gen(function* () { + if (!input.metadata) throw new Error("Child task metadata was not published") + // Simulate asynchronous metadata persistence before the child produces output. + yield* Effect.sleep("20 millis") + metadataPublished = true + yield* Deferred.succeed(published, input.metadata) + }), + ask: () => Effect.void, + }, + ) + const metadata = yield* Deferred.await(published).pipe(Effect.timeout("2 seconds")) + if (!promptInput?.messageID) throw new Error("Child prompt was not started") + expect(metadata.sessionId).toBe(result.metadata.sessionId) + expect(metadata.messageID).toBe(promptInput.messageID) + }), + ) + + it.instance("does not start a child prompt cancelled during metadata publication", () => + Effect.gen(function* () { + const { chat, assistant } = yield* seed() + const tool = yield* TaskTool + const def = yield* tool.init() + const controller = new AbortController() + let started = false + const result = yield* def + .execute( + { description: "inspect archive", prompt: "count matching records", subagent_type: "general" }, + { + sessionID: chat.id, + messageID: assistant.id, + agent: "build", + abort: controller.signal, + extra: { + promptOps: stubOps({ + onPrompt: () => { + started = true + }, + }), + }, + messages: [], + metadata: () => Effect.sync(() => controller.abort()), + ask: () => Effect.void, + }, + ) + .pipe(Effect.exit) + expect(Exit.isFailure(result)).toBe(true) + expect(started).toBe(false) + }), + ) + // BUG: blocked by the storage-layer DB split-brain (see note above). it.instance.skip("promotes a running foreground task without restarting it", () => Effect.gen(function* () { diff --git a/packages/opencode/test/tool/truncation.test.ts b/packages/opencode/test/tool/truncation.test.ts index 497f5b3bb5..617aa1b582 100644 --- a/packages/opencode/test/tool/truncation.test.ts +++ b/packages/opencode/test/tool/truncation.test.ts @@ -4,6 +4,8 @@ import { NodeFileSystem } from "@effect/platform-node" import { FSUtil } from "@opencode-ai/core/fs-util" import { Effect, FileSystem, Layer } from "effect" import { Truncate } from "@/tool/truncate" +import { Truncate as LegacyTruncate } from "@/tool/truncation" +import { Agent } from "@/agent/agent" import { Config } from "@/config/config" import { Identifier } from "../../src/id/id" import { Process } from "@/util/process" @@ -246,7 +248,7 @@ describe("Truncate", () => { }), ) - it.live("suggests Task tool when agent has task permission", () => + it.instance("suggests Task tool when agent has task permission", () => Effect.gen(function* () { const svc = yield* Truncate.Service const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n") @@ -259,7 +261,7 @@ describe("Truncate", () => { }), ) - it.live("omits Task tool hint when agent lacks task permission", () => + it.instance("omits Task tool hint when agent lacks task permission", () => Effect.gen(function* () { const svc = yield* Truncate.Service const lines = Array.from({ length: 100 }, (_, i) => `line${i}`).join("\n") @@ -293,6 +295,90 @@ describe("Truncate", () => { }, 20000) }) + describe("delegation hints", () => { + const agentIt = testEffect(Layer.mergeAll(Truncate.defaultLayer, Agent.defaultLayer)) + const content = "first\nsecond" + const options = { maxLines: 1, direction: "head" as const } + const outputs = (agent: Agent.Info) => + Effect.gen(function* () { + const result = yield* (yield* Truncate.Service).output(content, options, agent) + const legacy = yield* Effect.promise(() => LegacyTruncate.output(content, options, agent)) + return [result, legacy] + }) + + agentIt.instance("analyst delegates only to data-explorer in both truncators", () => + Effect.gen(function* () { + const analyst = yield* Agent.use.get("analyst") + for (const result of yield* outputs(analyst)) { + expect(result.truncated).toBe(true) + expect(result.content).toContain("Use the Task tool to have data-explorer agent process this file") + expect(result.content).not.toContain("have explore agent") + } + }), + ) + + agentIt.instance("data-explorer keeps read advice without delegation in both truncators", () => + Effect.gen(function* () { + const agent = yield* Agent.use.get("data-explorer") + for (const result of yield* outputs(agent)) { + expect(result.truncated).toBe(true) + expect(result.content).not.toContain("Task tool") + expect(result.content).toContain( + "Use Grep to search the full content or Read with offset/limit to view specific sections.", + ) + } + }), + ) + + for (const name of ["build", "general"]) { + agentIt.instance(`${name} retains its exact explore delegation hint in both truncators`, () => + Effect.gen(function* () { + const agent = yield* Agent.use.get(name) + for (const result of yield* outputs(agent)) { + expect(result.truncated).toBe(true) + if (!result.truncated) throw new Error("expected truncated") + expect(result.content).toBe( + `first\n\n...1 lines truncated...\n\nThe tool call succeeded but the output was truncated. Full output saved to: ${result.outputPath}\nUse the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.`, + ) + } + }), + ) + } + + agentIt.instance("named and wildcard rules choose the first reachable subagent", () => + Effect.gen(function* () { + const agent: Agent.Info = { + ...(yield* Agent.use.get("build")), + permission: [ + { permission: "task", pattern: "*", action: "deny" }, + { permission: "task", pattern: "general", action: "allow" }, + { permission: "task", pattern: "data-*", action: "allow" }, + { permission: "task", pattern: "build*", action: "allow" }, + ], + } + for (const result of yield* outputs(agent)) { + expect(result.content).toContain("have data-explorer agent") + } + }), + ) + + agentIt.instance("an allow rule naming an unavailable child does not suggest delegation", () => + Effect.gen(function* () { + const agent: Agent.Info = { + ...(yield* Agent.use.get("build")), + permission: [ + { permission: "task", pattern: "*", action: "deny" }, + { permission: "task", pattern: "missing-agent", action: "allow" }, + ], + } + for (const result of yield* outputs(agent)) { + expect(result.content).not.toContain("Task tool") + expect(result.content).toContain("Read with offset/limit") + } + }), + ) + }) + describe("cleanup", () => { const DAY_MS = 24 * 60 * 60 * 1000 diff --git a/packages/opencode/test/upstream/bridge-merge-e2e.test.ts b/packages/opencode/test/upstream/bridge-merge-e2e.test.ts index 6cc3b51e25..e31ef7b340 100644 --- a/packages/opencode/test/upstream/bridge-merge-e2e.test.ts +++ b/packages/opencode/test/upstream/bridge-merge-e2e.test.ts @@ -692,8 +692,12 @@ describe("E2E: SessionStatus.set async drift fixed (cycle 4)", () => { const content = readFileSync(path.join(srcDir, "session", "prompt.ts"), "utf-8") const cancel = content.match(/export async function cancel\(sessionID:[\s\S]*?^ \}/m)?.[0] expect(cancel).toBeDefined() - expect(cancel!.indexOf("match.closing = true")).toBeGreaterThan(-1) - expect(cancel!.indexOf("match.closing = true")).toBeLessThan(cancel!.indexOf("match.abort.abort()")) + const closingIdx = cancel!.indexOf("match.closing = true") + // Cancellation now forwards the optional harness deadline reason. + const abortIdx = cancel!.indexOf("match.abort.abort(reason)") + expect(closingIdx).toBeGreaterThan(-1) + expect(abortIdx).toBeGreaterThan(-1) + expect(closingIdx).toBeLessThan(abortIdx) }) test("SessionPrompt.loop scopes fallback idle restoration to its own generation", async () => { diff --git a/scripts/analyst-smoke.sh b/scripts/analyst-smoke.sh new file mode 100755 index 0000000000..c9406bc762 --- /dev/null +++ b/scripts/analyst-smoke.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +# Run the source-tree analyst smoke suite once. Artifacts are kept for inspection. +# Reassert saved artifacts without LLM calls: ANALYST_SMOKE_REPLAY=/path/to/run ./scripts/analyst-smoke.sh +set -uo pipefail + +script_dir="$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" || exit 1 +worktree_root="$(dirname -- "$script_dir")" + +for argument in "$@"; do + case "$argument" in + --rerun-each|--rerun-each=*|--retry|--retry=*|--watch|--watch=*|--hot|--hot=*|-w) + printf 'FAIL | runner | Repeated model execution is not allowed: %s\n' "$argument" >&2 + exit 1 + ;; + esac +done + +# Capture this before bun test's preload replaces HOME/XDG. Never print its contents. +export ANALYST_SMOKE_AUTH_FILE="${ANALYST_SMOKE_AUTH_FILE:-${XDG_DATA_HOME:-$HOME/.local/share}/altimate-code/auth.json}" +if [[ "$ANALYST_SMOKE_AUTH_FILE" != /* ]]; then + export ANALYST_SMOKE_AUTH_FILE="$PWD/$ANALYST_SMOKE_AUTH_FILE" +fi +export ANALYST_SMOKE_RUN=1 +export ALTIMATE_TELEMETRY_DISABLED=true +export OPENCODE_PURE=1 + +if [[ -n "${ANALYST_SMOKE_REPLAY:-}" ]]; then + export ANALYST_SMOKE_ARTIFACTS="$ANALYST_SMOKE_REPLAY" + if [[ ! -d "$ANALYST_SMOKE_ARTIFACTS" ]]; then + printf 'FAIL | runner | Replay directory does not exist: %s\n' "$ANALYST_SMOKE_ARTIFACTS" >&2 + exit 1 + fi +else + if [[ -z "${ANALYST_SMOKE_ARTIFACTS:-}" ]]; then + ANALYST_SMOKE_ARTIFACTS="$(mktemp -d "${TMPDIR:-/tmp}/analyst-smoke.XXXXXX")" || exit 1 + fi + mkdir -p -- "$ANALYST_SMOKE_ARTIFACTS" || exit 1 +fi +ANALYST_SMOKE_ARTIFACTS="$(CDPATH= cd -- "$ANALYST_SMOKE_ARTIFACTS" && pwd)" || exit 1 +export ANALYST_SMOKE_ARTIFACTS +if [[ -n "${ANALYST_SMOKE_REPLAY:-}" ]]; then + export ANALYST_SMOKE_REPLAY="$ANALYST_SMOKE_ARTIFACTS" +fi +export ANALYST_SMOKE_RESULTS="$ANALYST_SMOKE_ARTIFACTS/results.json" +if [[ -e "$ANALYST_SMOKE_RESULTS" ]]; then + cp -- "$ANALYST_SMOKE_RESULTS" "$ANALYST_SMOKE_ARTIFACTS/results.previous.json" || exit 1 +fi +printf '[]\n' > "$ANALYST_SMOKE_RESULTS" || exit 1 + +cd -- "$worktree_root/packages/opencode" || exit 1 +bun test --config=./test/e2e-smoke/bunfig.toml test/e2e-smoke/analyst-smoke.test.ts --timeout 360000 "$@" +test_status=$? + +# Print the table even when tests fail. Missing/empty results must never look green. +bun -e ' + import { readFileSync } from "node:fs"; + const oneLine = (value) => String(value ?? "").replace(/\s+/g, " ").trim(); + try { + const rows = JSON.parse(readFileSync(process.env.ANALYST_SMOKE_RESULTS, "utf8")); + if (!Array.isArray(rows) || rows.length === 0) throw new Error("No scenario results were recorded"); + console.log("STATUS | SCENARIO | DETAIL"); + let failed = false; + for (const row of rows) { + if (!row || !["PASS", "FAIL", "SKIP"].includes(row.status) || !row.id || !row.name) { + throw new Error("Invalid scenario result in results.json"); + } + console.log(`${row.status} | ${oneLine(row.id)} ${oneLine(row.name)} | ${oneLine(row.reason)}`); + failed ||= row.status === "FAIL"; + } + if (failed) process.exitCode = 1; + } catch (error) { + console.error(`FAIL | runner | ${oneLine(error.message)}`); + process.exitCode = 1; + } +' +summary_status=$? +printf 'Artifacts: %s\n' "$ANALYST_SMOKE_ARTIFACTS" +if (( test_status != 0 || summary_status != 0 )); then + exit 1 +fi